dart/element/element2 library
Defines the elements and fragments that are part of the element model.
The element model describes the semantic (as opposed to syntactic) structure of Dart code. The syntactic structure of the code is modeled by the AST structure.
The element model consists of three closely related kinds of objects: elements (instances of a subclass of Element2), fragments (instances of a subclass of Fragment) and types. This library defines the elements and fragments; the types are defined in type.dart.
Generally speaking, an element represents something that is declared in the code, such as a class, method, or variable. Elements are organized in a tree structure in which the children of an element are the elements that are logically (and often syntactically) part of the declaration of the parent. For example, the elements representing the methods and fields in a class are children of the element representing the class.
Some elements, such as a LocalVariableElement2 are declared by a single declaration, but most elements can be declared by multiple declarations. A fragment represents a single declararation when the corresponding element can have multiple declarations. There is no fragment for an element that can only have one declaration.
As with elements, fragments are organized in a tree structure. The two structures parallel each other.
Every complete element structure is rooted by an instance of the class LibraryElement2. A library element represents a single Dart library. Every library is defined by one or more compilation units (the library and all of its parts). The compilation units are represented by the class LibraryFragment.
The element model does not contain everything in the code, only those things that are declared by the code. For example, it does not include any representation of the statements in a method body, but if one of those statements declares a local variable then the local variable will be represented by an element.
Classes
- Annotatable
- An element or fragment that can have either annotations (metadata), a documentation comment, or both associated with it.
- BindPatternVariableElement2
- ClassElement2
- A class.
- ClassFragment
- The portion of a ClassElement2 contributed by a single declaration.
- ConstructorElement2
- An element representing a constructor defined by a class, enum, or extension type.
- ConstructorFragment
- The portion of a ConstructorElement2 contributed by a single declaration.
- DirectiveUri
- Meaning of a URI referenced in a directive.
- DirectiveUriWithLibrary
- DirectiveUriWithSource that references a LibraryElement.
- DirectiveUriWithRelativeUri
- DirectiveUriWithRelativeUriString that can be parsed into a relative URI.
- DirectiveUriWithRelativeUriString
- DirectiveUri for which we can get its relative URI string.
- DirectiveUriWithSource
- DirectiveUriWithRelativeUri that resolves to a Source.
- DirectiveUriWithUnit
- DirectiveUriWithSource that references a CompilationUnitElement.
- Element2
- The base class for all of the elements in the element model.
- ElementAnnotation
- A single annotation associated with an element.
- ElementKind
- The kind of elements in the element model.
- EnumElement2
- An element that represents an enum.
- EnumFragment
- The portion of an EnumElement2 contributed by a single declaration.
- ExecutableElement2
- An element representing an executable object, including functions, methods, constructors, getters, and setters.
- ExecutableFragment
- The portion of an ExecutableElement2 contributed by a single declaration.
- ExtensionElement2
- An extension.
- ExtensionFragment
- The portion of an ExtensionElement2 contributed by a single declaration.
- ExtensionTypeElement2
- An extension type.
- ExtensionTypeFragment
- The portion of an ExtensionTypeElement2 contributed by a single declaration.
- FieldElement2
- A field defined within a class, enum, extension, or mixin.
- FieldFormalParameterElement2
- A field formal parameter defined within a constructor element.
- FieldFormalParameterFragment
- The portion of a FieldFormalParameterElement2 contributed by a single declaration.
- FieldFragment
- The portion of a FieldElement2 contributed by a single declaration.
- FormalParameterElement
- A formal parameter defined by an executable element.
- FormalParameterFragment
- The portion of a FormalParameterElement contributed by a single declaration.
- Fragment
- A fragment that wholly or partially defines an element.
- FragmentedElement
- An element that can be defined by multiple fragments.
- FunctionTypedElement2
- An element that has a FunctionType as its type.
- FunctionTypedFragment
- The portion of a FunctionTypedElement2 contributed by a single declaration.
- GenericFunctionTypeElement2
- The pseudo-declaration that defines a generic function type.
- GenericFunctionTypeFragment
- The portion of a GenericFunctionTypeElement2 coming from a single declaration.
- GetterElement
- A getter.
- GetterFragment
- The portion of a GetterElement contributed by a single declaration.
- InstanceElement2
-
An element whose instance members can refer to
this
. - InstanceFragment
- The portion of an InstanceElement2 contributed by a single declaration.
- InterfaceElement2
- An element that defines an InterfaceType.
- InterfaceFragment
- The portion of an InterfaceElement2 contributed by a single declaration.
- JoinPatternVariableElement2
-
A pattern variable that is a join of other pattern variables, created
for a logical-or patterns, or shared
case
bodies inswitch
statements. - LabelElement2
- A label associated with a statement.
- LibraryElement2
- A library.
- LibraryExport
- An export directive within a library.
- LibraryFragment
- The portion of a LibraryElement2 coming from a single compilation unit.
- LibraryFragmentInclude
- A 'part' directive within a library fragment.
- LibraryImport
- An import directive within a library.
- LocalFunctionElement
- A local function.
- LocalVariableElement2
- A local variable.
- MethodElement2
- A method.
- MethodFragment
- The portion of a MethodElement2 contributed by a single declaration.
- MixinElement2
- An element that represents a mixin.
- MixinFragment
- The portion of a PrefixElement2 contributed by a single declaration.
- MultiplyDefinedElement2
- A pseudo-element that represents multiple elements defined within a single scope that have the same name. This situation is not allowed by the language, so objects implementing this interface always represent an error. As a result, most of the normal operations on elements do not make sense and will return useless results.
- PatternVariableElement2
- A pattern variable.
- PrefixElement2
- A prefix used to import one or more libraries into another library.
- PrefixFragment
- The portion of a PrefixElement2 contributed by a single declaration.
- PromotableElement2
- A variable that might be subject to type promotion. This might be a local variable or a parameter.
- PromotableFragment
- The portion of a PromotableElement2 contributed by a single declaration.
- PropertyInducingElement2
-
A variable that has an associated getter and possibly a setter. Note that
explicitly defined variables implicitly define a synthetic getter and that
non-
final
explicitly defined variables implicitly define a synthetic setter. Symmetrically, synthetic fields are implicitly created for explicitly defined getters and setters. The following rules apply: - PropertyInducingFragment
- The portion of a PropertyInducingElement2 contributed by a single declaration.
- SetterElement
- A setter.
- SetterFragment
- The portion of a SetterElement contributed by a single declaration.
- SuperFormalParameterElement2
- A super formal parameter.
- SuperFormalParameterFragment
- The portion of a SuperFormalParameterElement2 contributed by a single declaration.
- TopLevelFunctionElement
- A top-level function.
- TopLevelFunctionFragment
- The portion of a TopLevelFunctionElement contributed by a single declaration.
- TopLevelVariableElement2
- A top-level variable.
- TopLevelVariableFragment
- The portion of a TopLevelVariableElement2 contributed by a single declaration.
- TypeAliasElement2
-
A type alias (
typedef
). - TypeAliasFragment
- The portion of a TypeAliasElement2 contributed by a single declaration.
- TypeDefiningElement2
- An element that defines a type.
- TypeDefiningFragment
- The portion of a TypeDefiningElement2 contributed by a single declaration.
- TypeParameterElement2
- A type parameter.
- TypeParameterFragment
- The portion of a TypeParameterElement2 contributed by a single declaration.
- TypeParameterizedElement2
- An element that has type parameters, such as a class, typedef, or method.
- TypeParameterizedFragment
- The portion of a TypeParameterizedElement2 contributed by a single declaration.
- UndefinedElement2
- A pseudo-element that represents names that are undefined.
- VariableElement2
- A variable.
- VariableFragment
- The portion of a VariableElement2 contributed by a single declaration.