Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Side by Side Diff: pkg/compiler/lib/src/elements/elements.dart

Issue 1414913002: Introduce .isMalformed (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library elements; 5 library elements;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/resolution.dart' show 8 import '../common/resolution.dart' show
9 Resolution; 9 Resolution;
10 import '../compiler.dart' show 10 import '../compiler.dart' show
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 static const ElementKind INITIALIZING_FORMAL = 79 static const ElementKind INITIALIZING_FORMAL =
80 const ElementKind('initializing_formal', ElementCategory.VARIABLE); 80 const ElementKind('initializing_formal', ElementCategory.VARIABLE);
81 static const ElementKind FUNCTION = 81 static const ElementKind FUNCTION =
82 const ElementKind('function', ElementCategory.FUNCTION); 82 const ElementKind('function', ElementCategory.FUNCTION);
83 static const ElementKind CLASS = 83 static const ElementKind CLASS =
84 const ElementKind('class', ElementCategory.CLASS); 84 const ElementKind('class', ElementCategory.CLASS);
85 static const ElementKind GENERATIVE_CONSTRUCTOR = 85 static const ElementKind GENERATIVE_CONSTRUCTOR =
86 const ElementKind('generative_constructor', ElementCategory.FACTORY); 86 const ElementKind('generative_constructor', ElementCategory.FACTORY);
87 static const ElementKind FIELD = 87 static const ElementKind FIELD =
88 const ElementKind('field', ElementCategory.VARIABLE); 88 const ElementKind('field', ElementCategory.VARIABLE);
89 static const ElementKind FIELD_LIST =
90 const ElementKind('field_list', ElementCategory.NONE);
Johnni Winther 2015/10/21 07:51:56 Nice!
sigurdm 2015/10/22 07:33:14 Acknowledged.
91 static const ElementKind GENERATIVE_CONSTRUCTOR_BODY = 89 static const ElementKind GENERATIVE_CONSTRUCTOR_BODY =
92 const ElementKind('generative_constructor_body', ElementCategory.NONE); 90 const ElementKind('generative_constructor_body', ElementCategory.NONE);
93 static const ElementKind COMPILATION_UNIT = 91 static const ElementKind COMPILATION_UNIT =
94 const ElementKind('compilation_unit', ElementCategory.NONE); 92 const ElementKind('compilation_unit', ElementCategory.NONE);
95 static const ElementKind GETTER = 93 static const ElementKind GETTER =
96 const ElementKind('getter', ElementCategory.NONE); 94 const ElementKind('getter', ElementCategory.NONE);
97 static const ElementKind SETTER = 95 static const ElementKind SETTER =
98 const ElementKind('setter', ElementCategory.NONE); 96 const ElementKind('setter', ElementCategory.NONE);
99 static const ElementKind TYPE_VARIABLE = 97 static const ElementKind TYPE_VARIABLE =
100 const ElementKind('type_variable', ElementCategory.TYPE_VARIABLE); 98 const ElementKind('type_variable', ElementCategory.TYPE_VARIABLE);
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 /// 263 ///
266 /// This property is `false` if this element is an initializing formal. 264 /// This property is `false` if this element is an initializing formal.
267 /// See [isInitializingFormal]. 265 /// See [isInitializingFormal].
268 bool get isParameter; 266 bool get isParameter;
269 267
270 /// `true` if this element is an initializing formal of constructor, that 268 /// `true` if this element is an initializing formal of constructor, that
271 /// is a formal of the form `this.foo`. 269 /// is a formal of the form `this.foo`.
272 bool get isInitializingFormal; 270 bool get isInitializingFormal;
273 271
274 /// `true` if this element represents a resolution error. 272 /// `true` if this element represents a resolution error.
275 bool get isErroneous; 273 bool get isError;
276 274
277 /// `true` if this element represents an ambiguous name. 275 /// `true` if this element represents an ambiguous name.
278 /// 276 ///
279 /// Ambiguous names occur when two imports/exports contain different entities 277 /// Ambiguous names occur when two imports/exports contain different entities
280 /// by the same name. If an ambiguous name is resolved an warning or error 278 /// by the same name. If an ambiguous name is resolved an warning or error
281 /// is produced. 279 /// is produced.
282 bool get isAmbiguous; 280 bool get isAmbiguous;
283 281
282 /// True if there has been errors during resolution or parsing of this
283 /// element.
284 bool get isMalformed;
285
284 /// `true` if this element represents an entity whose access causes one or 286 /// `true` if this element represents an entity whose access causes one or
285 /// more warnings. 287 /// more warnings.
286 bool get isWarnOnUse; 288 bool get isWarnOnUse;
287 289
288 bool get isClosure; 290 bool get isClosure;
289 291
290 /// `true` if the element is a (static or instance) member of a class. 292 /// `true` if the element is a (static or instance) member of a class.
291 /// 293 ///
292 /// Members are constructors, methods and fields. 294 /// Members are constructors, methods and fields.
293 bool get isClassMember; 295 bool get isClassMember;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 AnalyzableElement get analyzableElement; 417 AnalyzableElement get analyzableElement;
416 418
417 accept(ElementVisitor visitor, arg); 419 accept(ElementVisitor visitor, arg);
418 420
419 void setJsInteropName(String name); 421 void setJsInteropName(String name);
420 void markAsJsInterop(); 422 void markAsJsInterop();
421 } 423 }
422 424
423 class Elements { 425 class Elements {
424 static bool isUnresolved(Element e) { 426 static bool isUnresolved(Element e) {
425 return e == null || e.isErroneous; 427 return e == null || e.isMalformed;
426 } 428 }
427 static bool isErroneous(Element e) => e != null && e.isErroneous; 429
430 static bool isMalformed(Element e) {
431 return e != null && e.isMalformed;
432 }
428 433
429 /// Unwraps [element] reporting any warnings attached to it, if any. 434 /// Unwraps [element] reporting any warnings attached to it, if any.
430 static Element unwrap(Element element, 435 static Element unwrap(Element element,
431 DiagnosticReporter listener, 436 DiagnosticReporter listener,
432 Spannable spannable) { 437 Spannable spannable) {
433 if (element != null && element.isWarnOnUse) { 438 if (element != null && element.isWarnOnUse) {
434 WarnOnUseElement wrappedElement = element; 439 WarnOnUseElement wrappedElement = element;
435 element = wrappedElement.unwrap(listener, spannable); 440 element = wrappedElement.unwrap(listener, spannable);
436 } 441 }
437 return element; 442 return element;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 } 784 }
780 } 785 }
781 786
782 /// An element representing an erroneous resolution. 787 /// An element representing an erroneous resolution.
783 /// 788 ///
784 /// An [ErroneousElement] is used instead of `null` to provide additional 789 /// An [ErroneousElement] is used instead of `null` to provide additional
785 /// information about the error that caused the element to be unresolvable 790 /// information about the error that caused the element to be unresolvable
786 /// or otherwise invalid. 791 /// or otherwise invalid.
787 /// 792 ///
788 /// Accessing any field or calling any method defined on [ErroneousElement] 793 /// Accessing any field or calling any method defined on [ErroneousElement]
789 /// except [isErroneous] will currently throw an exception. (This might 794 /// except [isError] will currently throw an exception. (This might
790 /// change when we actually want more information on the erroneous element, 795 /// change when we actually want more information on the erroneous element,
791 /// e.g., the name of the element we were trying to resolve.) 796 /// e.g., the name of the element we were trying to resolve.)
792 /// 797 ///
793 /// Code that cannot not handle an [ErroneousElement] should use 798 /// Code that cannot not handle an [ErroneousElement] should use
794 /// `Element.isUnresolved(element)` to check for unresolvable elements instead 799 /// `Element.isUnresolved(element)` to check for unresolvable elements instead
795 /// of `element == null`. 800 /// of `element == null`.
796 abstract class ErroneousElement extends Element implements ConstructorElement { 801 abstract class ErroneousElement extends Element implements ConstructorElement {
797 MessageKind get messageKind; 802 MessageKind get messageKind;
798 Map get messageArguments; 803 Map get messageArguments;
799 String get message; 804 String get message;
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after
1710 bool get isDeclaredByField; 1715 bool get isDeclaredByField;
1711 1716
1712 /// Returns `true` if this member is abstract. 1717 /// Returns `true` if this member is abstract.
1713 bool get isAbstract; 1718 bool get isAbstract;
1714 1719
1715 /// If abstract, [implementation] points to the overridden concrete member, 1720 /// If abstract, [implementation] points to the overridden concrete member,
1716 /// if any. Otherwise [implementation] points to the member itself. 1721 /// if any. Otherwise [implementation] points to the member itself.
1717 Member get implementation; 1722 Member get implementation;
1718 } 1723 }
1719 1724
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698