| // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:test/expect.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| |
| import '../../dart/resolution/node_text_expectations.dart'; |
| import '../elements_base.dart'; |
| |
| main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(EnumElementTest_keepLinking); |
| defineReflectiveTests(EnumElementTest_fromBytes); |
| defineReflectiveTests(UpdateNodeTextExpectations); |
| }); |
| } |
| |
| abstract class EnumElementTest extends ElementsBaseTest { |
| test_constant_arguments_symbolLiteral() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v(#foo.bar); |
| |
| const E(Object _); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @12 |
| arguments |
| SymbolLiteral |
| poundSign: # @13 |
| components |
| foo @14 |
| bar @18 |
| rightParenthesis: ) @21 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:27) (offset:33) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 33 |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration _ (nameOffset:42) (firstTokenOffset:35) (offset:42) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::_ |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F5 |
| type: Object |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constant_augmentation_add() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v1 |
| } |
| |
| augment enum A { |
| v2 |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v1 |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::A::@getter::v1 |
| staticType: A |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v1 |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:30) (firstTokenOffset:17) (offset:30) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F8 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:36) (firstTokenOffset:36) (offset:36) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@enum::A::@getter::v2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@enum::A::@field::v1 |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v1 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::A::@field::v2 |
| firstFragment: #F8 |
| type: A |
| constantInitializer |
| fragment: #F8 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::v2 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@enum::A::@getter::v1 |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v1 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::A::@getter::v2 |
| firstFragment: #F9 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v2 |
| '''); |
| } |
| |
| test_constant_augmentation_add_chain() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v1 |
| } |
| |
| augment enum A { |
| v2 |
| } |
| |
| augment enum A { |
| v3 |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v1 |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::A::@getter::v1 |
| staticType: A |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A |
| SimpleIdentifier |
| token: v3 @-1 |
| element: <testLibrary>::@enum::A::@getter::v3 |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v1 |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:30) (firstTokenOffset:17) (offset:30) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F8 |
| fields |
| #F9 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:36) (firstTokenOffset:36) (offset:36) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| getters |
| #F10 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@enum::A::@getter::v2 |
| #F8 isAugmentation enum A (nameOffset:55) (firstTokenOffset:42) (offset:55) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| fields |
| #F11 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v3 (nameOffset:61) (firstTokenOffset:61) (offset:61) |
| element: <testLibrary>::@enum::A::@field::v3 |
| initializer: expression_3 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| getters |
| #F12 isCompleteDeclaration isOriginVariable isStatic v3 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:61) |
| element: <testLibrary>::@enum::A::@getter::v3 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@enum::A::@field::v1 |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v1 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::A::@field::v2 |
| firstFragment: #F9 |
| type: A |
| constantInitializer |
| fragment: #F9 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::v2 |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v3 |
| reference: <testLibrary>::@enum::A::@field::v3 |
| firstFragment: #F11 |
| type: A |
| constantInitializer |
| fragment: #F11 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::v3 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@enum::A::@getter::v1 |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v1 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::A::@getter::v2 |
| firstFragment: #F10 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v2 |
| isOriginVariable isStatic v3 |
| reference: <testLibrary>::@enum::A::@getter::v3 |
| firstFragment: #F12 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v3 |
| '''); |
| } |
| |
| test_constant_augmentation_add_chain_twoInSameDeclaration() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v1 |
| } |
| |
| augment enum A { |
| v2, |
| augment v2 |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v1 |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::A::@getter::v1 |
| staticType: A |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v1 |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:30) (firstTokenOffset:17) (offset:30) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F8 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:36) (firstTokenOffset:36) (offset:36) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <null> |
| type: null |
| element: <null> |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: null |
| nextFragment: #F9 |
| #F9 hasImplicitType hasInitializer isAugmentation isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:50) (firstTokenOffset:42) (offset:50) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_3 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| previousFragment: #F8 |
| getters |
| #F10 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@enum::A::@getter::v2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@enum::A::@field::v1 |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v1 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::A::@field::v2 |
| firstFragment: #F8 |
| type: A |
| constantInitializer |
| fragment: #F9 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::v2 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@enum::A::@getter::v1 |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v1 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::A::@getter::v2 |
| firstFragment: #F10 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v2 |
| '''); |
| } |
| |
| test_constant_augmentation_chain() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v1, v2, v3 |
| } |
| |
| augment enum A { |
| augment v2 |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v1 |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:15) (firstTokenOffset:15) (offset:15) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <null> |
| type: null |
| element: <null> |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: null |
| nextFragment: #F5 |
| #F6 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v3 (nameOffset:19) (firstTokenOffset:19) (offset:19) |
| element: <testLibrary>::@enum::A::@field::v3 |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F7 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_3 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::A::@getter::v1 |
| staticType: A |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A |
| SimpleIdentifier |
| token: v3 @-1 |
| element: <testLibrary>::@enum::A::@getter::v3 |
| staticType: A |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F8 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v1 |
| #F10 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@enum::A::@getter::v2 |
| #F11 isCompleteDeclaration isOriginVariable isStatic v3 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19) |
| element: <testLibrary>::@enum::A::@getter::v3 |
| #F12 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:38) (firstTokenOffset:25) (offset:38) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F5 hasImplicitType hasInitializer isAugmentation isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:52) (firstTokenOffset:44) (offset:52) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_4 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| previousFragment: #F4 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@enum::A::@field::v1 |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v1 |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::A::@field::v2 |
| firstFragment: #F4 |
| type: A |
| constantInitializer |
| fragment: #F5 |
| expression: expression_4 |
| getter: <testLibrary>::@enum::A::@getter::v2 |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v3 |
| reference: <testLibrary>::@enum::A::@field::v3 |
| firstFragment: #F6 |
| type: A |
| constantInitializer |
| fragment: #F6 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::v3 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F7 |
| type: List<A> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F8 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@enum::A::@getter::v1 |
| firstFragment: #F9 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v1 |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::A::@getter::v2 |
| firstFragment: #F10 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v2 |
| isOriginVariable isStatic v3 |
| reference: <testLibrary>::@enum::A::@getter::v3 |
| firstFragment: #F11 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v3 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F12 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constant_augmentation_chain_typeParameters_countMismatch() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v, v2 |
| } |
| |
| augment enum A<T> { |
| augment v |
| } |
| '''); |
| |
| configuration |
| ..withConstructors = false |
| ..withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| typeParameters |
| #F3 isOriginOtherFragmentOfEnclosing T (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: #E0 T |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <null> |
| type: null |
| element: <null> |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: null |
| nextFragment: #F6 |
| #F7 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A<dynamic> |
| #F8 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<dynamic> |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A<dynamic> |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<dynamic> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::A::@getter::v2 |
| #F11 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:33) (firstTokenOffset:20) (offset:33) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| typeParameters |
| #F4 T (nameOffset:35) (firstTokenOffset:35) (offset:35) |
| element: #E0 T |
| previousFragment: #F3 |
| fields |
| #F6 hasImplicitType hasInitializer isAugmentation isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:50) (firstTokenOffset:42) (offset:50) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_3 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A<dynamic> |
| previousFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A<dynamic> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::v |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::A::@field::v2 |
| firstFragment: #F7 |
| type: A<dynamic> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::v2 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F8 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F8 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F9 |
| returnType: A<dynamic> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::A::@getter::v2 |
| firstFragment: #F10 |
| returnType: A<dynamic> |
| variable: <testLibrary>::@enum::A::@field::v2 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F11 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constant_augmentation_chain_withArguments() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v1(1), v2(2); |
| const A(int value); |
| } |
| |
| augment enum A { |
| augment v1(3) |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v1 |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <null> |
| type: null |
| element: <null> |
| argumentList: ArgumentList |
| leftParenthesis: ( @13 |
| arguments |
| IntegerLiteral |
| literal: 1 @14 |
| staticType: null |
| rightParenthesis: ) @15 |
| staticType: null |
| nextFragment: #F4 |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:18) (firstTokenOffset:18) (offset:18) |
| element: <testLibrary>::@enum::A::@field::v2 |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @20 |
| arguments |
| IntegerLiteral |
| literal: 2 @21 |
| staticType: int |
| rightParenthesis: ) @22 |
| staticType: A |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::A::@getter::v1 |
| staticType: A |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::A::@getter::v2 |
| staticType: A |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::A::@getter::v1 |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F7 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:27) (offset:33) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 33 |
| formalParameters |
| #F8 requiredPositional isOriginDeclaration value (nameOffset:39) (firstTokenOffset:35) (offset:39) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::value |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v1 |
| #F10 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@enum::A::@getter::v2 |
| #F11 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:63) (firstTokenOffset:50) (offset:63) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F4 hasImplicitType hasInitializer isAugmentation isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:77) (firstTokenOffset:69) (offset:77) |
| element: <testLibrary>::@enum::A::@field::v1 |
| initializer: expression_3 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @79 |
| arguments |
| IntegerLiteral |
| literal: 3 @80 |
| staticType: int |
| rightParenthesis: ) @81 |
| staticType: A |
| previousFragment: #F3 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@enum::A::@field::v1 |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F4 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::v1 |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::A::@field::v2 |
| firstFragment: #F5 |
| type: A |
| constantInitializer |
| fragment: #F5 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::v2 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F8 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@enum::A::@getter::v1 |
| firstFragment: #F9 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v1 |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::A::@getter::v2 |
| firstFragment: #F10 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v2 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F11 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constant_documented() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| /** |
| * aaa |
| */ |
| a, |
| |
| /// bbb |
| b, |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic a (nameOffset:32) (firstTokenOffset:11) (offset:32) |
| element: <testLibrary>::@enum::E::@field::a |
| documentationComment: /**\n * aaa\n */ |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic b (nameOffset:48) (firstTokenOffset:38) (offset:48) |
| element: <testLibrary>::@enum::E::@field::b |
| documentationComment: /// bbb |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: a @-1 |
| element: <testLibrary>::@enum::E::@getter::a |
| staticType: E |
| SimpleIdentifier |
| token: b @-1 |
| element: <testLibrary>::@enum::E::@getter::b |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: <testLibrary>::@enum::E::@getter::a |
| #F7 isCompleteDeclaration isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:48) |
| element: <testLibrary>::@enum::E::@getter::b |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@enum::E::@field::a |
| firstFragment: #F2 |
| documentationComment: /**\n * aaa\n */ |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::a |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer b |
| reference: <testLibrary>::@enum::E::@field::b |
| firstFragment: #F3 |
| documentationComment: /// bbb |
| type: E |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::b |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@enum::E::@getter::a |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@enum::E::@getter::b |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::b |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constant_documented_withMetadata() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| /** |
| * aaa |
| */ |
| @annotation |
| a, |
| |
| /// bbb |
| @annotation |
| b, |
| } |
| |
| const int annotation = 0; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic a (nameOffset:46) (firstTokenOffset:11) (offset:46) |
| element: <testLibrary>::@enum::E::@field::a |
| documentationComment: /**\n * aaa\n */ |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: annotation @33 |
| element: <testLibrary>::@getter::annotation |
| staticType: null |
| element: <testLibrary>::@getter::annotation |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic b (nameOffset:76) (firstTokenOffset:52) (offset:76) |
| element: <testLibrary>::@enum::E::@field::b |
| documentationComment: /// bbb |
| metadata |
| Annotation |
| atSign: @ @62 |
| name: SimpleIdentifier |
| token: annotation @63 |
| element: <testLibrary>::@getter::annotation |
| staticType: null |
| element: <testLibrary>::@getter::annotation |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: a @-1 |
| element: <testLibrary>::@enum::E::@getter::a |
| staticType: E |
| SimpleIdentifier |
| token: b @-1 |
| element: <testLibrary>::@enum::E::@getter::b |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@enum::E::@getter::a |
| #F7 isCompleteDeclaration isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@enum::E::@getter::b |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| topLevelVariables |
| #F9 hasInitializer isConst isOriginDeclaration isStatic annotation (nameOffset:92) (firstTokenOffset:92) (offset:92) |
| element: <testLibrary>::@topLevelVariable::annotation |
| initializer: expression_3 |
| IntegerLiteral |
| literal: 0 @105 |
| staticType: int |
| getters |
| #F10 isCompleteDeclaration isOriginVariable isStatic annotation (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@getter::annotation |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@enum::E::@field::a |
| firstFragment: #F2 |
| documentationComment: /**\n * aaa\n */ |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: annotation @33 |
| element: <testLibrary>::@getter::annotation |
| staticType: null |
| element: <testLibrary>::@getter::annotation |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::a |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer b |
| reference: <testLibrary>::@enum::E::@field::b |
| firstFragment: #F3 |
| documentationComment: /// bbb |
| metadata |
| Annotation |
| atSign: @ @62 |
| name: SimpleIdentifier |
| token: annotation @63 |
| element: <testLibrary>::@getter::annotation |
| staticType: null |
| element: <testLibrary>::@getter::annotation |
| type: E |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::b |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@enum::E::@getter::a |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@enum::E::@getter::b |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::b |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| topLevelVariables |
| hasInitializer isConst isOriginDeclaration isStatic annotation |
| reference: <testLibrary>::@topLevelVariable::annotation |
| firstFragment: #F9 |
| type: int |
| constantInitializer |
| fragment: #F9 |
| expression: expression_3 |
| getter: <testLibrary>::@getter::annotation |
| getters |
| isOriginVariable isStatic annotation |
| reference: <testLibrary>::@getter::annotation |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::annotation |
| '''); |
| } |
| |
| test_constant_inference() async { |
| var library = await buildLibrary(r''' |
| enum E<T> { |
| int(1), |
| string('2'); |
| |
| const E(T a); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic int (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::E::@field::int |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @17 |
| arguments |
| IntegerLiteral |
| literal: 1 @18 |
| staticType: int |
| rightParenthesis: ) @19 |
| staticType: E<int> |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic string (nameOffset:24) (firstTokenOffset:24) (offset:24) |
| element: <testLibrary>::@enum::E::@field::string |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<String> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: String} |
| argumentList: ArgumentList |
| leftParenthesis: ( @30 |
| arguments |
| SimpleStringLiteral |
| literal: '2' @31 |
| rightParenthesis: ) @34 |
| staticType: E<String> |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: int @-1 |
| element: <testLibrary>::@enum::E::@getter::int |
| staticType: E<int> |
| SimpleIdentifier |
| token: string @-1 |
| element: <testLibrary>::@enum::E::@getter::string |
| staticType: E<String> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F6 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:40) (offset:46) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 46 |
| formalParameters |
| #F7 requiredPositional isOriginDeclaration a (nameOffset:50) (firstTokenOffset:48) (offset:50) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::a |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic int (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::E::@getter::int |
| #F9 isCompleteDeclaration isOriginVariable isStatic string (nameOffset:<null>) (firstTokenOffset:<null>) (offset:24) |
| element: <testLibrary>::@enum::E::@getter::string |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer int |
| reference: <testLibrary>::@enum::E::@field::int |
| firstFragment: #F3 |
| type: E<int> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::int |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer string |
| reference: <testLibrary>::@enum::E::@field::string |
| firstFragment: #F4 |
| type: E<String> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::string |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional a |
| firstFragment: #F7 |
| type: T |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic int |
| reference: <testLibrary>::@enum::E::@getter::int |
| firstFragment: #F8 |
| returnType: E<int> |
| variable: <testLibrary>::@enum::E::@field::int |
| isOriginVariable isStatic string |
| reference: <testLibrary>::@enum::E::@getter::string |
| firstFragment: #F9 |
| returnType: E<String> |
| variable: <testLibrary>::@enum::E::@field::string |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F10 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constant_metadata() async { |
| var library = await buildLibrary(r''' |
| const a = 42; |
| |
| enum E { |
| @a |
| v, |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:20) (firstTokenOffset:15) (offset:20) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:31) (firstTokenOffset:26) (offset:31) |
| element: <testLibrary>::@enum::E::@field::v |
| metadata |
| Annotation |
| atSign: @ @26 |
| name: SimpleIdentifier |
| token: a @27 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::values |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic a (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::a |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 42 @10 |
| staticType: int |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::a |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| metadata |
| Annotation |
| atSign: @ @26 |
| name: SimpleIdentifier |
| token: a @27 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| topLevelVariables |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F7 |
| type: int |
| constantInitializer |
| fragment: #F7 |
| expression: expression_2 |
| getter: <testLibrary>::@getter::a |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::a |
| '''); |
| } |
| |
| test_constant_metadata_instanceCreation() async { |
| var library = await buildLibrary(r''' |
| class A { |
| final dynamic value; |
| const A(this.value); |
| } |
| |
| enum E { |
| @A(100) |
| a, |
| b, |
| @A(300) |
| c, |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isFinal isOriginDeclaration value (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@class::A::@field::value |
| constructors |
| #F3 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:35) (offset:41) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| typeNameOffset: 41 |
| formalParameters |
| #F4 requiredPositional hasImplicitType isFinal isOriginDeclaration this.value (nameOffset:48) (firstTokenOffset:43) (offset:48) |
| element: <testLibrary>::@class::A::@constructor::new::@formalParameter::value |
| getters |
| #F5 isCompleteDeclaration isOriginVariable value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::A::@getter::value |
| enums |
| #F6 enum E (nameOffset:64) (firstTokenOffset:59) (offset:64) |
| element: <testLibrary>::@enum::E |
| fields |
| #F7 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic a (nameOffset:80) (firstTokenOffset:70) (offset:80) |
| element: <testLibrary>::@enum::E::@field::a |
| metadata |
| Annotation |
| atSign: @ @70 |
| name: SimpleIdentifier |
| token: A @71 |
| element: <testLibrary>::@class::A |
| staticType: null |
| arguments: ArgumentList |
| leftParenthesis: ( @72 |
| arguments |
| IntegerLiteral |
| literal: 100 @73 |
| staticType: int |
| rightParenthesis: ) @76 |
| element: <testLibrary>::@class::A::@constructor::new |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F8 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic b (nameOffset:85) (firstTokenOffset:85) (offset:85) |
| element: <testLibrary>::@enum::E::@field::b |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F9 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic c (nameOffset:100) (firstTokenOffset:90) (offset:100) |
| element: <testLibrary>::@enum::E::@field::c |
| metadata |
| Annotation |
| atSign: @ @90 |
| name: SimpleIdentifier |
| token: A @91 |
| element: <testLibrary>::@class::A |
| staticType: null |
| arguments: ArgumentList |
| leftParenthesis: ( @92 |
| arguments |
| IntegerLiteral |
| literal: 300 @93 |
| staticType: int |
| rightParenthesis: ) @96 |
| element: <testLibrary>::@class::A::@constructor::new |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F10 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_3 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: a @-1 |
| element: <testLibrary>::@enum::E::@getter::a |
| staticType: E |
| SimpleIdentifier |
| token: b @-1 |
| element: <testLibrary>::@enum::E::@getter::b |
| staticType: E |
| SimpleIdentifier |
| token: c @-1 |
| element: <testLibrary>::@enum::E::@getter::c |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F11 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F12 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@enum::E::@getter::a |
| #F13 isCompleteDeclaration isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:85) |
| element: <testLibrary>::@enum::E::@getter::b |
| #F14 isCompleteDeclaration isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:100) |
| element: <testLibrary>::@enum::E::@getter::c |
| #F15 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@enum::E::@getter::values |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isFinal isOriginDeclaration value |
| reference: <testLibrary>::@class::A::@field::value |
| firstFragment: #F2 |
| type: dynamic |
| getter: <testLibrary>::@class::A::@getter::value |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isFinal this.value |
| firstFragment: #F4 |
| type: dynamic |
| field: <testLibrary>::@class::A::@field::value |
| getters |
| isOriginVariable value |
| reference: <testLibrary>::@class::A::@getter::value |
| firstFragment: #F5 |
| returnType: dynamic |
| variable: <testLibrary>::@class::A::@field::value |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F6 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@enum::E::@field::a |
| firstFragment: #F7 |
| metadata |
| Annotation |
| atSign: @ @70 |
| name: SimpleIdentifier |
| token: A @71 |
| element: <testLibrary>::@class::A |
| staticType: null |
| arguments: ArgumentList |
| leftParenthesis: ( @72 |
| arguments |
| IntegerLiteral |
| literal: 100 @73 |
| staticType: int |
| rightParenthesis: ) @76 |
| element: <testLibrary>::@class::A::@constructor::new |
| type: E |
| constantInitializer |
| fragment: #F7 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::a |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer b |
| reference: <testLibrary>::@enum::E::@field::b |
| firstFragment: #F8 |
| type: E |
| constantInitializer |
| fragment: #F8 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::b |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer c |
| reference: <testLibrary>::@enum::E::@field::c |
| firstFragment: #F9 |
| metadata |
| Annotation |
| atSign: @ @90 |
| name: SimpleIdentifier |
| token: A @91 |
| element: <testLibrary>::@class::A |
| staticType: null |
| arguments: ArgumentList |
| leftParenthesis: ( @92 |
| arguments |
| IntegerLiteral |
| literal: 300 @93 |
| staticType: int |
| rightParenthesis: ) @96 |
| element: <testLibrary>::@class::A::@constructor::new |
| type: E |
| constantInitializer |
| fragment: #F9 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::c |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F10 |
| type: List<E> |
| constantInitializer |
| fragment: #F10 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F11 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@enum::E::@getter::a |
| firstFragment: #F12 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@enum::E::@getter::b |
| firstFragment: #F13 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::b |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@enum::E::@getter::c |
| firstFragment: #F14 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::c |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F15 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constant_metadata_self() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| @v |
| v, |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:16) (firstTokenOffset:11) (offset:16) |
| element: <testLibrary>::@enum::E::@field::v |
| metadata |
| Annotation |
| atSign: @ @11 |
| name: SimpleIdentifier |
| token: v @12 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: null |
| element: <testLibrary>::@enum::E::@getter::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| metadata |
| Annotation |
| atSign: @ @11 |
| name: SimpleIdentifier |
| token: v @12 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: null |
| element: <testLibrary>::@enum::E::@getter::v |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constant_missingName() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v,, |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic <null-name> (nameOffset:<null>) (firstTokenOffset:13) (offset:13) |
| element: <testLibrary>::@enum::E::@field::#0 |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| SimpleIdentifier |
| token: <empty> @-1 <synthetic> |
| element: <null> |
| staticType: InvalidType |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic <null-name> (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::E::@getter::#1 |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer <null-name> |
| reference: <testLibrary>::@enum::E::@field::#0 |
| firstFragment: #F3 |
| type: E |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::#1 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic <null-name> |
| reference: <testLibrary>::@enum::E::@getter::#1 |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::#0 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| /// Test that a constant named `_name` renames the synthetic `name` field. |
| test_constant_name() async { |
| var library = await buildLibrary(r''' |
| enum E { _name } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic _name (nameOffset:9) (firstTokenOffset:9) (offset:9) |
| element: <testLibrary>::@enum::E::@field::_name |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: _name @-1 |
| element: <testLibrary>::@enum::E::@getter::_name |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic _name (nameOffset:<null>) (firstTokenOffset:<null>) (offset:9) |
| element: <testLibrary>::@enum::E::@getter::_name |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer _name |
| reference: <testLibrary>::@enum::E::@field::_name |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::_name |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic _name |
| reference: <testLibrary>::@enum::E::@getter::_name |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::_name |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constant_typeArguments() async { |
| var library = await buildLibrary(r''' |
| enum E<T> { |
| v<double>(42); |
| |
| const E(T a); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @15 |
| arguments |
| NamedType |
| name: double @16 |
| element: dart:core::@class::double |
| type: double |
| rightBracket: > @22 |
| element: <testLibrary>::@enum::E |
| type: E<double> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: double} |
| argumentList: ArgumentList |
| leftParenthesis: ( @23 |
| arguments |
| IntegerLiteral |
| literal: 42 @24 |
| staticType: double |
| rightParenthesis: ) @26 |
| staticType: E<double> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<double> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F5 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 38 |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:42) (firstTokenOffset:40) (offset:42) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::a |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F3 |
| type: E<double> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E1 requiredPositional a |
| firstFragment: #F6 |
| type: T |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E<double> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constant_underscore() async { |
| var library = await buildLibrary(r''' |
| enum E { _ } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic _ (nameOffset:9) (firstTokenOffset:9) (offset:9) |
| element: <testLibrary>::@enum::E::@field::_ |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: _ @-1 |
| element: <testLibrary>::@enum::E::@getter::_ |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic _ (nameOffset:<null>) (firstTokenOffset:<null>) (offset:9) |
| element: <testLibrary>::@enum::E::@getter::_ |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer _ |
| reference: <testLibrary>::@enum::E::@field::_ |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::_ |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic _ |
| reference: <testLibrary>::@enum::E::@getter::_ |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::_ |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_body_constantInitializers_assertInitializer() async { |
| var library = await buildLibrary(r''' |
| enum E() { |
| v; |
| |
| this : assert(true); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:13) (firstTokenOffset:13) (offset:13) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| thisKeywordOffset: 19 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| constantInitializers |
| AssertInitializer |
| assertKeyword: assert @26 |
| leftParenthesis: ( @32 |
| condition: BooleanLiteral |
| literal: true @33 |
| staticType: bool |
| rightParenthesis: ) @37 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_body_constantInitializers_fieldInitializer() async { |
| var library = await buildLibrary(r''' |
| enum E() { |
| v; |
| |
| final int x; |
| this : x = 0; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:13) (firstTokenOffset:13) (offset:13) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isFinal isOriginDeclaration x (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@enum::E::@field::x |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| thisKeywordOffset: 34 |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F8 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::E::@getter::x |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::E::@getter::x |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| constantInitializers |
| ConstructorFieldInitializer |
| fieldName: SimpleIdentifier |
| token: x @41 |
| element: <testLibrary>::@enum::E::@field::x |
| staticType: null |
| equals: = @43 |
| expression: IntegerLiteral |
| literal: 0 @45 |
| staticType: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::x |
| '''); |
| } |
| |
| test_constructor_primary_body_duplicate() async { |
| var library = await buildLibrary(r''' |
| enum E() { |
| v; |
| |
| final int y; |
| @Deprecated('0') |
| this : y = 0; |
| @Deprecated('1') |
| this : y = 1; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:13) (firstTokenOffset:13) (offset:13) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isFinal isOriginDeclaration y (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@enum::E::@field::y |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| metadata |
| Annotation |
| atSign: @ @34 |
| name: SimpleIdentifier |
| token: Deprecated @35 |
| element: dart:core::@class::Deprecated |
| staticType: null |
| arguments: ArgumentList |
| leftParenthesis: ( @45 |
| arguments |
| SimpleStringLiteral |
| literal: '0' @46 |
| rightParenthesis: ) @49 |
| element: dart:core::@class::Deprecated::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| thisKeywordOffset: 53 |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F8 isCompleteDeclaration isOriginVariable y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::E::@getter::y |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isFinal isOriginDeclaration y |
| reference: <testLibrary>::@enum::E::@field::y |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::E::@getter::y |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| metadata |
| Annotation |
| atSign: @ @34 |
| name: SimpleIdentifier |
| token: Deprecated @35 |
| element: dart:core::@class::Deprecated |
| staticType: null |
| arguments: ArgumentList |
| leftParenthesis: ( @45 |
| arguments |
| SimpleStringLiteral |
| literal: '0' @46 |
| rightParenthesis: ) @49 |
| element: dart:core::@class::Deprecated::@constructor::new |
| constantInitializers |
| ConstructorFieldInitializer |
| fieldName: SimpleIdentifier |
| token: y @60 |
| element: <testLibrary>::@enum::E::@field::y |
| staticType: null |
| equals: = @62 |
| expression: IntegerLiteral |
| literal: 0 @64 |
| staticType: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable y |
| reference: <testLibrary>::@enum::E::@getter::y |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::y |
| '''); |
| } |
| |
| test_constructor_primary_body_metadata() async { |
| var library = await buildLibrary(r''' |
| enum E(int x) { |
| v(0); |
| |
| @deprecated |
| this; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:18) (firstTokenOffset:18) (offset:18) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @19 |
| arguments |
| IntegerLiteral |
| literal: 0 @20 |
| staticType: int |
| rightParenthesis: ) @21 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| metadata |
| Annotation |
| atSign: @ @27 |
| name: SimpleIdentifier |
| token: deprecated @28 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| typeName: E |
| typeNameOffset: 5 |
| thisKeywordOffset: 41 |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration x (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| metadata |
| Annotation |
| atSign: @ @27 |
| name: SimpleIdentifier |
| token: deprecated @28 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| formalParameters |
| #E0 requiredPositional x |
| firstFragment: #F5 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_body_named() async { |
| var library = await buildLibrary(r''' |
| enum E.named() { |
| v.named(); |
| |
| this : assert(true); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:19) (firstTokenOffset:19) (offset:19) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::E::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::E::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @26 |
| rightParenthesis: ) @27 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary named (nameOffset:7) (firstTokenOffset:5) (offset:7) |
| element: <testLibrary>::@enum::E::@constructor::named |
| typeName: E |
| typeNameOffset: 5 |
| periodOffset: 6 |
| thisKeywordOffset: 33 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| constantInitializers |
| AssertInitializer |
| assertKeyword: assert @40 |
| leftParenthesis: ( @46 |
| condition: BooleanLiteral |
| literal: true @47 |
| staticType: bool |
| rightParenthesis: ) @51 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_body_noDeclaration() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| this : assert(true); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_body_notConst() async { |
| var library = await buildLibrary(r''' |
| enum E() { |
| v; |
| |
| this : assert(true); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:13) (firstTokenOffset:13) (offset:13) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| thisKeywordOffset: 19 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| constantInitializers |
| AssertInitializer |
| assertKeyword: assert @26 |
| leftParenthesis: ( @32 |
| condition: BooleanLiteral |
| literal: true @33 |
| staticType: bool |
| rightParenthesis: ) @37 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_body_primaryInitializerScope() async { |
| var library = await buildLibrary(r''' |
| enum E(int x) { |
| v(1); |
| |
| this : assert(x > 0); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:18) (firstTokenOffset:18) (offset:18) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @19 |
| arguments |
| IntegerLiteral |
| literal: 1 @20 |
| staticType: int |
| rightParenthesis: ) @21 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| thisKeywordOffset: 27 |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration x (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional x |
| firstFragment: #F5 |
| type: int |
| constantInitializers |
| AssertInitializer |
| assertKeyword: assert @34 |
| leftParenthesis: ( @40 |
| condition: BinaryExpression |
| leftOperand: SimpleIdentifier |
| token: x @41 |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| staticType: int |
| operator: > @43 |
| rightOperand: IntegerLiteral |
| literal: 0 @45 |
| staticType: int |
| element: dart:core::@class::num::@method::> |
| staticInvokeType: bool Function(num) |
| staticType: bool |
| rightParenthesis: ) @46 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_optionalNamed_simple_final() async { |
| var library = await buildLibrary(r''' |
| enum A({final int? foo}) { |
| v(foo: 0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @30 |
| arguments |
| NamedArgument |
| name: foo @31 |
| colon: : @34 |
| argumentExpression: IntegerLiteral |
| literal: 0 @36 |
| staticType: int |
| rightParenthesis: ) @37 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F4 isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F6 optionalNamed isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:19) (firstTokenOffset:8) (offset:19) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F4 |
| type: int? |
| getter: <testLibrary>::@enum::A::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 optionalNamed isDeclaring isFinal this.foo |
| firstFragment: #F6 |
| type: int? |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int? |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_optionalPositional_simple_final() async { |
| var library = await buildLibrary(r''' |
| enum A([final int? foo]) { |
| v(0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @30 |
| arguments |
| IntegerLiteral |
| literal: 0 @31 |
| staticType: int |
| rightParenthesis: ) @32 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F4 isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F6 optionalPositional isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:19) (firstTokenOffset:8) (offset:19) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F4 |
| type: int? |
| getter: <testLibrary>::@enum::A::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 optionalPositional isDeclaring isFinal this.foo |
| firstFragment: #F6 |
| type: int? |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int? |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_requiredNamed_simple_final() async { |
| var library = await buildLibrary(r''' |
| enum A({required final int foo}) { |
| v(foo: 0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @38 |
| arguments |
| NamedArgument |
| name: foo @39 |
| colon: : @42 |
| argumentExpression: IntegerLiteral |
| literal: 0 @44 |
| staticType: int |
| rightParenthesis: ) @45 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F4 isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredNamed isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:27) (firstTokenOffset:8) (offset:27) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredNamed isDeclaring isFinal this.foo |
| firstFragment: #F6 |
| type: int |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_requiredPositional_functionTypedSuffix_final() async { |
| var library = await buildLibrary(r''' |
| enum A( |
| /// first |
| /// second |
| @deprecated final void foo(), |
| ) { |
| v(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:71) (firstTokenOffset:71) (offset:71) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @72 |
| rightParenthesis: ) @73 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F4 isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:58) (firstTokenOffset:10) (offset:58) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| documentationComment: /// first\n/// second |
| metadata |
| Annotation |
| atSign: @ @35 |
| name: SimpleIdentifier |
| token: deprecated @36 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F4 |
| documentationComment: /// first\n/// second |
| metadata |
| Annotation |
| atSign: @ @35 |
| name: SimpleIdentifier |
| token: deprecated @36 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| type: void Function() |
| getter: <testLibrary>::@enum::A::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isDeclaring isFinal this.foo |
| firstFragment: #F6 |
| type: void Function() |
| documentationComment: /// first\n/// second |
| metadata |
| Annotation |
| atSign: @ @35 |
| name: SimpleIdentifier |
| token: deprecated @36 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: void Function() |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_requiredPositional_simple_final() async { |
| var library = await buildLibrary(r''' |
| enum A( |
| /// first |
| /// second |
| @deprecated final int foo, |
| ) { |
| v(0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:68) (firstTokenOffset:68) (offset:68) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @69 |
| arguments |
| IntegerLiteral |
| literal: 0 @70 |
| staticType: int |
| rightParenthesis: ) @71 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F4 isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:57) (firstTokenOffset:10) (offset:57) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| documentationComment: /// first\n/// second |
| metadata |
| Annotation |
| atSign: @ @35 |
| name: SimpleIdentifier |
| token: deprecated @36 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:68) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F4 |
| documentationComment: /// first\n/// second |
| metadata |
| Annotation |
| atSign: @ @35 |
| name: SimpleIdentifier |
| token: deprecated @36 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isDeclaring isFinal this.foo |
| firstFragment: #F6 |
| type: int |
| documentationComment: /// first\n/// second |
| metadata |
| Annotation |
| atSign: @ @35 |
| name: SimpleIdentifier |
| token: deprecated @36 |
| element: dart:core::@getter::deprecated |
| staticType: null |
| element: dart:core::@getter::deprecated |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_requiredPositional_simple_var() async { |
| var library = await buildLibrary(r''' |
| enum A(var int foo) { |
| v(0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:24) (firstTokenOffset:24) (offset:24) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @25 |
| arguments |
| IntegerLiteral |
| literal: 0 @26 |
| staticType: int |
| rightParenthesis: ) @27 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F4 isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:15) (firstTokenOffset:7) (offset:15) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:24) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::foo |
| setters |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@setter::foo |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@setter::foo::@formalParameter::value |
| enums |
| hasNonFinalField isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| setter: <testLibrary>::@enum::A::@setter::foo |
| declaringFormalParameter: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isDeclaring isFinal this.foo |
| firstFragment: #F6 |
| type: int |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| setters |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@setter::foo |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_requiredPositional_type_fromField_inferred() async { |
| var library = await buildLibrary(r''' |
| class A { |
| int get foo => 0; |
| } |
| |
| enum B(final foo) implements A { |
| v(0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@field::foo |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isCompleteDeclaration isOriginDeclaration foo (nameOffset:20) (firstTokenOffset:12) (offset:20) |
| element: <testLibrary>::@class::A::@getter::foo |
| enums |
| #F5 enum B (nameOffset:38) (firstTokenOffset:33) (offset:38) |
| element: <testLibrary>::@enum::B |
| fields |
| #F6 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:68) (firstTokenOffset:68) (offset:68) |
| element: <testLibrary>::@enum::B::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: B @-1 |
| element: <testLibrary>::@enum::B |
| type: B |
| element: <testLibrary>::@enum::B::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @69 |
| arguments |
| IntegerLiteral |
| literal: 0 @70 |
| staticType: int |
| rightParenthesis: ) @71 |
| staticType: B |
| #F7 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@enum::B::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::B::@getter::v |
| staticType: B |
| rightBracket: ] @0 |
| staticType: List<B> |
| #F8 hasImplicitType isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@enum::B::@field::foo |
| constructors |
| #F9 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:38) (offset:38) |
| element: <testLibrary>::@enum::B::@constructor::new |
| typeName: B |
| typeNameOffset: 38 |
| formalParameters |
| #F10 requiredPositional hasImplicitType isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:46) (firstTokenOffset:40) (offset:46) |
| element: <testLibrary>::@enum::B::@constructor::new::@formalParameter::foo |
| getters |
| #F11 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:68) |
| element: <testLibrary>::@enum::B::@getter::v |
| #F12 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@enum::B::@getter::values |
| #F13 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@enum::B::@getter::foo |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@class::A::@field::foo |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::foo |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::A::@getter::foo |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::foo |
| enums |
| isSimplyBounded enum B |
| reference: <testLibrary>::@enum::B |
| firstFragment: #F5 |
| supertype: Enum |
| interfaces |
| A |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::B::@field::v |
| firstFragment: #F6 |
| type: B |
| constantInitializer |
| fragment: #F6 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::B::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::B::@field::values |
| firstFragment: #F7 |
| type: List<B> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::B::@getter::values |
| hasImplicitType isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::B::@field::foo |
| firstFragment: #F8 |
| type: int |
| getter: <testLibrary>::@enum::B::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::B::@constructor::new::@formalParameter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::B::@constructor::new |
| firstFragment: #F9 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isDeclaring isFinal this.foo |
| firstFragment: #F10 |
| type: int |
| field: <testLibrary>::@enum::B::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::B::@getter::v |
| firstFragment: #F11 |
| returnType: B |
| variable: <testLibrary>::@enum::B::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::B::@getter::values |
| firstFragment: #F12 |
| returnType: List<B> |
| variable: <testLibrary>::@enum::B::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::B::@getter::foo |
| firstFragment: #F13 |
| returnType: int |
| variable: <testLibrary>::@enum::B::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_declaringFormalParameter_requiredPositional_type_typeParameter() async { |
| var library = await buildLibrary(r''' |
| enum A<T>(final T foo) { |
| v(0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:27) (firstTokenOffset:27) (offset:27) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @28 |
| arguments |
| IntegerLiteral |
| literal: 0 @29 |
| staticType: int |
| rightParenthesis: ) @30 |
| staticType: A<int> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| #F5 isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F6 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F7 requiredPositional isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:18) (firstTokenOffset:10) (offset:18) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A<int> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasEnclosingTypeParameterReference isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: T |
| getter: <testLibrary>::@enum::A::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional isDeclaring isFinal this.foo |
| firstFragment: #F7 |
| type: T |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| hasEnclosingTypeParameterReference isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: T |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_formalParameter_field_requiredPositional() async { |
| var library = await buildLibrary(r''' |
| enum A(this.foo) { |
| v(0); |
| |
| final int foo; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @22 |
| arguments |
| IntegerLiteral |
| literal: 0 @23 |
| staticType: int |
| rightParenthesis: ) @24 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F4 isFinal isOriginDeclaration foo (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional hasImplicitType isFinal isOriginDeclaration this.foo (nameOffset:12) (firstTokenOffset:7) (offset:12) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isFinal this.foo |
| firstFragment: #F6 |
| type: int |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_constructor_primary_formalParameter_regular_requiredPositional_functionTypedSuffix() async { |
| var library = await buildLibrary(r''' |
| enum A(int foo()) { |
| v(0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:22) (firstTokenOffset:22) (offset:22) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @23 |
| arguments |
| IntegerLiteral |
| literal: 0 @24 |
| staticType: int |
| rightParenthesis: ) @25 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration foo (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional foo |
| firstFragment: #F5 |
| type: int Function() |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_formalParameter_regular_requiredPositional_simple() async { |
| var library = await buildLibrary(r''' |
| enum A(int foo) { |
| v(0) |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @21 |
| arguments |
| IntegerLiteral |
| literal: 0 @22 |
| staticType: int |
| rightParenthesis: ) @23 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration foo (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional foo |
| firstFragment: #F5 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_named_const() async { |
| var library = await buildLibrary(r''' |
| enum const A.named() { |
| v.named() |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:11) (firstTokenOffset:0) (offset:11) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::A::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::A::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @32 |
| rightParenthesis: ) @33 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary named (nameOffset:13) (firstTokenOffset:5) (offset:13) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 11 |
| periodOffset: 12 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::values |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_named_notConst() async { |
| var library = await buildLibrary(r''' |
| enum A.named() { |
| v.named() |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:19) (firstTokenOffset:19) (offset:19) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::A::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::A::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @26 |
| rightParenthesis: ) @27 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary named (nameOffset:7) (firstTokenOffset:5) (offset:7) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 5 |
| periodOffset: 6 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_scopes() async { |
| var library = await buildLibrary(r''' |
| const foo = 0; |
| |
| enum E<@foo T>([@foo int x = foo]) { |
| v; |
| |
| static const foo = 1; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:28) (firstTokenOffset:23) (offset:28) |
| element: #E0 T |
| metadata |
| Annotation |
| atSign: @ @23 |
| name: SimpleIdentifier |
| token: foo @24 |
| element: <testLibrary>::@getter::foo |
| staticType: null |
| element: <testLibrary>::@getter::foo |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| #F5 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic foo (nameOffset:74) (firstTokenOffset:74) (offset:74) |
| element: <testLibrary>::@enum::E::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 1 @80 |
| staticType: int |
| constructors |
| #F6 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 21 |
| formalParameters |
| #F7 optionalPositional isOriginDeclaration x (nameOffset:41) (firstTokenOffset:32) (offset:41) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: foo @33 |
| element: <testLibrary>::@enum::E::@getter::foo |
| staticType: null |
| element: <testLibrary>::@enum::E::@getter::foo |
| initializer: expression_3 |
| SimpleIdentifier |
| token: foo @45 |
| element: <testLibrary>::@enum::E::@getter::foo |
| staticType: int |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:55) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable isStatic foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@enum::E::@getter::foo |
| topLevelVariables |
| #F11 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic foo (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::foo |
| initializer: expression_4 |
| IntegerLiteral |
| literal: 0 @12 |
| staticType: int |
| getters |
| #F12 isCompleteDeclaration isOriginVariable isStatic foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::foo |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| metadata |
| Annotation |
| atSign: @ @23 |
| name: SimpleIdentifier |
| token: foo @24 |
| element: <testLibrary>::@getter::foo |
| staticType: null |
| element: <testLibrary>::@getter::foo |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F3 |
| type: E<dynamic> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer foo |
| reference: <testLibrary>::@enum::E::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::foo |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| formalParameters |
| #E1 optionalPositional hasDefaultValue x |
| firstFragment: #F7 |
| type: int |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: foo @33 |
| element: <testLibrary>::@enum::E::@getter::foo |
| staticType: null |
| element: <testLibrary>::@enum::E::@getter::foo |
| constantInitializer |
| fragment: #F7 |
| expression: expression_3 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F8 |
| returnType: E<dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F9 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable isStatic foo |
| reference: <testLibrary>::@enum::E::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::foo |
| topLevelVariables |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer foo |
| reference: <testLibrary>::@topLevelVariable::foo |
| firstFragment: #F11 |
| type: int |
| constantInitializer |
| fragment: #F11 |
| expression: expression_4 |
| getter: <testLibrary>::@getter::foo |
| getters |
| isOriginVariable isStatic foo |
| reference: <testLibrary>::@getter::foo |
| firstFragment: #F12 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::foo |
| '''); |
| } |
| |
| test_constructor_primary_typeParameters() async { |
| var library = await buildLibrary(r''' |
| enum A<T extends U, U extends num>(T t, U u) { |
| v(0, 0); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| #F3 U (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: #E1 U |
| fields |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:49) (firstTokenOffset:49) (offset:49) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A<int, int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int, U: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @50 |
| arguments |
| IntegerLiteral |
| literal: 0 @51 |
| staticType: int |
| IntegerLiteral |
| literal: 0 @54 |
| staticType: int |
| rightParenthesis: ) @55 |
| staticType: A<int, int> |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int, int> |
| rightBracket: ] @0 |
| staticType: List<A<num, num>> |
| constructors |
| #F6 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| formalParameters |
| #F7 requiredPositional isOriginDeclaration t (nameOffset:37) (firstTokenOffset:35) (offset:37) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::t |
| #F8 requiredPositional isOriginDeclaration u (nameOffset:42) (firstTokenOffset:40) (offset:42) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::u |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| enums |
| enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| bound: U |
| #E1 U |
| firstFragment: #F3 |
| bound: num |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F4 |
| type: A<int, int> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F5 |
| type: List<A<num, num>> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| formalParameters |
| #E2 requiredPositional t |
| firstFragment: #F7 |
| type: T |
| #E3 requiredPositional u |
| firstFragment: #F8 |
| type: U |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F9 |
| returnType: A<int, int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F10 |
| returnType: List<A<num, num>> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_unnamed_const() async { |
| var library = await buildLibrary(r''' |
| enum const A() { |
| v |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:11) (firstTokenOffset:0) (offset:11) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:19) (firstTokenOffset:19) (offset:19) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:11) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 11 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::values |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_primary_unnamed_notConst() async { |
| var library = await buildLibrary(r''' |
| enum A() { |
| v |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:13) (firstTokenOffset:13) (offset:13) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 5 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F2 |
| type: A |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_add_named() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v.named(); |
| } |
| |
| augment enum A {; |
| const A.named(); |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::A::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::A::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @18 |
| rightParenthesis: ) @19 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:38) (firstTokenOffset:25) (offset:38) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| constructors |
| #F7 isConst isOriginDeclaration named (nameOffset:53) (firstTokenOffset:45) (offset:53) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 51 |
| periodOffset: 52 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_add_named_generic() async { |
| var library = await buildLibrary(r''' |
| enum A<T> { |
| v<int>.named() |
| } |
| |
| augment enum A<T> {; |
| const A.named(T a); |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @15 |
| arguments |
| NamedType |
| name: int @16 |
| element: dart:core::@class::int |
| type: int |
| rightBracket: > @19 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::named |
| substitution: {T: int} |
| staticType: null |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::named |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @26 |
| rightParenthesis: ) @27 |
| staticType: A<int> |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:45) (firstTokenOffset:32) (offset:45) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| typeParameters |
| #F4 T (nameOffset:47) (firstTokenOffset:47) (offset:47) |
| element: #E0 T |
| previousFragment: #F3 |
| constructors |
| #F9 isConst isOriginDeclaration named (nameOffset:63) (firstTokenOffset:55) (offset:63) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 61 |
| periodOffset: 62 |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration a (nameOffset:71) (firstTokenOffset:69) (offset:71) |
| element: <testLibrary>::@enum::A::@constructor::named::@formalParameter::a |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A<int> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional a |
| firstFragment: #F10 |
| type: T |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_add_named_hasUnnamed() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| const A(); |
| } |
| |
| augment enum A {; |
| const A.named(); |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:16) (offset:22) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 22 |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:43) (firstTokenOffset:30) (offset:43) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| constructors |
| #F8 isConst isOriginDeclaration named (nameOffset:58) (firstTokenOffset:50) (offset:58) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 56 |
| periodOffset: 57 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F8 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_add_unnamed() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| } |
| |
| augment enum A {; |
| const A(); |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:30) (firstTokenOffset:17) (offset:30) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| constructors |
| #F7 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:37) (offset:43) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 43 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_add_unnamed_hasNamed() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| const A.named(); |
| } |
| |
| augment enum A {; |
| const A(); |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginDeclaration named (nameOffset:24) (firstTokenOffset:16) (offset:24) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 22 |
| periodOffset: 23 |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:49) (firstTokenOffset:36) (offset:49) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| constructors |
| #F8 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:56) (offset:62) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 62 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F8 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_add_withConstructorFieldInitializer() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int f; |
| } |
| |
| augment enum A {; |
| const A.named() : f = 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <null> |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isFinal isOriginDeclaration f (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::f |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F8 isCompleteDeclaration isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::f |
| #F2 isAugmentation enum A (nameOffset:45) (firstTokenOffset:32) (offset:45) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| constructors |
| #F9 isCompleteDeclaration isConst isOriginDeclaration named (nameOffset:60) (firstTokenOffset:52) (offset:60) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 58 |
| periodOffset: 59 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaration f |
| reference: <testLibrary>::@enum::A::@field::f |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::f |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F9 |
| constantInitializers |
| ConstructorFieldInitializer |
| fieldName: SimpleIdentifier |
| token: f @70 |
| element: <testLibrary>::@enum::A::@field::f |
| staticType: null |
| equals: = @72 |
| expression: IntegerLiteral |
| literal: 0 @74 |
| staticType: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable f |
| reference: <testLibrary>::@enum::A::@getter::f |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::f |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_add_withFieldFormalParameter() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v(0); |
| final int f; |
| } |
| |
| augment enum A {; |
| const A.named(this.f); |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <null> |
| argumentList: ArgumentList |
| leftParenthesis: ( @12 |
| arguments |
| IntegerLiteral |
| literal: 0 @13 |
| staticType: int |
| rightParenthesis: ) @14 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isFinal isOriginDeclaration f (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@enum::A::@field::f |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F8 isCompleteDeclaration isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::A::@getter::f |
| #F2 isAugmentation enum A (nameOffset:48) (firstTokenOffset:35) (offset:48) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| constructors |
| #F9 isCompleteDeclaration isConst isOriginDeclaration named (nameOffset:63) (firstTokenOffset:55) (offset:63) |
| element: <testLibrary>::@enum::A::@constructor::named |
| typeName: A |
| typeNameOffset: 61 |
| periodOffset: 62 |
| formalParameters |
| #F10 requiredPositional hasImplicitType isFinal isOriginDeclaration this.f (nameOffset:74) (firstTokenOffset:69) (offset:74) |
| element: <testLibrary>::@enum::A::@constructor::named::@formalParameter::f |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaration f |
| reference: <testLibrary>::@enum::A::@field::f |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::f |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::A::@constructor::named |
| firstFragment: #F9 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isFinal this.f |
| firstFragment: #F10 |
| type: int |
| field: <testLibrary>::@enum::A::@field::f |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable f |
| reference: <testLibrary>::@enum::A::@getter::f |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::f |
| '''); |
| } |
| |
| test_constructor_secondary_augmentation_chain_isCompleteDeclaration_factory() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| factory A(); |
| } |
| |
| augment enum A {; |
| augment factory A() => v; |
| } |
| |
| augment enum A {; |
| augment factory A(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isFactory isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:16) (offset:24) |
| element: <testLibrary>::@enum::A::@constructor::new |
| factoryKeywordOffset: 16 |
| typeName: A |
| typeNameOffset: 24 |
| nextFragment: #F6 |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:45) (firstTokenOffset:32) (offset:45) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F9 |
| constructors |
| #F6 isAugmentation isCompleteDeclaration isFactory isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:52) (offset:68) |
| element: <testLibrary>::@enum::A::@constructor::new |
| factoryKeywordOffset: 60 |
| typeName: A |
| typeNameOffset: 68 |
| nextFragment: #F10 |
| previousFragment: #F5 |
| #F9 isAugmentation enum A (nameOffset:94) (firstTokenOffset:81) (offset:94) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| constructors |
| #F10 isAugmentation isFactory isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:101) (offset:117) |
| element: <testLibrary>::@enum::A::@constructor::new |
| factoryKeywordOffset: 109 |
| typeName: A |
| typeNameOffset: 117 |
| previousFragment: #F6 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isFactory isOriginDeclaration new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_factory() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| factory E() => v; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isFactory isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:17) (offset:25) |
| element: <testLibrary>::@enum::E::@constructor::new |
| factoryKeywordOffset: 17 |
| typeName: E |
| typeNameOffset: 25 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isFactory isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_factory_named() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| factory E.named() => v; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isFactory isOriginDeclaration named (nameOffset:27) (firstTokenOffset:17) (offset:27) |
| element: <testLibrary>::@enum::E::@constructor::named |
| factoryKeywordOffset: 17 |
| typeName: E |
| typeNameOffset: 25 |
| periodOffset: 26 |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isFactory isOriginDeclaration named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_factoryHead_named() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| factory named() => v; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isFactory isOriginDeclaration named (nameOffset:25) (firstTokenOffset:17) (offset:25) |
| element: <testLibrary>::@enum::E::@constructor::named |
| factoryKeywordOffset: 17 |
| typeName: null |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isFactory isOriginDeclaration named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_factoryHead_unnamed() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v.named(); |
| |
| const E.named(); |
| factory() => v; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::E::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::E::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @18 |
| rightParenthesis: ) @19 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration named (nameOffset:33) (firstTokenOffset:25) (offset:33) |
| element: <testLibrary>::@enum::E::@constructor::named |
| typeName: E |
| typeNameOffset: 31 |
| periodOffset: 32 |
| #F5 isCompleteDeclaration isFactory isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:44) (offset:44) |
| element: <testLibrary>::@enum::E::@constructor::new |
| factoryKeywordOffset: 44 |
| typeName: null |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| isFactory isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_formalParameter_field_optionalNamed_withDefault() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final int x; |
| const E({this.x = 1 + 2}); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isFinal isOriginDeclaration x (nameOffset:27) (firstTokenOffset:27) (offset:27) |
| element: <testLibrary>::@enum::E::@field::x |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 38 |
| formalParameters |
| #F6 optionalNamed hasImplicitType isFinal isOriginDeclaration this.x (nameOffset:46) (firstTokenOffset:41) (offset:46) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| initializer: expression_2 |
| BinaryExpression |
| leftOperand: IntegerLiteral |
| literal: 1 @50 |
| staticType: int |
| operator: + @52 |
| rightOperand: IntegerLiteral |
| literal: 2 @54 |
| staticType: int |
| element: dart:core::@class::num::@method::+ |
| staticInvokeType: num Function(num) |
| staticType: int |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@enum::E::@getter::x |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::E::@getter::x |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 optionalNamed hasDefaultValue hasImplicitType isFinal this.x |
| firstFragment: #F6 |
| type: int |
| constantInitializer |
| fragment: #F6 |
| expression: expression_2 |
| field: <testLibrary>::@enum::E::@field::x |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::x |
| '''); |
| } |
| |
| test_constructor_secondary_formalParameter_field_requiredPositional_fieldImplicitType_formalImplicitType() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final x; |
| E(this.x); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType isFinal isOriginDeclaration x (nameOffset:23) (firstTokenOffset:23) (offset:23) |
| element: <testLibrary>::@enum::E::@field::x |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:28) (offset:28) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 28 |
| formalParameters |
| #F6 requiredPositional hasImplicitType isFinal isOriginDeclaration this.x (nameOffset:35) (firstTokenOffset:30) (offset:35) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::E::@getter::x |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F4 |
| type: dynamic |
| getter: <testLibrary>::@enum::E::@getter::x |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isFinal this.x |
| firstFragment: #F6 |
| type: dynamic |
| field: <testLibrary>::@enum::E::@field::x |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F9 |
| returnType: dynamic |
| variable: <testLibrary>::@enum::E::@field::x |
| '''); |
| } |
| |
| test_constructor_secondary_formalParameter_field_requiredPositional_fieldImplicitType_formalTyped() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final x; |
| E(int this.x); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType isFinal isOriginDeclaration x (nameOffset:23) (firstTokenOffset:23) (offset:23) |
| element: <testLibrary>::@enum::E::@field::x |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:28) (offset:28) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 28 |
| formalParameters |
| #F6 requiredPositional isFinal isOriginDeclaration this.x (nameOffset:39) (firstTokenOffset:30) (offset:39) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::E::@getter::x |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F4 |
| type: dynamic |
| getter: <testLibrary>::@enum::E::@getter::x |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isFinal this.x |
| firstFragment: #F6 |
| type: int |
| field: <testLibrary>::@enum::E::@field::x |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F9 |
| returnType: dynamic |
| variable: <testLibrary>::@enum::E::@field::x |
| '''); |
| } |
| |
| test_constructor_secondary_formalParameter_field_requiredPositional_fieldTyped_formalTyped() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final num x; |
| const E(int this.x); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isFinal isOriginDeclaration x (nameOffset:27) (firstTokenOffset:27) (offset:27) |
| element: <testLibrary>::@enum::E::@field::x |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 38 |
| formalParameters |
| #F6 requiredPositional isFinal isOriginDeclaration this.x (nameOffset:49) (firstTokenOffset:40) (offset:49) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@enum::E::@getter::x |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F4 |
| type: num |
| getter: <testLibrary>::@enum::E::@getter::x |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isFinal this.x |
| firstFragment: #F6 |
| type: int |
| field: <testLibrary>::@enum::E::@field::x |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F9 |
| returnType: num |
| variable: <testLibrary>::@enum::E::@field::x |
| '''); |
| } |
| |
| test_constructor_secondary_formalParameter_field_requiredPositional_functionTypedSuffix_withReturnType() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final x; |
| const E(int this.x(double a)); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType isFinal isOriginDeclaration x (nameOffset:23) (firstTokenOffset:23) (offset:23) |
| element: <testLibrary>::@enum::E::@field::x |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:28) (offset:34) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 34 |
| formalParameters |
| #F6 requiredPositional isFinal isOriginDeclaration this.x (nameOffset:45) (firstTokenOffset:36) (offset:45) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| parameters |
| #F7 requiredPositional isOriginDeclaration a (nameOffset:54) (firstTokenOffset:47) (offset:54) |
| element: a@54 |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::E::@getter::x |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F4 |
| type: dynamic |
| getter: <testLibrary>::@enum::E::@getter::x |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isFinal this.x |
| firstFragment: #F6 |
| type: int Function(double) |
| formalParameters |
| #E1 requiredPositional a |
| firstFragment: #F7 |
| type: double |
| field: <testLibrary>::@enum::E::@field::x |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F8 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F9 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F10 |
| returnType: dynamic |
| variable: <testLibrary>::@enum::E::@field::x |
| '''); |
| } |
| |
| test_constructor_secondary_formalParameter_field_requiredPositional_multipleMatchingFields() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final int x; |
| final String x; |
| const E(this.x); |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isFinal isOriginDeclaration x (nameOffset:27) (firstTokenOffset:27) (offset:27) |
| element: <testLibrary>::@enum::E::@field::x |
| #F5 isFinal isOriginDeclaration x (nameOffset:45) (firstTokenOffset:45) (offset:45) |
| element: <testLibrary>::@enum::E::@field::x#1 |
| constructors |
| #F6 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:50) (offset:56) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 56 |
| formalParameters |
| #F7 requiredPositional hasImplicitType isFinal isOriginDeclaration this.x (nameOffset:63) (firstTokenOffset:58) (offset:63) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@enum::E::@getter::x |
| #F11 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:45) |
| element: <testLibrary>::@enum::E::@getter::x#1 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::E::@getter::x |
| isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x#1 |
| firstFragment: #F5 |
| type: String |
| getter: <testLibrary>::@enum::E::@getter::x#1 |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isFinal this.x |
| firstFragment: #F7 |
| type: int |
| field: <testLibrary>::@enum::E::@field::x |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F8 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F9 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::x |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x#1 |
| firstFragment: #F11 |
| returnType: String |
| variable: <testLibrary>::@enum::E::@field::x#1 |
| '''); |
| } |
| |
| test_constructor_secondary_formalParameter_field_requiredPositional_noMatchingField() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| const E(this.x); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:17) (offset:23) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 23 |
| formalParameters |
| #F5 requiredPositional hasImplicitType isFinal isOriginDeclaration this.x (nameOffset:30) (firstTokenOffset:25) (offset:30) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::x |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isFinal this.x |
| firstFragment: #F5 |
| type: dynamic |
| field: <null> |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_initializers_assertInvocation_field() async { |
| var library = await buildLibrary(r''' |
| enum E<T> { |
| v; |
| |
| final int x; |
| const E(T? a) : assert(a is T), x = 0; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| #F5 isFinal isOriginDeclaration x (nameOffset:30) (firstTokenOffset:30) (offset:30) |
| element: <testLibrary>::@enum::E::@field::x |
| constructors |
| #F6 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:35) (offset:41) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 41 |
| formalParameters |
| #F7 requiredPositional isOriginDeclaration a (nameOffset:46) (firstTokenOffset:43) (offset:46) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::a |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:30) |
| element: <testLibrary>::@enum::E::@getter::x |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F3 |
| type: E<dynamic> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isFinal isOriginDeclaration x |
| reference: <testLibrary>::@enum::E::@field::x |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@enum::E::@getter::x |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional a |
| firstFragment: #F7 |
| type: T? |
| constantInitializers |
| AssertInitializer |
| assertKeyword: assert @51 |
| leftParenthesis: ( @57 |
| condition: IsExpression |
| expression: SimpleIdentifier |
| token: a @58 |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::a |
| staticType: T? |
| isOperator: is @60 |
| type: NamedType |
| name: T @63 |
| element: #E0 T |
| type: T |
| staticType: bool |
| rightParenthesis: ) @64 |
| ConstructorFieldInitializer |
| fieldName: SimpleIdentifier |
| token: x @67 |
| element: <testLibrary>::@enum::E::@field::x |
| staticType: null |
| equals: = @69 |
| expression: IntegerLiteral |
| literal: 0 @71 |
| staticType: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F8 |
| returnType: E<dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F9 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable x |
| reference: <testLibrary>::@enum::E::@getter::x |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::x |
| '''); |
| } |
| |
| test_constructor_secondary_metadata() async { |
| var library = await buildLibrary(r''' |
| const a = 42; |
| |
| enum E { |
| v; |
| |
| @a |
| const E(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:20) (firstTokenOffset:15) (offset:20) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:32) (offset:43) |
| element: <testLibrary>::@enum::E::@constructor::new |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: a @33 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| typeName: E |
| typeNameOffset: 43 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::values |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic a (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::a |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 42 @10 |
| staticType: int |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::a |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: a @33 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| topLevelVariables |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F7 |
| type: int |
| constantInitializer |
| fragment: #F7 |
| expression: expression_2 |
| getter: <testLibrary>::@getter::a |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::a |
| '''); |
| } |
| |
| test_constructor_secondary_named() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v.named(42); |
| |
| const E.named(int a); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::E::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::E::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @18 |
| arguments |
| IntegerLiteral |
| literal: 42 @19 |
| staticType: int |
| rightParenthesis: ) @21 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration named (nameOffset:35) (firstTokenOffset:27) (offset:35) |
| element: <testLibrary>::@enum::E::@constructor::named |
| typeName: E |
| typeNameOffset: 33 |
| periodOffset: 34 |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration a (nameOffset:45) (firstTokenOffset:41) (offset:45) |
| element: <testLibrary>::@enum::E::@constructor::named::@formalParameter::a |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F5 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_newHead_named() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v.named(); |
| |
| new named(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::E::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::E::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @18 |
| rightParenthesis: ) @19 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration named (nameOffset:29) (firstTokenOffset:25) (offset:29) |
| element: <testLibrary>::@enum::E::@constructor::named |
| newKeywordOffset: 25 |
| typeName: null |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_newHead_named_const() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v.named(); |
| |
| const new named(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::E::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::E::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @18 |
| rightParenthesis: ) @19 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration named (nameOffset:35) (firstTokenOffset:25) (offset:35) |
| element: <testLibrary>::@enum::E::@constructor::named |
| newKeywordOffset: 31 |
| typeName: null |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_newHead_unnamed() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| new(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:17) (offset:17) |
| element: <testLibrary>::@enum::E::@constructor::new |
| newKeywordOffset: 17 |
| typeName: null |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_newHead_unnamed_const() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| const new(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:17) (offset:17) |
| element: <testLibrary>::@enum::E::@constructor::new |
| newKeywordOffset: 23 |
| typeName: null |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_typeName_named_language310() async { |
| var library = await buildLibrary(r''' |
| // @dart = 3.10 |
| enum E { |
| v.named(); |
| |
| E.named(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:27) (firstTokenOffset:27) (offset:27) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| period: . @0 |
| name: SimpleIdentifier |
| token: named @-1 |
| element: <testLibrary>::@enum::E::@constructor::named |
| staticType: null |
| element: <testLibrary>::@enum::E::@constructor::named |
| argumentList: ArgumentList |
| leftParenthesis: ( @34 |
| rightParenthesis: ) @35 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isOriginDeclaration named (nameOffset:43) (firstTokenOffset:41) (offset:43) |
| element: <testLibrary>::@enum::E::@constructor::named |
| typeName: E |
| typeNameOffset: 41 |
| periodOffset: 42 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isOriginDeclaration named |
| reference: <testLibrary>::@enum::E::@constructor::named |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_typeName_unnamed_language310() async { |
| var library = await buildLibrary(r''' |
| // @dart = 3.10 |
| enum E { |
| v; |
| |
| E(); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:27) (firstTokenOffset:27) (offset:27) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:33) (offset:33) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 33 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_constructor_secondary_unnamed() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v(42); |
| |
| const E(int a); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @12 |
| arguments |
| IntegerLiteral |
| literal: 42 @13 |
| staticType: int |
| rightParenthesis: ) @15 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:21) (offset:27) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 27 |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration a (nameOffset:33) (firstTokenOffset:29) (offset:33) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::a |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F5 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_augmentation_chain_introductoryDeclaration_afterAugmentation() async { |
| var library = await buildLibrary(r''' |
| augment enum A {; |
| void foo1() {} |
| } |
| |
| enum A { |
| v; |
| void foo2() {} |
| } |
| |
| augment enum A {; |
| void foo3() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 isAugmentation enum A (nameOffset:13) (firstTokenOffset:0) (offset:13) |
| element: <testLibrary>::@enum::A |
| fields |
| #F2 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F3 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F5 isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:25) (firstTokenOffset:20) (offset:25) |
| element: <testLibrary>::@enum::A::@method::foo1 |
| #F6 enum A (nameOffset:43) (firstTokenOffset:38) (offset:43) |
| element: <testLibrary>::@enum::A#1 |
| nextFragment: #F7 |
| fields |
| #F8 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:49) (firstTokenOffset:49) (offset:49) |
| element: <testLibrary>::@enum::A#1::@field::v |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F9 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@enum::A#1::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A#1::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F10 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@enum::A#1::@constructor::new |
| typeName: A |
| getters |
| #F11 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@enum::A#1::@getter::v |
| #F12 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@enum::A#1::@getter::values |
| methods |
| #F13 isCompleteDeclaration isOriginDeclaration foo2 (nameOffset:59) (firstTokenOffset:54) (offset:59) |
| element: <testLibrary>::@enum::A#1::@method::foo2 |
| #F7 isAugmentation enum A (nameOffset:85) (firstTokenOffset:72) (offset:85) |
| element: <testLibrary>::@enum::A#1 |
| previousFragment: #F6 |
| methods |
| #F14 isCompleteDeclaration isOriginDeclaration foo3 (nameOffset:97) (firstTokenOffset:92) (offset:97) |
| element: <testLibrary>::@enum::A#1::@method::foo3 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F2 |
| type: List<A> |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F3 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F4 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@method::foo1 |
| firstFragment: #F5 |
| returnType: void |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A#1 |
| firstFragment: #F6 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A#1::@field::v |
| firstFragment: #F8 |
| type: A |
| constantInitializer |
| fragment: #F8 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A#1::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A#1::@field::values |
| firstFragment: #F9 |
| type: List<A> |
| constantInitializer |
| fragment: #F9 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A#1::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A#1::@constructor::new |
| firstFragment: #F10 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A#1::@getter::v |
| firstFragment: #F11 |
| returnType: A |
| variable: <testLibrary>::@enum::A#1::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A#1::@getter::values |
| firstFragment: #F12 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A#1::@field::values |
| methods |
| isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A#1::@method::foo2 |
| firstFragment: #F13 |
| returnType: void |
| isOriginDeclaration foo3 |
| reference: <testLibrary>::@enum::A#1::@method::foo3 |
| firstFragment: #F14 |
| returnType: void |
| '''); |
| } |
| |
| test_enum_augmentation_chain_noIntroductoryDeclaration() async { |
| var library = await buildLibrary(r''' |
| augment enum A {; |
| void foo1() {} |
| } |
| |
| augment enum A {; |
| void foo2() {} |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 isAugmentation enum A (nameOffset:13) (firstTokenOffset:0) (offset:13) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F6 isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:25) (firstTokenOffset:20) (offset:25) |
| element: <testLibrary>::@enum::A::@method::foo1 |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| methods |
| #F7 isCompleteDeclaration isOriginDeclaration foo2 (nameOffset:63) (firstTokenOffset:58) (offset:63) |
| element: <testLibrary>::@enum::A::@method::foo2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F3 |
| type: List<A> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F5 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@method::foo1 |
| firstFragment: #F6 |
| returnType: void |
| isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@method::foo2 |
| firstFragment: #F7 |
| returnType: void |
| '''); |
| } |
| |
| test_enum_augmentation_chain_partTreePreorder() async { |
| newFile('$testPackageLibPath/a1.dart', r''' |
| part of 'test.dart'; |
| part 'a11.dart'; |
| part 'a12.dart'; |
| augment enum A {} |
| '''); |
| |
| newFile('$testPackageLibPath/a11.dart', r''' |
| part of 'a1.dart'; |
| augment enum A {} |
| '''); |
| |
| newFile('$testPackageLibPath/a12.dart', r''' |
| part of 'a1.dart'; |
| augment enum A {} |
| '''); |
| |
| newFile('$testPackageLibPath/a2.dart', r''' |
| part of 'test.dart'; |
| part 'a21.dart'; |
| part 'a22.dart'; |
| augment enum A {} |
| '''); |
| |
| newFile('$testPackageLibPath/a21.dart', r''' |
| part of 'a2.dart'; |
| augment enum A {} |
| '''); |
| |
| newFile('$testPackageLibPath/a22.dart', r''' |
| part of 'a2.dart'; |
| augment enum A {} |
| '''); |
| |
| var library = await buildLibrary(r''' |
| part 'a1.dart'; |
| part 'a2.dart'; |
| |
| enum A { v } |
| '''); |
| |
| configuration |
| ..withConstantInitializers = false |
| ..withExportScope = true; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| nextFragment: #F1 |
| parts |
| part_0 |
| uri: package:test/a1.dart |
| partKeywordOffset: 0 |
| unit: #F1 |
| part_1 |
| uri: package:test/a2.dart |
| partKeywordOffset: 16 |
| unit: #F2 |
| enums |
| #F3 enum A (nameOffset:38) (firstTokenOffset:33) (offset:38) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:42) (firstTokenOffset:42) (offset:42) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F1 package:test/a1.dart |
| element: <testLibrary> |
| enclosingFragment: #F0 |
| previousFragment: #F0 |
| nextFragment: #F10 |
| parts |
| part_2 |
| uri: package:test/a11.dart |
| partKeywordOffset: 21 |
| unit: #F10 |
| part_3 |
| uri: package:test/a12.dart |
| partKeywordOffset: 38 |
| unit: #F11 |
| enums |
| #F4 isAugmentation enum A (nameOffset:68) (firstTokenOffset:55) (offset:68) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F3 |
| nextFragment: #F12 |
| #F10 package:test/a11.dart |
| element: <testLibrary> |
| enclosingFragment: #F1 |
| previousFragment: #F1 |
| nextFragment: #F11 |
| enums |
| #F12 isAugmentation enum A (nameOffset:32) (firstTokenOffset:19) (offset:32) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F4 |
| nextFragment: #F13 |
| #F11 package:test/a12.dart |
| element: <testLibrary> |
| enclosingFragment: #F1 |
| previousFragment: #F10 |
| nextFragment: #F2 |
| enums |
| #F13 isAugmentation enum A (nameOffset:32) (firstTokenOffset:19) (offset:32) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F12 |
| nextFragment: #F14 |
| #F2 package:test/a2.dart |
| element: <testLibrary> |
| enclosingFragment: #F0 |
| previousFragment: #F11 |
| nextFragment: #F15 |
| parts |
| part_4 |
| uri: package:test/a21.dart |
| partKeywordOffset: 21 |
| unit: #F15 |
| part_5 |
| uri: package:test/a22.dart |
| partKeywordOffset: 38 |
| unit: #F16 |
| enums |
| #F14 isAugmentation enum A (nameOffset:68) (firstTokenOffset:55) (offset:68) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F13 |
| nextFragment: #F17 |
| #F15 package:test/a21.dart |
| element: <testLibrary> |
| enclosingFragment: #F2 |
| previousFragment: #F2 |
| nextFragment: #F16 |
| enums |
| #F17 isAugmentation enum A (nameOffset:32) (firstTokenOffset:19) (offset:32) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F14 |
| nextFragment: #F18 |
| #F16 package:test/a22.dart |
| element: <testLibrary> |
| enclosingFragment: #F2 |
| previousFragment: #F15 |
| enums |
| #F18 isAugmentation enum A (nameOffset:32) (firstTokenOffset:19) (offset:32) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F17 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| exportEntries |
| declared <testLibrary>::@enum::A |
| exportNamespace |
| A: <testLibrary>::@enum::A |
| '''); |
| } |
| |
| test_enum_augmentation_sameName_class_class() async { |
| var library = await buildLibrary(r''' |
| enum A {v} |
| |
| augment class A {} |
| |
| augment class A {} |
| '''); |
| |
| configuration |
| ..withConstantInitializers = false |
| ..withConstructors = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAugmentation class A (nameOffset:26) (firstTokenOffset:12) (offset:26) |
| element: <testLibrary>::@class::A |
| nextFragment: #F2 |
| #F2 isAugmentation class A (nameOffset:46) (firstTokenOffset:32) (offset:46) |
| element: <testLibrary>::@class::A |
| previousFragment: #F1 |
| enums |
| #F3 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:8) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| previousFragmentOfDifferentKind: #F3 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F4 |
| type: A |
| constantInitializer |
| fragment: #F4 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F5 |
| type: List<A> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_enum_augmentation_sameName_class_enum() async { |
| var library = await buildLibrary(r''' |
| enum A {v} |
| |
| augment class A {} |
| augment enum A {} |
| '''); |
| |
| configuration |
| ..withConstantInitializers = false |
| ..withConstructors = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAugmentation class A (nameOffset:26) (firstTokenOffset:12) (offset:26) |
| element: <testLibrary>::@class::A |
| enums |
| #F2 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:8) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F7 isAugmentation enum A (nameOffset:44) (firstTokenOffset:31) (offset:44) |
| element: <testLibrary>::@enum::A#1 |
| fields |
| #F8 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@enum::A#1::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<A> |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@enum::A#1::@getter::values |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| previousFragmentOfDifferentKind: #F2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A#1 |
| firstFragment: #F7 |
| previousFragmentOfDifferentKind: #F1 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A#1::@field::values |
| firstFragment: #F8 |
| type: List<A> |
| constantInitializer |
| fragment: #F8 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A#1::@getter::values |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A#1::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A#1::@field::values |
| '''); |
| } |
| |
| test_enum_codeRange() async { |
| var library = await buildLibrary(r''' |
| enum E { aaa, bbb, ccc } |
| '''); |
| configuration.withCodeRanges = true; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic aaa (nameOffset:9) (firstTokenOffset:9) (offset:9) |
| element: <testLibrary>::@enum::E::@field::aaa |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic bbb (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::E::@field::bbb |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic ccc (nameOffset:19) (firstTokenOffset:19) (offset:19) |
| element: <testLibrary>::@enum::E::@field::ccc |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_3 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: aaa @-1 |
| element: <testLibrary>::@enum::E::@getter::aaa |
| staticType: E |
| SimpleIdentifier |
| token: bbb @-1 |
| element: <testLibrary>::@enum::E::@getter::bbb |
| staticType: E |
| SimpleIdentifier |
| token: ccc @-1 |
| element: <testLibrary>::@enum::E::@getter::ccc |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic aaa (nameOffset:<null>) (firstTokenOffset:<null>) (offset:9) |
| element: <testLibrary>::@enum::E::@getter::aaa |
| #F8 isCompleteDeclaration isOriginVariable isStatic bbb (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::E::@getter::bbb |
| #F9 isCompleteDeclaration isOriginVariable isStatic ccc (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19) |
| element: <testLibrary>::@enum::E::@getter::ccc |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer aaa |
| reference: <testLibrary>::@enum::E::@field::aaa |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::aaa |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer bbb |
| reference: <testLibrary>::@enum::E::@field::bbb |
| firstFragment: #F3 |
| type: E |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::bbb |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer ccc |
| reference: <testLibrary>::@enum::E::@field::ccc |
| firstFragment: #F4 |
| type: E |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::ccc |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic aaa |
| reference: <testLibrary>::@enum::E::@getter::aaa |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::aaa |
| isOriginVariable isStatic bbb |
| reference: <testLibrary>::@enum::E::@getter::bbb |
| firstFragment: #F8 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::bbb |
| isOriginVariable isStatic ccc |
| reference: <testLibrary>::@enum::E::@getter::ccc |
| firstFragment: #F9 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::ccc |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F10 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_documented() async { |
| var library = await buildLibrary(r''' |
| // Extra comment so doc comment offset != 0 |
| /** |
| * Docs |
| */ |
| enum E { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:65) (firstTokenOffset:44) (offset:65) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:69) (firstTokenOffset:69) (offset:69) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:65) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:65) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:65) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| documentationComment: /**\n * Docs\n */ |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_emptyBody() async { |
| var library = await buildLibrary(r''' |
| enum E; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F3 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F4 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F2 |
| type: List<E> |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F3 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F4 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_emptyBody_language310() async { |
| var library = await buildLibrary(r''' |
| // @dart = 3.10 |
| enum E; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F3 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F4 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F2 |
| type: List<E> |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F3 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F4 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_error_extendsEnum() async { |
| var library = await buildLibrary(r''' |
| enum E { a, b, c } |
| |
| class M {} |
| |
| class A extends E { |
| foo() {} |
| } |
| |
| class B implements E, M { |
| foo() {} |
| } |
| |
| class C extends Object with E, M { |
| foo() {} |
| } |
| |
| class D = Object with M, E; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class M (nameOffset:26) (firstTokenOffset:20) (offset:26) |
| element: <testLibrary>::@class::M |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::M::@constructor::new |
| typeName: M |
| #F3 hasExtendsClause class A (nameOffset:38) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@class::A |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo (nameOffset:54) (firstTokenOffset:54) (offset:54) |
| element: <testLibrary>::@class::A::@method::foo |
| #F6 class B (nameOffset:72) (firstTokenOffset:66) (offset:72) |
| element: <testLibrary>::@class::B |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F8 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo (nameOffset:94) (firstTokenOffset:94) (offset:94) |
| element: <testLibrary>::@class::B::@method::foo |
| #F9 hasExtendsClause class C (nameOffset:112) (firstTokenOffset:106) (offset:112) |
| element: <testLibrary>::@class::C |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:112) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F11 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo (nameOffset:143) (firstTokenOffset:143) (offset:143) |
| element: <testLibrary>::@class::C::@method::foo |
| #F12 isMixinApplication class D (nameOffset:161) (firstTokenOffset:155) (offset:161) |
| element: <testLibrary>::@class::D |
| constructors |
| #F13 isConst isOriginMixinApplication new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:161) |
| element: <testLibrary>::@class::D::@constructor::new |
| typeName: D |
| enums |
| #F14 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F15 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic a (nameOffset:9) (firstTokenOffset:9) (offset:9) |
| element: <testLibrary>::@enum::E::@field::a |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F16 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic b (nameOffset:12) (firstTokenOffset:12) (offset:12) |
| element: <testLibrary>::@enum::E::@field::b |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F17 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic c (nameOffset:15) (firstTokenOffset:15) (offset:15) |
| element: <testLibrary>::@enum::E::@field::c |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F18 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_3 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: a @-1 |
| element: <testLibrary>::@enum::E::@getter::a |
| staticType: E |
| SimpleIdentifier |
| token: b @-1 |
| element: <testLibrary>::@enum::E::@getter::b |
| staticType: E |
| SimpleIdentifier |
| token: c @-1 |
| element: <testLibrary>::@enum::E::@getter::c |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F19 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F20 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:9) |
| element: <testLibrary>::@enum::E::@getter::a |
| #F21 isCompleteDeclaration isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:12) |
| element: <testLibrary>::@enum::E::@getter::b |
| #F22 isCompleteDeclaration isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@enum::E::@getter::c |
| #F23 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| classes |
| isSimplyBounded class M |
| reference: <testLibrary>::@class::M |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::M::@constructor::new |
| firstFragment: #F2 |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F3 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::A::@method::foo |
| firstFragment: #F5 |
| returnType: dynamic |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F6 |
| interfaces |
| M |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::B::@method::foo |
| firstFragment: #F8 |
| returnType: dynamic |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| supertype: Object |
| mixins |
| M |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F10 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::C::@method::foo |
| firstFragment: #F11 |
| returnType: dynamic |
| isMixinApplication isSimplyBounded class D |
| reference: <testLibrary>::@class::D |
| firstFragment: #F12 |
| supertype: Object |
| mixins |
| M |
| constructors |
| isConst isOriginMixinApplication new |
| reference: <testLibrary>::@class::D::@constructor::new |
| firstFragment: #F13 |
| constantInitializers |
| SuperConstructorInvocation |
| superKeyword: super @0 |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| element: dart:core::@class::Object::@constructor::new |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F14 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@enum::E::@field::a |
| firstFragment: #F15 |
| type: E |
| constantInitializer |
| fragment: #F15 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::a |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer b |
| reference: <testLibrary>::@enum::E::@field::b |
| firstFragment: #F16 |
| type: E |
| constantInitializer |
| fragment: #F16 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::b |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer c |
| reference: <testLibrary>::@enum::E::@field::c |
| firstFragment: #F17 |
| type: E |
| constantInitializer |
| fragment: #F17 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::c |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F18 |
| type: List<E> |
| constantInitializer |
| fragment: #F18 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F19 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@enum::E::@getter::a |
| firstFragment: #F20 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@enum::E::@getter::b |
| firstFragment: #F21 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::b |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@enum::E::@getter::c |
| firstFragment: #F22 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::c |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F23 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_interfaces() async { |
| var library = await buildLibrary(r''' |
| class I {} |
| |
| enum E implements I { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::I |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::I::@constructor::new |
| typeName: I |
| enums |
| #F3 enum E (nameOffset:17) (firstTokenOffset:12) (offset:17) |
| element: <testLibrary>::@enum::E |
| fields |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:34) (firstTokenOffset:34) (offset:34) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:34) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@enum::E::@getter::values |
| classes |
| isSimplyBounded class I |
| reference: <testLibrary>::@class::I |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I::@constructor::new |
| firstFragment: #F2 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F3 |
| supertype: Enum |
| interfaces |
| I |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F4 |
| type: E |
| constantInitializer |
| fragment: #F4 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_interfaces_augmentation_add() async { |
| var library = await buildLibrary(r''' |
| enum A implements I1 { |
| v |
| } |
| class I1 {} |
| |
| augment enum A implements I2 {} |
| class I2 {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I1 (nameOffset:35) (firstTokenOffset:29) (offset:35) |
| element: <testLibrary>::@class::I1 |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:35) |
| element: <testLibrary>::@class::I1::@constructor::new |
| typeName: I1 |
| #F3 class I2 (nameOffset:80) (firstTokenOffset:74) (offset:80) |
| element: <testLibrary>::@class::I2 |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@class::I2::@constructor::new |
| typeName: I2 |
| enums |
| #F5 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F6 |
| fields |
| #F7 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F8 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F9 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F10 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F11 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F6 isAugmentation enum A (nameOffset:55) (firstTokenOffset:42) (offset:55) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F5 |
| classes |
| isSimplyBounded class I1 |
| reference: <testLibrary>::@class::I1 |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I1::@constructor::new |
| firstFragment: #F2 |
| isSimplyBounded class I2 |
| reference: <testLibrary>::@class::I2 |
| firstFragment: #F3 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I2::@constructor::new |
| firstFragment: #F4 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F5 |
| supertype: Enum |
| interfaces |
| I1 |
| I2 |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F7 |
| type: A |
| constantInitializer |
| fragment: #F7 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F8 |
| type: List<A> |
| constantInitializer |
| fragment: #F8 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F9 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F10 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F11 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_enum_interfaces_augmentation_add_chain() async { |
| var library = await buildLibrary(r''' |
| enum A implements I1 { |
| v |
| } |
| class I1 {} |
| |
| augment enum A implements I2 {} |
| class I2 {} |
| |
| augment enum A implements I3 {} |
| class I3 {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I1 (nameOffset:35) (firstTokenOffset:29) (offset:35) |
| element: <testLibrary>::@class::I1 |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:35) |
| element: <testLibrary>::@class::I1::@constructor::new |
| typeName: I1 |
| #F3 class I2 (nameOffset:80) (firstTokenOffset:74) (offset:80) |
| element: <testLibrary>::@class::I2 |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@class::I2::@constructor::new |
| typeName: I2 |
| #F5 class I3 (nameOffset:125) (firstTokenOffset:119) (offset:125) |
| element: <testLibrary>::@class::I3 |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:125) |
| element: <testLibrary>::@class::I3::@constructor::new |
| typeName: I3 |
| enums |
| #F7 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F8 |
| fields |
| #F9 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F10 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F11 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F12 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F13 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F8 isAugmentation enum A (nameOffset:55) (firstTokenOffset:42) (offset:55) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F7 |
| nextFragment: #F14 |
| #F14 isAugmentation enum A (nameOffset:100) (firstTokenOffset:87) (offset:100) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F8 |
| classes |
| isSimplyBounded class I1 |
| reference: <testLibrary>::@class::I1 |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I1::@constructor::new |
| firstFragment: #F2 |
| isSimplyBounded class I2 |
| reference: <testLibrary>::@class::I2 |
| firstFragment: #F3 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I2::@constructor::new |
| firstFragment: #F4 |
| isSimplyBounded class I3 |
| reference: <testLibrary>::@class::I3 |
| firstFragment: #F5 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I3::@constructor::new |
| firstFragment: #F6 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F7 |
| supertype: Enum |
| interfaces |
| I1 |
| I2 |
| I3 |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F9 |
| type: A |
| constantInitializer |
| fragment: #F9 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F10 |
| type: List<A> |
| constantInitializer |
| fragment: #F10 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F11 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F12 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F13 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_enum_interfaces_augmentation_add_generic() async { |
| var library = await buildLibrary(r''' |
| enum A<T> implements I1 { |
| v<int>() |
| } |
| class I1 {} |
| |
| augment enum A<T> implements I2<T> {} |
| class I2<E> {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I1 (nameOffset:45) (firstTokenOffset:39) (offset:45) |
| element: <testLibrary>::@class::I1 |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:45) |
| element: <testLibrary>::@class::I1::@constructor::new |
| typeName: I1 |
| #F3 class I2 (nameOffset:96) (firstTokenOffset:90) (offset:96) |
| element: <testLibrary>::@class::I2 |
| typeParameters |
| #F4 E (nameOffset:99) (firstTokenOffset:99) (offset:99) |
| element: #E0 E |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:96) |
| element: <testLibrary>::@class::I2::@constructor::new |
| typeName: I2 |
| enums |
| #F6 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F7 |
| typeParameters |
| #F8 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E1 T |
| nextFragment: #F9 |
| fields |
| #F10 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:28) (firstTokenOffset:28) (offset:28) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @29 |
| arguments |
| NamedType |
| name: int @30 |
| element: dart:core::@class::int |
| type: int |
| rightBracket: > @33 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @34 |
| rightParenthesis: ) @35 |
| staticType: A<int> |
| #F11 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| constructors |
| #F12 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F13 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F14 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F7 isAugmentation enum A (nameOffset:65) (firstTokenOffset:52) (offset:65) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F6 |
| typeParameters |
| #F9 T (nameOffset:67) (firstTokenOffset:67) (offset:67) |
| element: #E1 T |
| previousFragment: #F8 |
| classes |
| isSimplyBounded class I1 |
| reference: <testLibrary>::@class::I1 |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I1::@constructor::new |
| firstFragment: #F2 |
| isSimplyBounded class I2 |
| reference: <testLibrary>::@class::I2 |
| firstFragment: #F3 |
| typeParameters |
| #E0 E |
| firstFragment: #F4 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I2::@constructor::new |
| firstFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F6 |
| typeParameters |
| #E1 T |
| firstFragment: #F8 |
| supertype: Enum |
| interfaces |
| I1 |
| I2<T> |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F10 |
| type: A<int> |
| constantInitializer |
| fragment: #F10 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F11 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F11 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F12 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F13 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F14 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_enum_interfaces_augmentation_add_generic_mismatch() async { |
| var library = await buildLibrary(r''' |
| enum A<T> implements I1 { |
| v |
| } |
| class I1 {} |
| |
| augment enum A<T, U> implements I2<T> {} |
| class I2<E> {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I1 (nameOffset:38) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@class::I1 |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@class::I1::@constructor::new |
| typeName: I1 |
| #F3 class I2 (nameOffset:92) (firstTokenOffset:86) (offset:92) |
| element: <testLibrary>::@class::I2 |
| typeParameters |
| #F4 E (nameOffset:95) (firstTokenOffset:95) (offset:95) |
| element: #E0 E |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@class::I2::@constructor::new |
| typeName: I2 |
| enums |
| #F6 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F7 |
| typeParameters |
| #F8 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E1 T |
| nextFragment: #F9 |
| #F10 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: #E2 U |
| nextFragment: #F11 |
| fields |
| #F12 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:28) (firstTokenOffset:28) (offset:28) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A<dynamic, dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: dynamic, U: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A<dynamic, dynamic> |
| #F13 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<dynamic, dynamic> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic, dynamic>> |
| constructors |
| #F14 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F15 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F16 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F7 isAugmentation enum A (nameOffset:58) (firstTokenOffset:45) (offset:58) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F6 |
| typeParameters |
| #F9 T (nameOffset:60) (firstTokenOffset:60) (offset:60) |
| element: #E1 T |
| previousFragment: #F8 |
| #F11 U (nameOffset:63) (firstTokenOffset:63) (offset:63) |
| element: #E2 U |
| previousFragment: #F10 |
| classes |
| isSimplyBounded class I1 |
| reference: <testLibrary>::@class::I1 |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I1::@constructor::new |
| firstFragment: #F2 |
| isSimplyBounded class I2 |
| reference: <testLibrary>::@class::I2 |
| firstFragment: #F3 |
| typeParameters |
| #E0 E |
| firstFragment: #F4 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I2::@constructor::new |
| firstFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F6 |
| typeParameters |
| #E1 T |
| firstFragment: #F8 |
| #E2 U |
| firstFragment: #F10 |
| supertype: Enum |
| interfaces |
| I1 |
| I2<T> |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F12 |
| type: A<dynamic, dynamic> |
| constantInitializer |
| fragment: #F12 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F13 |
| type: List<A<dynamic, dynamic>> |
| constantInitializer |
| fragment: #F13 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F14 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F15 |
| returnType: A<dynamic, dynamic> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F16 |
| returnType: List<A<dynamic, dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_enum_interfaces_extensionType() async { |
| var library = await buildLibrary(r''' |
| class A {} |
| |
| extension type B(int it) {} |
| |
| class C {} |
| |
| enum E implements A, B, C { v } |
| '''); |
| configuration |
| ..withConstructors = false |
| ..withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| #F2 class C (nameOffset:47) (firstTokenOffset:41) (offset:47) |
| element: <testLibrary>::@class::C |
| enums |
| #F3 enum E (nameOffset:58) (firstTokenOffset:53) (offset:58) |
| element: <testLibrary>::@enum::E |
| fields |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:81) (firstTokenOffset:81) (offset:81) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:81) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58) |
| element: <testLibrary>::@enum::E::@getter::values |
| extensionTypes |
| #F8 extension type B (nameOffset:27) (firstTokenOffset:12) (offset:27) |
| element: <testLibrary>::@extensionType::B |
| fields |
| #F9 isFinal isOriginDeclaringFormalParameter it (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@extensionType::B::@field::it |
| getters |
| #F10 isCompleteDeclaration isOriginVariable it (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@extensionType::B::@getter::it |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F2 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F3 |
| supertype: Enum |
| interfaces |
| A |
| C |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F4 |
| type: E |
| constantInitializer |
| fragment: #F4 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| extensionTypes |
| isSimplyBounded extension type B |
| reference: <testLibrary>::@extensionType::B |
| firstFragment: #F8 |
| representation: <testLibrary>::@extensionType::B::@field::it |
| primaryConstructor: <testLibrary>::@extensionType::B::@constructor::new |
| typeErasure: int |
| fields |
| isFinal isOriginDeclaringFormalParameter it |
| reference: <testLibrary>::@extensionType::B::@field::it |
| firstFragment: #F9 |
| type: int |
| getter: <testLibrary>::@extensionType::B::@getter::it |
| declaringFormalParameter: <testLibrary>::@extensionType::B::@constructor::new::@formalParameter::it |
| getters |
| isExtensionTypeMember isOriginVariable it |
| reference: <testLibrary>::@extensionType::B::@getter::it |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@extensionType::B::@field::it |
| '''); |
| } |
| |
| test_enum_interfaces_generic() async { |
| var library = await buildLibrary(r''' |
| class I<T> {} |
| |
| enum E<U> implements I<U> { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::I |
| typeParameters |
| #F2 T (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: #E0 T |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::I::@constructor::new |
| typeName: I |
| enums |
| #F4 enum E (nameOffset:20) (firstTokenOffset:15) (offset:20) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F5 U (nameOffset:22) (firstTokenOffset:22) (offset:22) |
| element: #E1 U |
| fields |
| #F6 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:43) (firstTokenOffset:43) (offset:43) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {U: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic> |
| #F7 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F8 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::values |
| classes |
| isSimplyBounded class I |
| reference: <testLibrary>::@class::I |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I::@constructor::new |
| firstFragment: #F3 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F4 |
| typeParameters |
| #E1 U |
| firstFragment: #F5 |
| supertype: Enum |
| interfaces |
| I<U> |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F6 |
| type: E<dynamic> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F7 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F8 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F9 |
| returnType: E<dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F10 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_interfaces_unresolved() async { |
| var library = await buildLibrary(r''' |
| class X {} |
| |
| class Z {} |
| |
| enum E implements X, Y, Z { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class X (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::X |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::X::@constructor::new |
| typeName: X |
| #F3 class Z (nameOffset:18) (firstTokenOffset:12) (offset:18) |
| element: <testLibrary>::@class::Z |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@class::Z::@constructor::new |
| typeName: Z |
| enums |
| #F5 enum E (nameOffset:29) (firstTokenOffset:24) (offset:29) |
| element: <testLibrary>::@enum::E |
| fields |
| #F6 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:52) (firstTokenOffset:52) (offset:52) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F7 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F8 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:52) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::E::@getter::values |
| classes |
| isSimplyBounded class X |
| reference: <testLibrary>::@class::X |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::X::@constructor::new |
| firstFragment: #F2 |
| isSimplyBounded class Z |
| reference: <testLibrary>::@class::Z |
| firstFragment: #F3 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::Z::@constructor::new |
| firstFragment: #F4 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F5 |
| supertype: Enum |
| interfaces |
| X |
| Z |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F6 |
| type: E |
| constantInitializer |
| fragment: #F6 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F7 |
| type: List<E> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F8 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F9 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F10 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_lazy_all_constructors() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v.foo(); |
| |
| const E.foo(); |
| } |
| '''); |
| |
| var constructors = library.getEnum('E')!.constructors; |
| expect(constructors, hasLength(1)); |
| } |
| |
| test_enum_lazy_all_fields() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final foo = 42; |
| } |
| '''); |
| |
| var fields = library.getEnum('E')!.fields; |
| expect(fields, hasLength(3)); |
| } |
| |
| test_enum_lazy_all_getters() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| int get foo => 0; |
| } |
| '''); |
| |
| var getters = library.getEnum('E')!.getters; |
| expect(getters, hasLength(3)); |
| } |
| |
| test_enum_lazy_all_methods() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| void foo() {} |
| } |
| '''); |
| |
| var methods = library.getEnum('E')!.methods; |
| expect(methods, hasLength(1)); |
| } |
| |
| test_enum_lazy_all_setters() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| set foo(int _) {} |
| } |
| '''); |
| |
| var setters = library.getEnum('E')!.setters; |
| expect(setters, hasLength(1)); |
| } |
| |
| test_enum_lazy_byReference_constructor() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v.foo(); |
| |
| const E.foo(); |
| } |
| '''); |
| // Test ensureReadMembers() in LinkedElementFactory. |
| var E = library.getEnum('E')!; |
| var foo = getConstructorElementOfReference(E, 'foo'); |
| expect(foo.name, 'foo'); |
| } |
| |
| test_enum_lazy_byReference_field() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final foo = 42; |
| } |
| '''); |
| // Test ensureReadMembers() in LinkedElementFactory. |
| var E = library.getEnum('E')!; |
| var foo = getFieldElementOfReference(E, 'foo'); |
| expect(foo.name, 'foo'); |
| } |
| |
| test_enum_lazy_byReference_getter() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| int get foo => 0; |
| } |
| '''); |
| // Test ensureReadMembers() in LinkedElementFactory. |
| var E = library.getEnum('E')!; |
| var foo = getGetterElementOfReference(E, 'foo'); |
| expect(foo.name, 'foo'); |
| } |
| |
| test_enum_lazy_byReference_method() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| void foo() {} |
| } |
| '''); |
| // Test ensureReadMembers() in LinkedElementFactory. |
| var E = library.getEnum('E')!; |
| var foo = getMethodElementOfReference(E, 'foo'); |
| expect(foo.name, 'foo'); |
| } |
| |
| test_enum_lazy_byReference_setter() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| set foo(int _) {} |
| } |
| '''); |
| // Test ensureReadMembers() in LinkedElementFactory. |
| var E = library.getEnum('E')!; |
| var foo = getSetterElementOfReference(E, 'foo'); |
| expect(foo.name, 'foo'); |
| } |
| |
| test_enum_metadata() async { |
| var library = await buildLibrary(r''' |
| const a = 42; |
| |
| @a |
| enum E { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:23) (firstTokenOffset:15) (offset:23) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:27) (firstTokenOffset:27) (offset:27) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::E::@getter::values |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic a (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::a |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 42 @10 |
| staticType: int |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::a |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| topLevelVariables |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F7 |
| type: int |
| constantInitializer |
| fragment: #F7 |
| expression: expression_2 |
| getter: <testLibrary>::@getter::a |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::a |
| '''); |
| } |
| |
| test_enum_metadata_scope() async { |
| var library = await buildLibrary(r''' |
| const foo = 0; |
| |
| @foo |
| enum E<@foo T> { |
| v; |
| |
| static const foo = 1; |
| @foo |
| void bar() {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:26) (firstTokenOffset:16) (offset:26) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:33) (firstTokenOffset:28) (offset:33) |
| element: #E0 T |
| metadata |
| Annotation |
| atSign: @ @28 |
| name: SimpleIdentifier |
| token: foo @29 |
| element: <testLibrary>::@getter::foo |
| staticType: null |
| element: <testLibrary>::@getter::foo |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| #F5 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic foo (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@enum::E::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 1 @65 |
| staticType: int |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable isStatic foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@enum::E::@getter::foo |
| methods |
| #F10 isCompleteDeclaration isOriginDeclaration bar (nameOffset:82) (firstTokenOffset:70) (offset:82) |
| element: <testLibrary>::@enum::E::@method::bar |
| metadata |
| Annotation |
| atSign: @ @70 |
| name: SimpleIdentifier |
| token: foo @71 |
| element: <testLibrary>::@enum::E::@getter::foo |
| staticType: null |
| element: <testLibrary>::@enum::E::@getter::foo |
| topLevelVariables |
| #F11 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic foo (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::foo |
| initializer: expression_3 |
| IntegerLiteral |
| literal: 0 @12 |
| staticType: int |
| getters |
| #F12 isCompleteDeclaration isOriginVariable isStatic foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::foo |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| metadata |
| Annotation |
| atSign: @ @28 |
| name: SimpleIdentifier |
| token: foo @29 |
| element: <testLibrary>::@getter::foo |
| staticType: null |
| element: <testLibrary>::@getter::foo |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F3 |
| type: E<dynamic> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer foo |
| reference: <testLibrary>::@enum::E::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::foo |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E<dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable isStatic foo |
| reference: <testLibrary>::@enum::E::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::foo |
| methods |
| isOriginDeclaration bar |
| reference: <testLibrary>::@enum::E::@method::bar |
| firstFragment: #F10 |
| metadata |
| Annotation |
| atSign: @ @70 |
| name: SimpleIdentifier |
| token: foo @71 |
| element: <testLibrary>::@enum::E::@getter::foo |
| staticType: null |
| element: <testLibrary>::@enum::E::@getter::foo |
| returnType: void |
| topLevelVariables |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer foo |
| reference: <testLibrary>::@topLevelVariable::foo |
| firstFragment: #F11 |
| type: int |
| constantInitializer |
| fragment: #F11 |
| expression: expression_3 |
| getter: <testLibrary>::@getter::foo |
| getters |
| isOriginVariable isStatic foo |
| reference: <testLibrary>::@getter::foo |
| firstFragment: #F12 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::foo |
| '''); |
| } |
| |
| test_enum_missingName() async { |
| var library = await buildLibrary(r''' |
| enum { |
| v |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum <null-name> (nameOffset:<null>) (firstTokenOffset:0) (offset:0) |
| element: <testLibrary>::@enum::#0 |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:9) (firstTokenOffset:9) (offset:9) |
| element: <testLibrary>::@enum::#0::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: <empty> @-1 <synthetic> |
| element: <null> |
| type: InvalidType |
| element: <null> |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: InvalidType |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:0) |
| element: <testLibrary>::@enum::#0::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::#0::@getter::v |
| staticType: InvalidType |
| rightBracket: ] @0 |
| staticType: List<<null>> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:0) |
| element: <testLibrary>::@enum::#0::@constructor::new |
| typeName: null |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:9) |
| element: <testLibrary>::@enum::#0::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:0) |
| element: <testLibrary>::@enum::#0::@getter::values |
| enums |
| isSimplyBounded enum <null-name> |
| reference: <testLibrary>::@enum::#0 |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::#0::@field::v |
| firstFragment: #F2 |
| type: InvalidType |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::#0::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::#0::@field::values |
| firstFragment: #F3 |
| type: List<<null>> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::#0::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::#0::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::#0::@getter::v |
| firstFragment: #F5 |
| returnType: InvalidType |
| variable: <testLibrary>::@enum::#0::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::#0::@getter::values |
| firstFragment: #F6 |
| returnType: List<<null>> |
| variable: <testLibrary>::@enum::#0::@field::values |
| '''); |
| } |
| |
| test_enum_mixins() async { |
| var library = await buildLibrary(r''' |
| mixin M {} |
| |
| enum E with M { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:17) (firstTokenOffset:12) (offset:17) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:28) (firstTokenOffset:28) (offset:28) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@enum::E::@getter::values |
| mixins |
| #F7 mixin M (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@mixin::M |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| mixins |
| M |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| mixins |
| isSimplyBounded mixin M |
| reference: <testLibrary>::@mixin::M |
| firstFragment: #F7 |
| superclassConstraints |
| Object |
| '''); |
| } |
| |
| test_enum_mixins_augmentation_add() async { |
| var library = await buildLibrary(r''' |
| enum A with M1 { |
| v |
| } |
| mixin M1 {} |
| |
| augment enum A with M2 {} |
| mixin M2 {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:19) (firstTokenOffset:19) (offset:19) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:49) (firstTokenOffset:36) (offset:49) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| mixins |
| #F8 mixin M1 (nameOffset:29) (firstTokenOffset:23) (offset:29) |
| element: <testLibrary>::@mixin::M1 |
| #F9 mixin M2 (nameOffset:68) (firstTokenOffset:62) (offset:68) |
| element: <testLibrary>::@mixin::M2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| mixins |
| M1 |
| M2 |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| mixins |
| isSimplyBounded mixin M1 |
| reference: <testLibrary>::@mixin::M1 |
| firstFragment: #F8 |
| superclassConstraints |
| Object |
| isSimplyBounded mixin M2 |
| reference: <testLibrary>::@mixin::M2 |
| firstFragment: #F9 |
| superclassConstraints |
| Object |
| '''); |
| } |
| |
| test_enum_mixins_augmentation_add_inferredTypeArguments() async { |
| var library = await buildLibrary(r''' |
| enum A<T> with M1<T> { |
| v<int>() |
| } |
| mixin M1<U1> {} |
| |
| augment enum A<T> with M2 {} |
| mixin M2<U2> on M1<U2> {} |
| |
| augment enum A<T> with M3 {} |
| mixin M3<U3> on M2<U3> {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @26 |
| arguments |
| NamedType |
| name: int @27 |
| element: dart:core::@class::int |
| type: int |
| rightBracket: > @30 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @31 |
| rightParenthesis: ) @32 |
| staticType: A<int> |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:66) (firstTokenOffset:53) (offset:66) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F10 |
| typeParameters |
| #F4 T (nameOffset:68) (firstTokenOffset:68) (offset:68) |
| element: #E0 T |
| previousFragment: #F3 |
| nextFragment: #F11 |
| #F10 isAugmentation enum A (nameOffset:122) (firstTokenOffset:109) (offset:122) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| typeParameters |
| #F11 T (nameOffset:124) (firstTokenOffset:124) (offset:124) |
| element: #E0 T |
| previousFragment: #F4 |
| mixins |
| #F12 mixin M1 (nameOffset:42) (firstTokenOffset:36) (offset:42) |
| element: <testLibrary>::@mixin::M1 |
| typeParameters |
| #F13 U1 (nameOffset:45) (firstTokenOffset:45) (offset:45) |
| element: #E1 U1 |
| #F14 mixin M2 (nameOffset:88) (firstTokenOffset:82) (offset:88) |
| element: <testLibrary>::@mixin::M2 |
| typeParameters |
| #F15 U2 (nameOffset:91) (firstTokenOffset:91) (offset:91) |
| element: #E2 U2 |
| #F16 mixin M3 (nameOffset:144) (firstTokenOffset:138) (offset:144) |
| element: <testLibrary>::@mixin::M3 |
| typeParameters |
| #F17 U3 (nameOffset:147) (firstTokenOffset:147) (offset:147) |
| element: #E3 U3 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| supertype: Enum |
| mixins |
| M1<T> |
| M2<T> |
| M3<T> |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A<int> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| mixins |
| isSimplyBounded mixin M1 |
| reference: <testLibrary>::@mixin::M1 |
| firstFragment: #F12 |
| typeParameters |
| #E1 U1 |
| firstFragment: #F13 |
| superclassConstraints |
| Object |
| isSimplyBounded mixin M2 |
| reference: <testLibrary>::@mixin::M2 |
| firstFragment: #F14 |
| typeParameters |
| #E2 U2 |
| firstFragment: #F15 |
| superclassConstraints |
| M1<U2> |
| isSimplyBounded mixin M3 |
| reference: <testLibrary>::@mixin::M3 |
| firstFragment: #F16 |
| typeParameters |
| #E3 U3 |
| firstFragment: #F17 |
| superclassConstraints |
| M2<U3> |
| '''); |
| } |
| |
| test_enum_mixins_extensionType() async { |
| var library = await buildLibrary(r''' |
| class A {} |
| |
| extension type B(int it) {} |
| |
| class C {} |
| |
| enum E with A, B, C { v } |
| '''); |
| configuration |
| ..withConstructors = false |
| ..withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| #F2 class C (nameOffset:47) (firstTokenOffset:41) (offset:47) |
| element: <testLibrary>::@class::C |
| enums |
| #F3 enum E (nameOffset:58) (firstTokenOffset:53) (offset:58) |
| element: <testLibrary>::@enum::E |
| fields |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:75) (firstTokenOffset:75) (offset:75) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:75) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58) |
| element: <testLibrary>::@enum::E::@getter::values |
| extensionTypes |
| #F8 extension type B (nameOffset:27) (firstTokenOffset:12) (offset:27) |
| element: <testLibrary>::@extensionType::B |
| fields |
| #F9 isFinal isOriginDeclaringFormalParameter it (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@extensionType::B::@field::it |
| getters |
| #F10 isCompleteDeclaration isOriginVariable it (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@extensionType::B::@getter::it |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F2 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F3 |
| supertype: Enum |
| mixins |
| A |
| C |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F4 |
| type: E |
| constantInitializer |
| fragment: #F4 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| extensionTypes |
| isSimplyBounded extension type B |
| reference: <testLibrary>::@extensionType::B |
| firstFragment: #F8 |
| representation: <testLibrary>::@extensionType::B::@field::it |
| primaryConstructor: <testLibrary>::@extensionType::B::@constructor::new |
| typeErasure: int |
| fields |
| isFinal isOriginDeclaringFormalParameter it |
| reference: <testLibrary>::@extensionType::B::@field::it |
| firstFragment: #F9 |
| type: int |
| getter: <testLibrary>::@extensionType::B::@getter::it |
| declaringFormalParameter: <testLibrary>::@extensionType::B::@constructor::new::@formalParameter::it |
| getters |
| isExtensionTypeMember isOriginVariable it |
| reference: <testLibrary>::@extensionType::B::@getter::it |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@extensionType::B::@field::it |
| '''); |
| } |
| |
| test_enum_mixins_inference() async { |
| var library = await buildLibrary(r''' |
| mixin M1<T> {} |
| |
| mixin M2<T> on M1<T> {} |
| |
| enum E with M1<int>, M2 { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:46) (firstTokenOffset:41) (offset:46) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:67) (firstTokenOffset:67) (offset:67) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:67) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@enum::E::@getter::values |
| mixins |
| #F7 mixin M1 (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@mixin::M1 |
| typeParameters |
| #F8 T (nameOffset:9) (firstTokenOffset:9) (offset:9) |
| element: #E0 T |
| #F9 mixin M2 (nameOffset:22) (firstTokenOffset:16) (offset:22) |
| element: <testLibrary>::@mixin::M2 |
| typeParameters |
| #F10 T (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: #E1 T |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| mixins |
| M1<int> |
| M2<int> |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| mixins |
| isSimplyBounded mixin M1 |
| reference: <testLibrary>::@mixin::M1 |
| firstFragment: #F7 |
| typeParameters |
| #E0 T |
| firstFragment: #F8 |
| superclassConstraints |
| Object |
| isSimplyBounded mixin M2 |
| reference: <testLibrary>::@mixin::M2 |
| firstFragment: #F9 |
| typeParameters |
| #E1 T |
| firstFragment: #F10 |
| superclassConstraints |
| M1<T> |
| '''); |
| } |
| |
| test_enum_typeParameters() async { |
| var library = await buildLibrary(r''' |
| enum E<T> { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:12) (firstTokenOffset:12) (offset:12) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:12) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F3 |
| type: E<dynamic> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E<dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_augmentation_chain_count_112() async { |
| var library = await buildLibrary(r''' |
| enum E<T> { v } |
| augment enum E<T> {} |
| augment enum E<T, U> {} |
| '''); |
| |
| configuration.withConstructors = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| #F5 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: #E1 U |
| nextFragment: #F6 |
| fields |
| #F7 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:12) (firstTokenOffset:12) (offset:12) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic, dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic, U: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic, dynamic> |
| #F8 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic, dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic, dynamic>> |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:12) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F2 isAugmentation enum E (nameOffset:29) (firstTokenOffset:16) (offset:29) |
| element: <testLibrary>::@enum::E |
| previousFragment: #F1 |
| nextFragment: #F11 |
| typeParameters |
| #F4 T (nameOffset:31) (firstTokenOffset:31) (offset:31) |
| element: #E0 T |
| previousFragment: #F3 |
| nextFragment: #F12 |
| #F6 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: #E1 U |
| previousFragment: #F5 |
| nextFragment: #F13 |
| #F11 isAugmentation enum E (nameOffset:50) (firstTokenOffset:37) (offset:50) |
| element: <testLibrary>::@enum::E |
| previousFragment: #F2 |
| typeParameters |
| #F12 T (nameOffset:52) (firstTokenOffset:52) (offset:52) |
| element: #E0 T |
| previousFragment: #F4 |
| #F13 U (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: #E1 U |
| previousFragment: #F6 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| #E1 U |
| firstFragment: #F5 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F7 |
| type: E<dynamic, dynamic> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F8 |
| type: List<E<dynamic, dynamic>> |
| constantInitializer |
| fragment: #F8 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F9 |
| returnType: E<dynamic, dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F10 |
| returnType: List<E<dynamic, dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_augmentation_chain_count_123() async { |
| var library = await buildLibrary(r''' |
| enum E<T> { v } |
| augment enum E<T, U> {} |
| augment enum E<T, U, V> {} |
| '''); |
| |
| configuration.withConstructors = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| #F5 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: #E1 U |
| nextFragment: #F6 |
| #F7 isOriginOtherFragmentOfEnclosing V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: #E2 V |
| nextFragment: #F8 |
| fields |
| #F9 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:12) (firstTokenOffset:12) (offset:12) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic, dynamic, dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic, U: dynamic, V: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic, dynamic, dynamic> |
| #F10 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic, dynamic, dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic, dynamic, dynamic>> |
| getters |
| #F11 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:12) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F12 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F2 isAugmentation enum E (nameOffset:29) (firstTokenOffset:16) (offset:29) |
| element: <testLibrary>::@enum::E |
| previousFragment: #F1 |
| nextFragment: #F13 |
| typeParameters |
| #F4 T (nameOffset:31) (firstTokenOffset:31) (offset:31) |
| element: #E0 T |
| previousFragment: #F3 |
| nextFragment: #F14 |
| #F6 U (nameOffset:34) (firstTokenOffset:34) (offset:34) |
| element: #E1 U |
| previousFragment: #F5 |
| nextFragment: #F15 |
| #F8 isOriginOtherFragmentOfEnclosing V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: #E2 V |
| previousFragment: #F7 |
| nextFragment: #F16 |
| #F13 isAugmentation enum E (nameOffset:53) (firstTokenOffset:40) (offset:53) |
| element: <testLibrary>::@enum::E |
| previousFragment: #F2 |
| typeParameters |
| #F14 T (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: #E0 T |
| previousFragment: #F4 |
| #F15 U (nameOffset:58) (firstTokenOffset:58) (offset:58) |
| element: #E1 U |
| previousFragment: #F6 |
| #F16 V (nameOffset:61) (firstTokenOffset:61) (offset:61) |
| element: #E2 V |
| previousFragment: #F8 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| #E1 U |
| firstFragment: #F5 |
| #E2 V |
| firstFragment: #F7 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F9 |
| type: E<dynamic, dynamic, dynamic> |
| constantInitializer |
| fragment: #F9 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F10 |
| type: List<E<dynamic, dynamic, dynamic>> |
| constantInitializer |
| fragment: #F10 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F11 |
| returnType: E<dynamic, dynamic, dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F12 |
| returnType: List<E<dynamic, dynamic, dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_augmentation_chain_count_211() async { |
| var library = await buildLibrary(r''' |
| enum E<T, U> { v } |
| augment enum E<T> {} |
| augment enum E<T> {} |
| '''); |
| |
| configuration.withConstructors = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| #F5 U (nameOffset:10) (firstTokenOffset:10) (offset:10) |
| element: #E1 U |
| nextFragment: #F6 |
| fields |
| #F7 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:15) (firstTokenOffset:15) (offset:15) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic, dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic, U: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic, dynamic> |
| #F8 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic, dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic, dynamic>> |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F2 isAugmentation enum E (nameOffset:32) (firstTokenOffset:19) (offset:32) |
| element: <testLibrary>::@enum::E |
| previousFragment: #F1 |
| nextFragment: #F11 |
| typeParameters |
| #F4 T (nameOffset:34) (firstTokenOffset:34) (offset:34) |
| element: #E0 T |
| previousFragment: #F3 |
| nextFragment: #F12 |
| #F6 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: #E1 U |
| previousFragment: #F5 |
| nextFragment: #F13 |
| #F11 isAugmentation enum E (nameOffset:53) (firstTokenOffset:40) (offset:53) |
| element: <testLibrary>::@enum::E |
| previousFragment: #F2 |
| typeParameters |
| #F12 T (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: #E0 T |
| previousFragment: #F4 |
| #F13 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:53) |
| element: #E1 U |
| previousFragment: #F6 |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| #E1 U |
| firstFragment: #F5 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F7 |
| type: E<dynamic, dynamic> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F8 |
| type: List<E<dynamic, dynamic>> |
| constantInitializer |
| fragment: #F8 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F9 |
| returnType: E<dynamic, dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F10 |
| returnType: List<E<dynamic, dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_bound() async { |
| var library = await buildLibrary(r''' |
| enum E<T extends num, U extends T> { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| #F3 U (nameOffset:22) (firstTokenOffset:22) (offset:22) |
| element: #E1 U |
| fields |
| #F4 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<num, num> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: num, U: num} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<num, num> |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<num, num> |
| rightBracket: ] @0 |
| staticType: List<E<num, num>> |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| bound: num |
| #E1 U |
| firstFragment: #F3 |
| bound: T |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F4 |
| type: E<num, num> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E<num, num>> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E<num, num> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E<num, num>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_cycle_1of1() async { |
| var library = await buildLibrary(r''' |
| enum E<T extends T> {} |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| bound: dynamic |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F5 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_cycle_2of3() async { |
| var library = await buildLibrary(r''' |
| enum E<T extends V, U extends num, V extends T> {} |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| #F3 U (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: #E1 U |
| #F4 V (nameOffset:35) (firstTokenOffset:35) (offset:35) |
| element: #E2 V |
| fields |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E<dynamic, num, dynamic>> |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| bound: dynamic |
| #E1 U |
| firstFragment: #F3 |
| bound: num |
| #E2 V |
| firstFragment: #F4 |
| bound: dynamic |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E<dynamic, num, dynamic>> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E<dynamic, num, dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_defaultType() async { |
| var library = await buildLibrary(r''' |
| enum A<T extends B> { |
| v |
| } |
| class B {} |
| |
| augment enum A<T extends B> {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class B (nameOffset:34) (firstTokenOffset:28) (offset:34) |
| element: <testLibrary>::@class::B |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:34) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| enums |
| #F3 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F4 |
| typeParameters |
| #F5 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F6 |
| fields |
| #F7 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:24) (firstTokenOffset:24) (offset:24) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A<B> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: B} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A<B> |
| #F8 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<B> |
| rightBracket: ] @0 |
| staticType: List<A<B>> |
| constructors |
| #F9 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F10 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:24) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F11 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F4 isAugmentation enum A (nameOffset:53) (firstTokenOffset:40) (offset:53) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F3 |
| typeParameters |
| #F6 T (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: #E0 T |
| previousFragment: #F5 |
| classes |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F3 |
| typeParameters |
| #E0 T |
| firstFragment: #F5 |
| bound: B |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F7 |
| type: A<B> |
| constantInitializer |
| fragment: #F7 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F8 |
| type: List<A<B>> |
| constantInitializer |
| fragment: #F8 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F9 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F10 |
| returnType: A<B> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F11 |
| returnType: List<A<B>> |
| variable: <testLibrary>::@enum::A::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_defaultType_cycle_genericFunctionType() async { |
| var library = await buildLibrary(r''' |
| enum E<T extends void Function(E)> {} |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| bound: void Function(E<dynamic>) |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F5 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_metadata() async { |
| var library = await buildLibrary(r''' |
| const a = 42; |
| |
| enum E<@a T> { v } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:20) (firstTokenOffset:15) (offset:20) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:25) (firstTokenOffset:22) (offset:25) |
| element: #E0 T |
| metadata |
| Annotation |
| atSign: @ @22 |
| name: SimpleIdentifier |
| token: a @23 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:30) (firstTokenOffset:30) (offset:30) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:30) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::values |
| topLevelVariables |
| #F8 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic a (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::a |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 42 @10 |
| staticType: int |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::a |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| metadata |
| Annotation |
| atSign: @ @22 |
| name: SimpleIdentifier |
| token: a @23 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F3 |
| type: E<dynamic> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E<dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| topLevelVariables |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F8 |
| type: int |
| constantInitializer |
| fragment: #F8 |
| expression: expression_2 |
| getter: <testLibrary>::@getter::a |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::a |
| '''); |
| } |
| |
| test_enum_typeParameters_variance_contravariant() async { |
| var library = await buildLibrary(r''' |
| enum E<in T> {} |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:10) (firstTokenOffset:7) (offset:10) |
| element: #E0 T |
| fields |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F5 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_variance_covariant() async { |
| var library = await buildLibrary(r''' |
| enum E<out T> {} |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: #E0 T |
| fields |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F5 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_variance_invariant() async { |
| var library = await buildLibrary(r''' |
| enum E<inout T> {} |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:13) (firstTokenOffset:7) (offset:13) |
| element: #E0 T |
| fields |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F5 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_typeParameters_variance_multiple() async { |
| var library = await buildLibrary(r''' |
| enum E<inout T, in U, out V> {} |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:13) (firstTokenOffset:7) (offset:13) |
| element: #E0 T |
| #F3 U (nameOffset:19) (firstTokenOffset:16) (offset:19) |
| element: #E1 U |
| #F4 V (nameOffset:26) (firstTokenOffset:22) (offset:26) |
| element: #E2 V |
| fields |
| #F5 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_0 |
| ListLiteral |
| leftBracket: [ @0 |
| rightBracket: ] @0 |
| staticType: List<E<dynamic, dynamic, dynamic>> |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| #E1 U |
| firstFragment: #F3 |
| #E2 V |
| firstFragment: #F4 |
| supertype: Enum |
| fields |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F5 |
| type: List<E<dynamic, dynamic, dynamic>> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E<dynamic, dynamic, dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enum_values() async { |
| var library = await buildLibrary(r''' |
| enum E { v1, v2 } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:9) (firstTokenOffset:9) (offset:9) |
| element: <testLibrary>::@enum::E::@field::v1 |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:13) (firstTokenOffset:13) (offset:13) |
| element: <testLibrary>::@enum::E::@field::v2 |
| initializer: expression_1 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_2 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::E::@getter::v1 |
| staticType: E |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::E::@getter::v2 |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:9) |
| element: <testLibrary>::@enum::E::@getter::v1 |
| #F7 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:13) |
| element: <testLibrary>::@enum::E::@getter::v2 |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@enum::E::@field::v1 |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v1 |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::E::@field::v2 |
| firstFragment: #F3 |
| type: E |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::v2 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@enum::E::@getter::v1 |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v1 |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::E::@getter::v2 |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v2 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| '''); |
| } |
| |
| test_enums() async { |
| var library = await buildLibrary(r''' |
| enum E1 { v1 } |
| |
| enum E2 { v2 } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E1 (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E1 |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v1 (nameOffset:10) (firstTokenOffset:10) (offset:10) |
| element: <testLibrary>::@enum::E1::@field::v1 |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E1 @-1 |
| element: <testLibrary>::@enum::E1 |
| type: E1 |
| element: <testLibrary>::@enum::E1::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E1 |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E1::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v1 @-1 |
| element: <testLibrary>::@enum::E1::@getter::v1 |
| staticType: E1 |
| rightBracket: ] @0 |
| staticType: List<E1> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E1::@constructor::new |
| typeName: E1 |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:10) |
| element: <testLibrary>::@enum::E1::@getter::v1 |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E1::@getter::values |
| #F7 enum E2 (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::E2 |
| fields |
| #F8 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v2 (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::E2::@field::v2 |
| initializer: expression_2 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E2 @-1 |
| element: <testLibrary>::@enum::E2 |
| type: E2 |
| element: <testLibrary>::@enum::E2::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E2 |
| #F9 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E2::@field::values |
| initializer: expression_3 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v2 @-1 |
| element: <testLibrary>::@enum::E2::@getter::v2 |
| staticType: E2 |
| rightBracket: ] @0 |
| staticType: List<E2> |
| constructors |
| #F10 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E2::@constructor::new |
| typeName: E2 |
| getters |
| #F11 isCompleteDeclaration isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::E2::@getter::v2 |
| #F12 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E2::@getter::values |
| enums |
| isSimplyBounded enum E1 |
| reference: <testLibrary>::@enum::E1 |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@enum::E1::@field::v1 |
| firstFragment: #F2 |
| type: E1 |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E1::@getter::v1 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E1::@field::values |
| firstFragment: #F3 |
| type: List<E1> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E1::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E1::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@enum::E1::@getter::v1 |
| firstFragment: #F5 |
| returnType: E1 |
| variable: <testLibrary>::@enum::E1::@field::v1 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E1::@getter::values |
| firstFragment: #F6 |
| returnType: List<E1> |
| variable: <testLibrary>::@enum::E1::@field::values |
| isSimplyBounded enum E2 |
| reference: <testLibrary>::@enum::E2 |
| firstFragment: #F7 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@enum::E2::@field::v2 |
| firstFragment: #F8 |
| type: E2 |
| constantInitializer |
| fragment: #F8 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E2::@getter::v2 |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E2::@field::values |
| firstFragment: #F9 |
| type: List<E2> |
| constantInitializer |
| fragment: #F9 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::E2::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E2::@constructor::new |
| firstFragment: #F10 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@enum::E2::@getter::v2 |
| firstFragment: #F11 |
| returnType: E2 |
| variable: <testLibrary>::@enum::E2::@field::v2 |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E2::@getter::values |
| firstFragment: #F12 |
| returnType: List<E2> |
| variable: <testLibrary>::@enum::E2::@field::values |
| '''); |
| } |
| |
| test_field() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| final foo = 42; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType hasInitializer isFinal isOriginDeclaration foo (nameOffset:23) (firstTokenOffset:23) (offset:23) |
| element: <testLibrary>::@enum::E::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 42 @29 |
| staticType: int |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F8 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::E::@getter::foo |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isTypeInferredFromInitializer foo |
| reference: <testLibrary>::@enum::E::@field::foo |
| firstFragment: #F4 |
| type: int |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::E::@getter::foo |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_add() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo1 = 0; |
| } |
| |
| augment enum A {; |
| final int foo2 = 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo1 (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo1 |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @33 |
| staticType: int |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo1 |
| #F2 isAugmentation enum A (nameOffset:52) (firstTokenOffset:39) (offset:52) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F10 hasInitializer isFinal isOriginDeclaration foo2 (nameOffset:69) (firstTokenOffset:69) (offset:69) |
| element: <testLibrary>::@enum::A::@field::foo2 |
| initializer: expression_3 |
| IntegerLiteral |
| literal: 0 @76 |
| staticType: int |
| getters |
| #F11 isCompleteDeclaration isOriginVariable foo2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@enum::A::@getter::foo2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@field::foo1 |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::foo1 |
| hasInitializer isFinal isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@field::foo2 |
| firstFragment: #F10 |
| type: int |
| constantInitializer |
| fragment: #F10 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::foo2 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo1 |
| reference: <testLibrary>::@enum::A::@getter::foo1 |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo1 |
| isOriginVariable foo2 |
| reference: <testLibrary>::@enum::A::@getter::foo2 |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo2 |
| '''); |
| } |
| |
| test_field_augmentation_add_generic() async { |
| var library = await buildLibrary(r''' |
| enum A<T> { |
| v<int>(); |
| final T foo1; |
| } |
| |
| augment enum A<T> {; |
| final T foo2; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @15 |
| arguments |
| NamedType |
| name: int @16 |
| element: dart:core::@class::int |
| type: int |
| rightBracket: > @19 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @20 |
| rightParenthesis: ) @21 |
| staticType: A<int> |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| #F7 isFinal isOriginDeclaration foo1 (nameOffset:34) (firstTokenOffset:34) (offset:34) |
| element: <testLibrary>::@enum::A::@field::foo1 |
| constructors |
| #F8 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F11 isCompleteDeclaration isOriginVariable foo1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:34) |
| element: <testLibrary>::@enum::A::@getter::foo1 |
| #F2 isAugmentation enum A (nameOffset:56) (firstTokenOffset:43) (offset:56) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| typeParameters |
| #F4 T (nameOffset:58) (firstTokenOffset:58) (offset:58) |
| element: #E0 T |
| previousFragment: #F3 |
| fields |
| #F12 isFinal isOriginDeclaration foo2 (nameOffset:74) (firstTokenOffset:74) (offset:74) |
| element: <testLibrary>::@enum::A::@field::foo2 |
| getters |
| #F13 isCompleteDeclaration isOriginVariable foo2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@enum::A::@getter::foo2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A<int> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasEnclosingTypeParameterReference isFinal isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@field::foo1 |
| firstFragment: #F7 |
| type: T |
| getter: <testLibrary>::@enum::A::@getter::foo1 |
| hasEnclosingTypeParameterReference isFinal isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@field::foo2 |
| firstFragment: #F12 |
| type: T |
| getter: <testLibrary>::@enum::A::@getter::foo2 |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F8 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F9 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F10 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| hasEnclosingTypeParameterReference isOriginVariable foo1 |
| reference: <testLibrary>::@enum::A::@getter::foo1 |
| firstFragment: #F11 |
| returnType: T |
| variable: <testLibrary>::@enum::A::@field::foo1 |
| hasEnclosingTypeParameterReference isOriginVariable foo2 |
| reference: <testLibrary>::@enum::A::@getter::foo2 |
| firstFragment: #F13 |
| returnType: T |
| variable: <testLibrary>::@enum::A::@field::foo2 |
| '''); |
| } |
| |
| test_field_augmentation_add_usedByConstructorFieldInitializer() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| const A() : foo = 0; |
| } |
| |
| augment enum A {; |
| final int foo; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:16) (offset:22) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 22 |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:53) (firstTokenOffset:40) (offset:53) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F8 isFinal isOriginDeclaration foo (nameOffset:70) (firstTokenOffset:70) (offset:70) |
| element: <testLibrary>::@enum::A::@field::foo |
| getters |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F8 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| constantInitializers |
| ConstructorFieldInitializer |
| fieldName: SimpleIdentifier |
| token: foo @28 |
| element: <testLibrary>::@enum::A::@field::foo |
| staticType: null |
| equals: = @32 |
| expression: IntegerLiteral |
| literal: 0 @34 |
| staticType: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_add_usedByFieldFormalParameter() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v(0); |
| const A(this.foo); |
| } |
| |
| augment enum A {; |
| final int foo; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @12 |
| arguments |
| IntegerLiteral |
| literal: 0 @13 |
| staticType: int |
| rightParenthesis: ) @14 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:19) (offset:25) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| typeNameOffset: 25 |
| formalParameters |
| #F6 requiredPositional hasImplicitType isFinal isOriginDeclaration this.foo (nameOffset:32) (firstTokenOffset:27) (offset:32) |
| element: <testLibrary>::@enum::A::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:54) (firstTokenOffset:41) (offset:54) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F9 isFinal isOriginDeclaration foo (nameOffset:71) (firstTokenOffset:71) (offset:71) |
| element: <testLibrary>::@enum::A::@field::foo |
| getters |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F9 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginDeclaration new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional hasImplicitType isFinal this.foo |
| firstFragment: #F6 |
| type: int |
| field: <testLibrary>::@enum::A::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_chain() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment final int foo = 1; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: null |
| nextFragment: #F6 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F6 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:76) (firstTokenOffset:76) (offset:76) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_3 |
| IntegerLiteral |
| literal: 1 @82 |
| staticType: int |
| previousFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F6 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_chain_afterGetter() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment int get foo => 1; |
| } |
| |
| augment enum A {; |
| augment final int foo = 2; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: null |
| nextFragment: #F6 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| nextFragment: #F11 |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F12 |
| getters |
| #F11 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:74) (firstTokenOffset:58) (offset:74) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F10 |
| #F12 isAugmentation enum A (nameOffset:100) (firstTokenOffset:87) (offset:100) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| fields |
| #F6 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:125) (firstTokenOffset:125) (offset:125) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_3 |
| IntegerLiteral |
| literal: 2 @131 |
| staticType: int |
| previousFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F6 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_chain_afterSetter() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment set foo(int _) {} |
| } |
| |
| augment enum A {; |
| augment final int foo = 2; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: null |
| nextFragment: #F6 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F11 |
| setters |
| #F12 hasImplicitReturnType isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:70) (firstTokenOffset:58) (offset:70) |
| element: <testLibrary>::@enum::A::@setter::foo |
| formalParameters |
| #F13 requiredPositional isOriginDeclaration _ (nameOffset:78) (firstTokenOffset:74) (offset:78) |
| element: <testLibrary>::@enum::A::@setter::foo::@formalParameter::_ |
| #F11 isAugmentation enum A (nameOffset:100) (firstTokenOffset:87) (offset:100) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| fields |
| #F6 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:125) (firstTokenOffset:125) (offset:125) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_3 |
| IntegerLiteral |
| literal: 2 @131 |
| staticType: int |
| previousFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F6 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| setter: <testLibrary>::@enum::A::@setter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| setters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@setter::foo |
| firstFragment: #F12 |
| previousFragmentOfDifferentKind: #F5 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F13 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_chain_differentType() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment final double foo = 1.2; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: null |
| nextFragment: #F6 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F6 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:79) (firstTokenOffset:79) (offset:79) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_3 |
| DoubleLiteral |
| literal: 1.2 @85 |
| staticType: double |
| previousFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F6 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| /// This is not allowed by the specification, but allowed syntactically, |
| /// so we need a way to handle it. |
| test_field_augmentation_chain_fromGetter() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| int get foo => 0; |
| } |
| |
| augment enum A {; |
| augment final int foo = 1; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| nextFragment: #F6 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginDeclaration foo (nameOffset:24) (firstTokenOffset:16) (offset:24) |
| element: <testLibrary>::@enum::A::@getter::foo |
| #F2 isAugmentation enum A (nameOffset:50) (firstTokenOffset:37) (offset:50) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F6 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:75) (firstTokenOffset:75) (offset:75) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 1 @81 |
| staticType: int |
| previousFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isOriginGetterSetter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F6 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_chain_functionExpression() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int Function() foo = () { |
| return 0; |
| }; |
| } |
| |
| augment enum A {; |
| augment final int Function() foo = () { |
| return augmented() + 1; |
| }; |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| SimpleIdentifier |
| token: _notSerializableExpression @-1 |
| element: <null> |
| staticType: null |
| nextFragment: #F6 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@enum::A::@getter::foo |
| #F2 isAugmentation enum A (nameOffset:83) (firstTokenOffset:70) (offset:83) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F6 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:119) (firstTokenOffset:119) (offset:119) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_3 |
| SimpleIdentifier |
| token: _notSerializableExpression @-1 |
| element: <null> |
| staticType: null |
| previousFragment: #F5 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int Function() |
| constantInitializer |
| fragment: #F6 |
| expression: expression_3 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int Function() |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_augmentation_chain_twoDeclarations() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment final int foo = 1; |
| } |
| |
| augment enum A {; |
| augment final int foo = 2; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: null |
| nextFragment: #F6 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F11 |
| fields |
| #F6 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:76) (firstTokenOffset:76) (offset:76) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_3 |
| IntegerLiteral |
| literal: 1 @82 |
| staticType: null |
| previousFragment: #F5 |
| nextFragment: #F12 |
| #F11 isAugmentation enum A (nameOffset:101) (firstTokenOffset:88) (offset:101) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| fields |
| #F12 hasInitializer isAugmentation isFinal isOriginDeclaration foo (nameOffset:126) (firstTokenOffset:126) (offset:126) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_4 |
| IntegerLiteral |
| literal: 2 @132 |
| staticType: int |
| previousFragment: #F6 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F12 |
| expression: expression_4 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_field_isPromotable() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v(null); |
| |
| final int? _foo; |
| E(this._foo); |
| } |
| '''); |
| configuration.forPromotableFields(enumNames: {'E'}, fieldNames: {'_foo'}); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F0 |
| supertype: Enum |
| fields |
| isFinal isOriginDeclaration isPromotable _foo |
| reference: <testLibrary>::@enum::E::@field::_foo |
| firstFragment: #F1 |
| type: int? |
| getter: <testLibrary>::@enum::E::@getter::_foo |
| '''); |
| } |
| |
| test_getter() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| int get foo => 0; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::foo |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:25) (firstTokenOffset:17) (offset:25) |
| element: <testLibrary>::@enum::E::@getter::foo |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@enum::E::@field::foo |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::E::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::E::@getter::foo |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::foo |
| '''); |
| } |
| |
| test_getter_augmentation_add() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| int get foo1 => 0; |
| } |
| |
| augment enum A {; |
| int get foo2 => 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isOriginGetterSetter foo1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo1 |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:24) (firstTokenOffset:16) (offset:24) |
| element: <testLibrary>::@enum::A::@getter::foo1 |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F10 isOriginGetterSetter foo2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@enum::A::@field::foo2 |
| getters |
| #F11 isCompleteDeclaration isOriginDeclaration foo2 (nameOffset:66) (firstTokenOffset:58) (offset:66) |
| element: <testLibrary>::@enum::A::@getter::foo2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo1 |
| reference: <testLibrary>::@enum::A::@field::foo1 |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo1 |
| isOriginGetterSetter foo2 |
| reference: <testLibrary>::@enum::A::@field::foo2 |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo2 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@getter::foo1 |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo1 |
| isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@getter::foo2 |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo2 |
| '''); |
| } |
| |
| test_getter_augmentation_add_generic() async { |
| var library = await buildLibrary(r''' |
| enum A<T> { |
| v<int>(); |
| T get foo1; |
| } |
| |
| augment enum A<T> {; |
| T get foo2; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @15 |
| arguments |
| NamedType |
| name: int @16 |
| element: dart:core::@class::int |
| type: int |
| rightBracket: > @19 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @20 |
| rightParenthesis: ) @21 |
| staticType: A<int> |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| #F7 isOriginGetterSetter foo1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo1 |
| constructors |
| #F8 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F10 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F11 isAbstract isOriginDeclaration foo1 (nameOffset:32) (firstTokenOffset:26) (offset:32) |
| element: <testLibrary>::@enum::A::@getter::foo1 |
| #F2 isAugmentation enum A (nameOffset:54) (firstTokenOffset:41) (offset:54) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| typeParameters |
| #F4 T (nameOffset:56) (firstTokenOffset:56) (offset:56) |
| element: #E0 T |
| previousFragment: #F3 |
| fields |
| #F12 isOriginGetterSetter foo2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@enum::A::@field::foo2 |
| getters |
| #F13 isAbstract isOriginDeclaration foo2 (nameOffset:70) (firstTokenOffset:64) (offset:70) |
| element: <testLibrary>::@enum::A::@getter::foo2 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A<int> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasEnclosingTypeParameterReference isOriginGetterSetter foo1 |
| reference: <testLibrary>::@enum::A::@field::foo1 |
| firstFragment: #F7 |
| type: T |
| getter: <testLibrary>::@enum::A::@getter::foo1 |
| hasEnclosingTypeParameterReference isOriginGetterSetter foo2 |
| reference: <testLibrary>::@enum::A::@field::foo2 |
| firstFragment: #F12 |
| type: T |
| getter: <testLibrary>::@enum::A::@getter::foo2 |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F8 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F9 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F10 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| hasEnclosingTypeParameterReference isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@getter::foo1 |
| firstFragment: #F11 |
| returnType: T |
| variable: <testLibrary>::@enum::A::@field::foo1 |
| hasEnclosingTypeParameterReference isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@getter::foo2 |
| firstFragment: #F13 |
| returnType: T |
| variable: <testLibrary>::@enum::A::@field::foo2 |
| '''); |
| } |
| |
| test_getter_augmentation_chain() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| int get foo1 => 0; |
| int get foo2 => 0; |
| } |
| |
| augment enum A {; |
| augment int get foo1 => 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isOriginGetterSetter foo1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo1 |
| #F6 isOriginGetterSetter foo2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo2 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F10 isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:24) (firstTokenOffset:16) (offset:24) |
| element: <testLibrary>::@enum::A::@getter::foo1 |
| nextFragment: #F11 |
| #F12 isCompleteDeclaration isOriginDeclaration foo2 (nameOffset:45) (firstTokenOffset:37) (offset:45) |
| element: <testLibrary>::@enum::A::@getter::foo2 |
| #F2 isAugmentation enum A (nameOffset:72) (firstTokenOffset:59) (offset:72) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| getters |
| #F11 isAugmentation isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:95) (firstTokenOffset:79) (offset:95) |
| element: <testLibrary>::@enum::A::@getter::foo1 |
| previousFragment: #F10 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo1 |
| reference: <testLibrary>::@enum::A::@field::foo1 |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo1 |
| isOriginGetterSetter foo2 |
| reference: <testLibrary>::@enum::A::@field::foo2 |
| firstFragment: #F6 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo2 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@getter::foo1 |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo1 |
| isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@getter::foo2 |
| firstFragment: #F12 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo2 |
| '''); |
| } |
| |
| test_getter_augmentation_chain_fromField() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment int get foo => 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: int |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| nextFragment: #F10 |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| getters |
| #F10 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:74) (firstTokenOffset:58) (offset:74) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F9 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_getter_augmentation_chain_fromField_twoDeclarations() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment int get foo => 0; |
| } |
| |
| augment enum A {; |
| augment int get foo => 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: int |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| nextFragment: #F10 |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F11 |
| getters |
| #F10 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:74) (firstTokenOffset:58) (offset:74) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F9 |
| nextFragment: #F12 |
| #F11 isAugmentation enum A (nameOffset:100) (firstTokenOffset:87) (offset:100) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| getters |
| #F12 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:123) (firstTokenOffset:107) (offset:123) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F10 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_getter_augmentation_chain_noIntroductoryDeclaration() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v |
| } |
| |
| augment enum A {; |
| augment int get foo => 0; |
| } |
| '''); |
| |
| configuration |
| ..withConstantInitializers = false |
| ..withConstructors = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:29) (firstTokenOffset:16) (offset:29) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F7 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::A::@field::foo |
| getters |
| #F8 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:52) (firstTokenOffset:36) (offset:52) |
| element: <testLibrary>::@enum::A::@getter::foo |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F5 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F6 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_getter_augmentation_chain_twoDeclarations() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| int get foo => 0; |
| } |
| |
| augment enum A {; |
| augment int get foo => 0; |
| } |
| |
| augment enum A {; |
| augment int get foo => 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginDeclaration foo (nameOffset:24) (firstTokenOffset:16) (offset:24) |
| element: <testLibrary>::@enum::A::@getter::foo |
| nextFragment: #F10 |
| #F2 isAugmentation enum A (nameOffset:50) (firstTokenOffset:37) (offset:50) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F11 |
| getters |
| #F10 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:73) (firstTokenOffset:57) (offset:73) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F9 |
| nextFragment: #F12 |
| #F11 isAugmentation enum A (nameOffset:99) (firstTokenOffset:86) (offset:99) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| getters |
| #F12 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:122) (firstTokenOffset:106) (offset:122) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F10 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_getter_augmentation_chain_twoInSameDeclaration() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| int get foo => 0; |
| } |
| |
| augment enum A {; |
| augment int get foo => 0; |
| augment int get foo => 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginDeclaration foo (nameOffset:24) (firstTokenOffset:16) (offset:24) |
| element: <testLibrary>::@enum::A::@getter::foo |
| nextFragment: #F10 |
| #F2 isAugmentation enum A (nameOffset:50) (firstTokenOffset:37) (offset:50) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| getters |
| #F10 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:73) (firstTokenOffset:57) (offset:73) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F9 |
| nextFragment: #F11 |
| #F11 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:101) (firstTokenOffset:85) (offset:101) |
| element: <testLibrary>::@enum::A::@getter::foo |
| previousFragment: #F10 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@enum::A::@getter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_method() async { |
| var library = await buildLibrary(r''' |
| enum E<T> { |
| v; |
| |
| int foo<U>(T t, U u) => 0; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| typeParameters |
| #F2 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E<dynamic> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::E::@constructor::new |
| substitution: {T: dynamic} |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E<dynamic> |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E<dynamic> |
| rightBracket: ] @0 |
| staticType: List<E<dynamic>> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:24) (firstTokenOffset:20) (offset:24) |
| element: <testLibrary>::@enum::E::@method::foo |
| typeParameters |
| #F9 U (nameOffset:28) (firstTokenOffset:28) (offset:28) |
| element: #E1 U |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration t (nameOffset:33) (firstTokenOffset:31) (offset:33) |
| element: <testLibrary>::@enum::E::@method::foo::@formalParameter::t |
| #F11 requiredPositional isOriginDeclaration u (nameOffset:38) (firstTokenOffset:36) (offset:38) |
| element: <testLibrary>::@enum::E::@method::foo::@formalParameter::u |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F3 |
| type: E<dynamic> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F4 |
| type: List<E<dynamic>> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E<dynamic> |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E<dynamic>> |
| variable: <testLibrary>::@enum::E::@field::values |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration foo |
| reference: <testLibrary>::@enum::E::@method::foo |
| firstFragment: #F8 |
| typeParameters |
| #E1 U |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional t |
| firstFragment: #F10 |
| type: T |
| #E3 requiredPositional u |
| firstFragment: #F11 |
| type: U |
| returnType: int |
| '''); |
| } |
| |
| test_method_augmentation_add() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| void foo() {} |
| } |
| |
| augment enum A {; |
| void bar() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::A::@method::foo |
| #F2 isAugmentation enum A (nameOffset:46) (firstTokenOffset:33) (offset:46) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| methods |
| #F9 isCompleteDeclaration isOriginDeclaration bar (nameOffset:58) (firstTokenOffset:53) (offset:58) |
| element: <testLibrary>::@enum::A::@method::bar |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F8 |
| returnType: void |
| isOriginDeclaration bar |
| reference: <testLibrary>::@enum::A::@method::bar |
| firstFragment: #F9 |
| returnType: void |
| '''); |
| } |
| |
| test_method_augmentation_add_generic() async { |
| var library = await buildLibrary(r''' |
| enum A<T> { |
| v<int>(); |
| T foo() => throw 0; |
| } |
| |
| augment enum A<T> {; |
| T bar() => throw 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @15 |
| arguments |
| NamedType |
| name: int @16 |
| element: dart:core::@class::int |
| type: int |
| rightBracket: > @19 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @20 |
| rightParenthesis: ) @21 |
| staticType: A<int> |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F10 isCompleteDeclaration isOriginDeclaration foo (nameOffset:28) (firstTokenOffset:26) (offset:28) |
| element: <testLibrary>::@enum::A::@method::foo |
| #F2 isAugmentation enum A (nameOffset:62) (firstTokenOffset:49) (offset:62) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| typeParameters |
| #F4 T (nameOffset:64) (firstTokenOffset:64) (offset:64) |
| element: #E0 T |
| previousFragment: #F3 |
| methods |
| #F11 isCompleteDeclaration isOriginDeclaration bar (nameOffset:74) (firstTokenOffset:72) (offset:74) |
| element: <testLibrary>::@enum::A::@method::bar |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A<int> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F10 |
| returnType: T |
| hasEnclosingTypeParameterReference isOriginDeclaration bar |
| reference: <testLibrary>::@enum::A::@method::bar |
| firstFragment: #F11 |
| returnType: T |
| '''); |
| } |
| |
| test_method_augmentation_add_inferTypes_ofAugmentation() async { |
| newFile('$testPackageLibPath/a.dart', r''' |
| class A { |
| int foo(String a); |
| } |
| '''); |
| |
| var library = await buildLibrary(r''' |
| import 'a.dart'; |
| enum B implements A { |
| v |
| } |
| |
| augment enum B {; |
| foo(a) => 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| enums |
| #F1 enum B (nameOffset:22) (firstTokenOffset:17) (offset:22) |
| element: <testLibrary>::@enum::B |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:41) (firstTokenOffset:41) (offset:41) |
| element: <testLibrary>::@enum::B::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: B @-1 |
| element: <testLibrary>::@enum::B |
| type: B |
| element: <testLibrary>::@enum::B::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: B |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@enum::B::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::B::@getter::v |
| staticType: B |
| rightBracket: ] @0 |
| staticType: List<B> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@enum::B::@constructor::new |
| typeName: B |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@enum::B::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@enum::B::@getter::values |
| #F2 isAugmentation enum B (nameOffset:59) (firstTokenOffset:46) (offset:59) |
| element: <testLibrary>::@enum::B |
| previousFragment: #F1 |
| methods |
| #F8 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo (nameOffset:66) (firstTokenOffset:66) (offset:66) |
| element: <testLibrary>::@enum::B::@method::foo |
| formalParameters |
| #F9 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:70) (firstTokenOffset:70) (offset:70) |
| element: <testLibrary>::@enum::B::@method::foo::@formalParameter::a |
| enums |
| isSimplyBounded enum B |
| reference: <testLibrary>::@enum::B |
| firstFragment: #F1 |
| supertype: Enum |
| interfaces |
| A |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::B::@field::v |
| firstFragment: #F3 |
| type: B |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::B::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::B::@field::values |
| firstFragment: #F4 |
| type: List<B> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::B::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::B::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::B::@getter::v |
| firstFragment: #F6 |
| returnType: B |
| variable: <testLibrary>::@enum::B::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::B::@getter::values |
| firstFragment: #F7 |
| returnType: List<B> |
| variable: <testLibrary>::@enum::B::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::B::@method::foo |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional hasImplicitType a |
| firstFragment: #F9 |
| type: String |
| returnType: int |
| '''); |
| } |
| |
| test_method_augmentation_add_inferTypes_usingInterface() async { |
| newFile('$testPackageLibPath/a.dart', r''' |
| class A { |
| int foo(String a) => 0; |
| } |
| '''); |
| |
| var library = await buildLibrary(r''' |
| import 'a.dart'; |
| |
| enum B { |
| v; |
| foo(a) => 0; |
| } |
| |
| augment enum B implements A {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| enums |
| #F1 enum B (nameOffset:23) (firstTokenOffset:18) (offset:23) |
| element: <testLibrary>::@enum::B |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@enum::B::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: B @-1 |
| element: <testLibrary>::@enum::B |
| type: B |
| element: <testLibrary>::@enum::B::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: B |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::B::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::B::@getter::v |
| staticType: B |
| rightBracket: ] @0 |
| staticType: List<B> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::B::@constructor::new |
| typeName: B |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::B::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::B::@getter::values |
| methods |
| #F8 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo (nameOffset:34) (firstTokenOffset:34) (offset:34) |
| element: <testLibrary>::@enum::B::@method::foo |
| formalParameters |
| #F9 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:38) (firstTokenOffset:38) (offset:38) |
| element: <testLibrary>::@enum::B::@method::foo::@formalParameter::a |
| #F2 isAugmentation enum B (nameOffset:63) (firstTokenOffset:50) (offset:63) |
| element: <testLibrary>::@enum::B |
| previousFragment: #F1 |
| enums |
| isSimplyBounded enum B |
| reference: <testLibrary>::@enum::B |
| firstFragment: #F1 |
| supertype: Enum |
| interfaces |
| A |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::B::@field::v |
| firstFragment: #F3 |
| type: B |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::B::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::B::@field::values |
| firstFragment: #F4 |
| type: List<B> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::B::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::B::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::B::@getter::v |
| firstFragment: #F6 |
| returnType: B |
| variable: <testLibrary>::@enum::B::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::B::@getter::values |
| firstFragment: #F7 |
| returnType: List<B> |
| variable: <testLibrary>::@enum::B::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::B::@method::foo |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional hasImplicitType a |
| firstFragment: #F9 |
| type: String |
| returnType: int |
| '''); |
| } |
| |
| test_method_augmentation_add_inferTypes_usingMixin() async { |
| newFile('$testPackageLibPath/a.dart', r''' |
| mixin A { |
| int foo(String a) => 0; |
| } |
| '''); |
| |
| var library = await buildLibrary(r''' |
| import 'a.dart'; |
| |
| enum B { |
| v; |
| foo(a) => 0; |
| } |
| |
| augment enum B with A {} |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| enums |
| #F1 enum B (nameOffset:23) (firstTokenOffset:18) (offset:23) |
| element: <testLibrary>::@enum::B |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@enum::B::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: B @-1 |
| element: <testLibrary>::@enum::B |
| type: B |
| element: <testLibrary>::@enum::B::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: B |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::B::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::B::@getter::v |
| staticType: B |
| rightBracket: ] @0 |
| staticType: List<B> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::B::@constructor::new |
| typeName: B |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::B::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@enum::B::@getter::values |
| methods |
| #F8 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo (nameOffset:34) (firstTokenOffset:34) (offset:34) |
| element: <testLibrary>::@enum::B::@method::foo |
| formalParameters |
| #F9 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:38) (firstTokenOffset:38) (offset:38) |
| element: <testLibrary>::@enum::B::@method::foo::@formalParameter::a |
| #F2 isAugmentation enum B (nameOffset:63) (firstTokenOffset:50) (offset:63) |
| element: <testLibrary>::@enum::B |
| previousFragment: #F1 |
| enums |
| isSimplyBounded enum B |
| reference: <testLibrary>::@enum::B |
| firstFragment: #F1 |
| supertype: Enum |
| mixins |
| A |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::B::@field::v |
| firstFragment: #F3 |
| type: B |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::B::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::B::@field::values |
| firstFragment: #F4 |
| type: List<B> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::B::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::B::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::B::@getter::v |
| firstFragment: #F6 |
| returnType: B |
| variable: <testLibrary>::@enum::B::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::B::@getter::values |
| firstFragment: #F7 |
| returnType: List<B> |
| variable: <testLibrary>::@enum::B::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::B::@method::foo |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional hasImplicitType a |
| firstFragment: #F9 |
| type: String |
| returnType: int |
| '''); |
| } |
| |
| test_method_augmentation_add_withDefaultValue() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v |
| } |
| |
| augment enum A {; |
| void foo([int x = 42]) {} |
| } |
| '''); |
| |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:29) (firstTokenOffset:16) (offset:29) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:41) (firstTokenOffset:36) (offset:41) |
| element: <testLibrary>::@enum::A::@method::foo |
| formalParameters |
| #F9 optionalPositional isOriginDeclaration x (nameOffset:50) (firstTokenOffset:46) (offset:50) |
| element: <testLibrary>::@enum::A::@method::foo::@formalParameter::x |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 42 @54 |
| staticType: int |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F8 |
| formalParameters |
| #E0 optionalPositional hasDefaultValue x |
| firstFragment: #F9 |
| type: int |
| constantInitializer |
| fragment: #F9 |
| expression: expression_2 |
| returnType: void |
| '''); |
| } |
| |
| test_method_augmentation_chain() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| void foo1() {} |
| void foo2() {} |
| } |
| |
| augment enum A {; |
| augment void foo1() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::A::@method::foo1 |
| nextFragment: #F9 |
| #F10 isCompleteDeclaration isOriginDeclaration foo2 (nameOffset:38) (firstTokenOffset:33) (offset:38) |
| element: <testLibrary>::@enum::A::@method::foo2 |
| #F2 isAugmentation enum A (nameOffset:64) (firstTokenOffset:51) (offset:64) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| methods |
| #F9 isAugmentation isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:84) (firstTokenOffset:71) (offset:84) |
| element: <testLibrary>::@enum::A::@method::foo1 |
| previousFragment: #F8 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@method::foo1 |
| firstFragment: #F8 |
| returnType: void |
| isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@method::foo2 |
| firstFragment: #F10 |
| returnType: void |
| '''); |
| } |
| |
| test_method_augmentation_chain_generic() async { |
| var library = await buildLibrary(r''' |
| enum A<T> { |
| v<int>(); |
| T foo() => throw 0; |
| } |
| |
| augment enum A<T> {; |
| augment T foo() => throw 0; |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| typeParameters |
| #F3 T (nameOffset:7) (firstTokenOffset:7) (offset:7) |
| element: #E0 T |
| nextFragment: #F4 |
| fields |
| #F5 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| typeArguments: TypeArgumentList |
| leftBracket: < @15 |
| arguments |
| NamedType |
| name: int @16 |
| element: dart:core::@class::int |
| type: int |
| rightBracket: > @19 |
| element: <testLibrary>::@enum::A |
| type: A<int> |
| element: ConstructorMember |
| baseElement: <testLibrary>::@enum::A::@constructor::new |
| substitution: {T: int} |
| argumentList: ArgumentList |
| leftParenthesis: ( @20 |
| rightParenthesis: ) @21 |
| staticType: A<int> |
| #F6 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A<int> |
| rightBracket: ] @0 |
| staticType: List<A<dynamic>> |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:14) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F10 isCompleteDeclaration isOriginDeclaration foo (nameOffset:28) (firstTokenOffset:26) (offset:28) |
| element: <testLibrary>::@enum::A::@method::foo |
| nextFragment: #F11 |
| #F2 isAugmentation enum A (nameOffset:62) (firstTokenOffset:49) (offset:62) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| typeParameters |
| #F4 T (nameOffset:64) (firstTokenOffset:64) (offset:64) |
| element: #E0 T |
| previousFragment: #F3 |
| methods |
| #F11 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:82) (firstTokenOffset:72) (offset:82) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F10 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F3 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F5 |
| type: A<int> |
| constantInitializer |
| fragment: #F5 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F6 |
| type: List<A<dynamic>> |
| constantInitializer |
| fragment: #F6 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| hasEnclosingTypeParameterReference isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A<int> |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A<dynamic>> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F10 |
| returnType: T |
| '''); |
| } |
| |
| test_method_augmentation_chain_twoDeclarations() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| void foo() {} |
| } |
| |
| augment enum A {; |
| augment void foo() {} |
| } |
| augment enum A {; |
| augment void foo() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::A::@method::foo |
| nextFragment: #F9 |
| #F2 isAugmentation enum A (nameOffset:46) (firstTokenOffset:33) (offset:46) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F10 |
| methods |
| #F9 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:66) (firstTokenOffset:53) (offset:66) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F8 |
| nextFragment: #F11 |
| #F10 isAugmentation enum A (nameOffset:90) (firstTokenOffset:77) (offset:90) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| methods |
| #F11 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:110) (firstTokenOffset:97) (offset:110) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F9 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F8 |
| returnType: void |
| '''); |
| } |
| |
| test_method_augmentation_chain_twoInSameDeclaration() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| void foo() {} |
| } |
| |
| augment enum A {; |
| augment void foo() {} |
| augment void foo() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::A::@method::foo |
| nextFragment: #F9 |
| #F2 isAugmentation enum A (nameOffset:46) (firstTokenOffset:33) (offset:46) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| methods |
| #F9 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:66) (firstTokenOffset:53) (offset:66) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F8 |
| nextFragment: #F10 |
| #F10 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:90) (firstTokenOffset:77) (offset:90) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F9 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F8 |
| returnType: void |
| '''); |
| } |
| |
| test_method_augmentation_chain_typeParameters_count_112() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| void foo<T>() {} |
| } |
| augment enum A {; |
| augment void foo<T>() {} |
| } |
| augment enum A {; |
| augment void foo<T, U>() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::A::@method::foo |
| nextFragment: #F9 |
| typeParameters |
| #F10 T (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: #E0 T |
| nextFragment: #F11 |
| #F12 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: #E1 U |
| nextFragment: #F13 |
| #F2 isAugmentation enum A (nameOffset:48) (firstTokenOffset:35) (offset:48) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F14 |
| methods |
| #F9 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:68) (firstTokenOffset:55) (offset:68) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F8 |
| nextFragment: #F15 |
| typeParameters |
| #F11 T (nameOffset:72) (firstTokenOffset:72) (offset:72) |
| element: #E0 T |
| previousFragment: #F10 |
| nextFragment: #F16 |
| #F13 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:68) |
| element: #E1 U |
| previousFragment: #F12 |
| nextFragment: #F17 |
| #F14 isAugmentation enum A (nameOffset:95) (firstTokenOffset:82) (offset:95) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| methods |
| #F15 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:115) (firstTokenOffset:102) (offset:115) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F9 |
| typeParameters |
| #F16 T (nameOffset:119) (firstTokenOffset:119) (offset:119) |
| element: #E0 T |
| previousFragment: #F11 |
| #F17 U (nameOffset:122) (firstTokenOffset:122) (offset:122) |
| element: #E1 U |
| previousFragment: #F13 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F8 |
| typeParameters |
| #E0 T |
| firstFragment: #F10 |
| #E1 U |
| firstFragment: #F12 |
| returnType: void |
| '''); |
| } |
| |
| test_method_augmentation_chain_typeParameters_count_123() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| void foo<T>() {} |
| } |
| augment enum A {; |
| augment void foo<T, U>() {} |
| } |
| augment enum A {; |
| augment void foo<T, U, V>() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::A::@method::foo |
| nextFragment: #F9 |
| typeParameters |
| #F10 T (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: #E0 T |
| nextFragment: #F11 |
| #F12 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: #E1 U |
| nextFragment: #F13 |
| #F14 isOriginOtherFragmentOfEnclosing V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: #E2 V |
| nextFragment: #F15 |
| #F2 isAugmentation enum A (nameOffset:48) (firstTokenOffset:35) (offset:48) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F16 |
| methods |
| #F9 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:68) (firstTokenOffset:55) (offset:68) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F8 |
| nextFragment: #F17 |
| typeParameters |
| #F11 T (nameOffset:72) (firstTokenOffset:72) (offset:72) |
| element: #E0 T |
| previousFragment: #F10 |
| nextFragment: #F18 |
| #F13 U (nameOffset:75) (firstTokenOffset:75) (offset:75) |
| element: #E1 U |
| previousFragment: #F12 |
| nextFragment: #F19 |
| #F15 isOriginOtherFragmentOfEnclosing V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:68) |
| element: #E2 V |
| previousFragment: #F14 |
| nextFragment: #F20 |
| #F16 isAugmentation enum A (nameOffset:98) (firstTokenOffset:85) (offset:98) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| methods |
| #F17 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:118) (firstTokenOffset:105) (offset:118) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F9 |
| typeParameters |
| #F18 T (nameOffset:122) (firstTokenOffset:122) (offset:122) |
| element: #E0 T |
| previousFragment: #F11 |
| #F19 U (nameOffset:125) (firstTokenOffset:125) (offset:125) |
| element: #E1 U |
| previousFragment: #F13 |
| #F20 V (nameOffset:128) (firstTokenOffset:128) (offset:128) |
| element: #E2 V |
| previousFragment: #F15 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F8 |
| typeParameters |
| #E0 T |
| firstFragment: #F10 |
| #E1 U |
| firstFragment: #F12 |
| #E2 V |
| firstFragment: #F14 |
| returnType: void |
| '''); |
| } |
| |
| test_method_augmentation_chain_typeParameters_count_211() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| void foo<T, U>() {} |
| } |
| augment enum A {; |
| augment void foo<T>() {} |
| } |
| augment enum A {; |
| augment void foo<T>() {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| methods |
| #F8 isCompleteDeclaration isOriginDeclaration foo (nameOffset:21) (firstTokenOffset:16) (offset:21) |
| element: <testLibrary>::@enum::A::@method::foo |
| nextFragment: #F9 |
| typeParameters |
| #F10 T (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: #E0 T |
| nextFragment: #F11 |
| #F12 U (nameOffset:28) (firstTokenOffset:28) (offset:28) |
| element: #E1 U |
| nextFragment: #F13 |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| nextFragment: #F14 |
| methods |
| #F9 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:71) (firstTokenOffset:58) (offset:71) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F8 |
| nextFragment: #F15 |
| typeParameters |
| #F11 T (nameOffset:75) (firstTokenOffset:75) (offset:75) |
| element: #E0 T |
| previousFragment: #F10 |
| nextFragment: #F16 |
| #F13 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: #E1 U |
| previousFragment: #F12 |
| nextFragment: #F17 |
| #F14 isAugmentation enum A (nameOffset:98) (firstTokenOffset:85) (offset:98) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F2 |
| methods |
| #F15 isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:118) (firstTokenOffset:105) (offset:118) |
| element: <testLibrary>::@enum::A::@method::foo |
| previousFragment: #F9 |
| typeParameters |
| #F16 T (nameOffset:122) (firstTokenOffset:122) (offset:122) |
| element: #E0 T |
| previousFragment: #F11 |
| #F17 isOriginOtherFragmentOfEnclosing U (nameOffset:<null>) (firstTokenOffset:<null>) (offset:118) |
| element: #E1 U |
| previousFragment: #F13 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@method::foo |
| firstFragment: #F8 |
| typeParameters |
| #E0 T |
| firstFragment: #F10 |
| #E1 U |
| firstFragment: #F12 |
| returnType: void |
| '''); |
| } |
| |
| test_method_metadata() async { |
| var library = await buildLibrary(r''' |
| const a = 42; |
| |
| enum E { |
| v; |
| |
| @a |
| void foo() {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:20) (firstTokenOffset:15) (offset:20) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::values |
| methods |
| #F7 isCompleteDeclaration isOriginDeclaration foo (nameOffset:42) (firstTokenOffset:32) (offset:42) |
| element: <testLibrary>::@enum::E::@method::foo |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: a @33 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| topLevelVariables |
| #F8 hasImplicitType hasInitializer isConst isOriginDeclaration isStatic a (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::a |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 42 @10 |
| staticType: int |
| getters |
| #F9 isCompleteDeclaration isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::a |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::E::@method::foo |
| firstFragment: #F7 |
| metadata |
| Annotation |
| atSign: @ @32 |
| name: SimpleIdentifier |
| token: a @33 |
| element: <testLibrary>::@getter::a |
| staticType: null |
| element: <testLibrary>::@getter::a |
| returnType: void |
| topLevelVariables |
| hasImplicitType hasInitializer isConst isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F8 |
| type: int |
| constantInitializer |
| fragment: #F8 |
| expression: expression_2 |
| getter: <testLibrary>::@getter::a |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::a |
| '''); |
| } |
| |
| test_method_toString() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| String toString() => 'E'; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| constructors |
| #F4 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F5 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F6 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| methods |
| #F7 isCompleteDeclaration isOriginDeclaration toString (nameOffset:24) (firstTokenOffset:17) (offset:24) |
| element: <testLibrary>::@enum::E::@method::toString |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F4 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F5 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F6 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| methods |
| isOriginDeclaration toString |
| reference: <testLibrary>::@enum::E::@method::toString |
| firstFragment: #F7 |
| returnType: String |
| '''); |
| } |
| |
| test_primaryInitializerScope_fieldInitializer_instance() async { |
| var library = await buildLibrary(r''' |
| enum E(int foo) { |
| v(0); |
| |
| final bar = foo; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @21 |
| arguments |
| IntegerLiteral |
| literal: 0 @22 |
| staticType: int |
| rightParenthesis: ) @23 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType hasInitializer isFinal isOriginDeclaration bar (nameOffset:35) (firstTokenOffset:35) (offset:35) |
| element: <testLibrary>::@enum::E::@field::bar |
| initializer: expression_2 |
| SimpleIdentifier |
| token: foo @41 |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| staticType: int |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration foo (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable bar (nameOffset:<null>) (firstTokenOffset:<null>) (offset:35) |
| element: <testLibrary>::@enum::E::@getter::bar |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isTypeInferredFromInitializer bar |
| reference: <testLibrary>::@enum::E::@field::bar |
| firstFragment: #F4 |
| type: int |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::bar |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional foo |
| firstFragment: #F6 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable bar |
| reference: <testLibrary>::@enum::E::@getter::bar |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::bar |
| '''); |
| } |
| |
| test_primaryInitializerScope_fieldInitializer_instance_declaringFormal() async { |
| var library = await buildLibrary(r''' |
| enum E(final int foo) { |
| v(0); |
| |
| final bar = foo; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @27 |
| arguments |
| IntegerLiteral |
| literal: 0 @28 |
| staticType: int |
| rightParenthesis: ) @29 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isFinal isOriginDeclaringFormalParameter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::foo |
| #F5 hasImplicitType hasInitializer isFinal isOriginDeclaration bar (nameOffset:41) (firstTokenOffset:41) (offset:41) |
| element: <testLibrary>::@enum::E::@field::bar |
| initializer: expression_2 |
| SimpleIdentifier |
| token: foo @47 |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| staticType: int |
| constructors |
| #F6 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| formalParameters |
| #F7 requiredPositional isDeclaring isFinal isOriginDeclaration this.foo (nameOffset:17) (firstTokenOffset:7) (offset:17) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F10 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::foo |
| #F11 isCompleteDeclaration isOriginVariable bar (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@enum::E::@getter::bar |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isFinal isOriginDeclaringFormalParameter foo |
| reference: <testLibrary>::@enum::E::@field::foo |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@enum::E::@getter::foo |
| declaringFormalParameter: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isTypeInferredFromInitializer bar |
| reference: <testLibrary>::@enum::E::@field::bar |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::bar |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F6 |
| formalParameters |
| #E0 requiredPositional isDeclaring isFinal this.foo |
| firstFragment: #F7 |
| type: int |
| field: <testLibrary>::@enum::E::@field::foo |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F8 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F9 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::E::@getter::foo |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::foo |
| isOriginVariable bar |
| reference: <testLibrary>::@enum::E::@getter::bar |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::bar |
| '''); |
| } |
| |
| test_primaryInitializerScope_fieldInitializer_instance_late() async { |
| var library = await buildLibrary(r''' |
| enum E(int foo) { |
| v(0); |
| |
| late final bar = foo; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @21 |
| arguments |
| IntegerLiteral |
| literal: 0 @22 |
| staticType: int |
| rightParenthesis: ) @23 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType hasInitializer isFinal isLate isOriginDeclaration bar (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: <testLibrary>::@enum::E::@field::bar |
| initializer: expression_2 |
| SimpleIdentifier |
| token: foo @46 |
| element: <null> |
| staticType: InvalidType |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration foo (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable bar (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@enum::E::@getter::bar |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType hasInitializer isFinal isLate isOriginDeclaration isTypeInferredFromInitializer bar |
| reference: <testLibrary>::@enum::E::@field::bar |
| firstFragment: #F4 |
| type: InvalidType |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::bar |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional foo |
| firstFragment: #F6 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable bar |
| reference: <testLibrary>::@enum::E::@getter::bar |
| firstFragment: #F9 |
| returnType: InvalidType |
| variable: <testLibrary>::@enum::E::@field::bar |
| '''); |
| } |
| |
| test_primaryInitializerScope_fieldInitializer_instance_typePromotion() async { |
| var library = await buildLibrary(r''' |
| enum E(int? foo) { |
| v(0); |
| |
| final bar = foo != null ? foo : 0; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @22 |
| arguments |
| IntegerLiteral |
| literal: 0 @23 |
| staticType: int |
| rightParenthesis: ) @24 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType hasInitializer isFinal isOriginDeclaration bar (nameOffset:36) (firstTokenOffset:36) (offset:36) |
| element: <testLibrary>::@enum::E::@field::bar |
| initializer: expression_2 |
| ConditionalExpression |
| condition: BinaryExpression |
| leftOperand: SimpleIdentifier |
| token: foo @42 |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| staticType: int? |
| operator: != @46 |
| rightOperand: NullLiteral |
| literal: null @49 |
| staticType: Null |
| element: dart:core::@class::num::@method::== |
| staticInvokeType: bool Function(Object) |
| staticType: bool |
| question: ? @54 |
| thenExpression: SimpleIdentifier |
| token: foo @56 |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| staticType: int |
| colon: : @60 |
| elseExpression: IntegerLiteral |
| literal: 0 @62 |
| staticType: int |
| staticType: int |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration foo (nameOffset:12) (firstTokenOffset:7) (offset:12) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable bar (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@enum::E::@getter::bar |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isTypeInferredFromInitializer bar |
| reference: <testLibrary>::@enum::E::@field::bar |
| firstFragment: #F4 |
| type: int |
| constantInitializer |
| fragment: #F4 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::E::@getter::bar |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional foo |
| firstFragment: #F6 |
| type: int? |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable bar |
| reference: <testLibrary>::@enum::E::@getter::bar |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::E::@field::bar |
| '''); |
| } |
| |
| test_primaryInitializerScope_fieldInitializer_static() async { |
| var library = await buildLibrary(r''' |
| enum E(int foo) { |
| v(0); |
| |
| static final bar = foo; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @21 |
| arguments |
| IntegerLiteral |
| literal: 0 @22 |
| staticType: int |
| rightParenthesis: ) @23 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic bar (nameOffset:42) (firstTokenOffset:42) (offset:42) |
| element: <testLibrary>::@enum::E::@field::bar |
| constructors |
| #F5 isCompleteDeclaration isConst isOriginDeclaration isPrimary new (nameOffset:<null>) (firstTokenOffset:5) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| typeNameOffset: 5 |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration foo (nameOffset:11) (firstTokenOffset:7) (offset:11) |
| element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::foo |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable isStatic bar (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@enum::E::@getter::bar |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic isTypeInferredFromInitializer bar |
| reference: <testLibrary>::@enum::E::@field::bar |
| firstFragment: #F4 |
| type: InvalidType |
| getter: <testLibrary>::@enum::E::@getter::bar |
| constructors |
| isConst isOriginDeclaration isPrimary new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional foo |
| firstFragment: #F6 |
| type: int |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F8 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| isOriginVariable isStatic bar |
| reference: <testLibrary>::@enum::E::@getter::bar |
| firstFragment: #F9 |
| returnType: InvalidType |
| variable: <testLibrary>::@enum::E::@field::bar |
| '''); |
| } |
| |
| test_setter() async { |
| var library = await buildLibrary(r''' |
| enum E { |
| v; |
| |
| set foo(int _) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::E |
| fields |
| #F2 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::E::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: E @-1 |
| element: <testLibrary>::@enum::E |
| type: E |
| element: <testLibrary>::@enum::E::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: E |
| #F3 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::E::@getter::v |
| staticType: E |
| rightBracket: ] @0 |
| staticType: List<E> |
| #F4 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@field::foo |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@constructor::new |
| typeName: E |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::E::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::E::@getter::values |
| setters |
| #F8 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo (nameOffset:21) (firstTokenOffset:17) (offset:21) |
| element: <testLibrary>::@enum::E::@setter::foo |
| formalParameters |
| #F9 requiredPositional isOriginDeclaration _ (nameOffset:29) (firstTokenOffset:25) (offset:29) |
| element: <testLibrary>::@enum::E::@setter::foo::@formalParameter::_ |
| enums |
| isSimplyBounded enum E |
| reference: <testLibrary>::@enum::E |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::E::@field::v |
| firstFragment: #F2 |
| type: E |
| constantInitializer |
| fragment: #F2 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::E::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::E::@field::values |
| firstFragment: #F3 |
| type: List<E> |
| constantInitializer |
| fragment: #F3 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::E::@getter::values |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@enum::E::@field::foo |
| firstFragment: #F4 |
| type: int |
| setter: <testLibrary>::@enum::E::@setter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::E::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::E::@getter::v |
| firstFragment: #F6 |
| returnType: E |
| variable: <testLibrary>::@enum::E::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::E::@getter::values |
| firstFragment: #F7 |
| returnType: List<E> |
| variable: <testLibrary>::@enum::E::@field::values |
| setters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::E::@setter::foo |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F9 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::E::@field::foo |
| '''); |
| } |
| |
| test_setter_augmentation_add() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| set foo1(int _) {} |
| } |
| |
| augment enum A {; |
| set foo2(int _) {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isOriginGetterSetter foo1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo1 |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| setters |
| #F9 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:20) (firstTokenOffset:16) (offset:20) |
| element: <testLibrary>::@enum::A::@setter::foo1 |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration _ (nameOffset:29) (firstTokenOffset:25) (offset:29) |
| element: <testLibrary>::@enum::A::@setter::foo1::@formalParameter::_ |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F11 isOriginGetterSetter foo2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@enum::A::@field::foo2 |
| setters |
| #F12 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo2 (nameOffset:62) (firstTokenOffset:58) (offset:62) |
| element: <testLibrary>::@enum::A::@setter::foo2 |
| formalParameters |
| #F13 requiredPositional isOriginDeclaration _ (nameOffset:71) (firstTokenOffset:67) (offset:71) |
| element: <testLibrary>::@enum::A::@setter::foo2::@formalParameter::_ |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo1 |
| reference: <testLibrary>::@enum::A::@field::foo1 |
| firstFragment: #F5 |
| type: int |
| setter: <testLibrary>::@enum::A::@setter::foo1 |
| isOriginGetterSetter foo2 |
| reference: <testLibrary>::@enum::A::@field::foo2 |
| firstFragment: #F11 |
| type: int |
| setter: <testLibrary>::@enum::A::@setter::foo2 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| setters |
| isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@setter::foo1 |
| firstFragment: #F9 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo1 |
| isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@setter::foo2 |
| firstFragment: #F12 |
| formalParameters |
| #E1 requiredPositional _ |
| firstFragment: #F13 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo2 |
| '''); |
| } |
| |
| test_setter_augmentation_chain() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| set foo1(int _) {} |
| set foo2(int _) {} |
| } |
| |
| augment enum A {; |
| augment set foo1(int _) {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 isOriginGetterSetter foo1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo1 |
| #F6 isOriginGetterSetter foo2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::foo2 |
| constructors |
| #F7 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F8 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F9 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| setters |
| #F10 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:20) (firstTokenOffset:16) (offset:20) |
| element: <testLibrary>::@enum::A::@setter::foo1 |
| formalParameters |
| #F11 requiredPositional isOriginDeclaration _ (nameOffset:29) (firstTokenOffset:25) (offset:29) |
| element: <testLibrary>::@enum::A::@setter::foo1::@formalParameter::_ |
| nextFragment: #F12 |
| nextFragment: #F13 |
| #F14 hasImplicitReturnType isCompleteDeclaration isOriginDeclaration foo2 (nameOffset:41) (firstTokenOffset:37) (offset:41) |
| element: <testLibrary>::@enum::A::@setter::foo2 |
| formalParameters |
| #F15 requiredPositional isOriginDeclaration _ (nameOffset:50) (firstTokenOffset:46) (offset:50) |
| element: <testLibrary>::@enum::A::@setter::foo2::@formalParameter::_ |
| #F2 isAugmentation enum A (nameOffset:72) (firstTokenOffset:59) (offset:72) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| setters |
| #F13 hasImplicitReturnType isAugmentation isCompleteDeclaration isOriginDeclaration foo1 (nameOffset:91) (firstTokenOffset:79) (offset:91) |
| element: <testLibrary>::@enum::A::@setter::foo1 |
| formalParameters |
| #F12 requiredPositional isOriginDeclaration _ (nameOffset:100) (firstTokenOffset:96) (offset:100) |
| element: <testLibrary>::@enum::A::@setter::foo1::@formalParameter::_ |
| previousFragment: #F11 |
| previousFragment: #F10 |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo1 |
| reference: <testLibrary>::@enum::A::@field::foo1 |
| firstFragment: #F5 |
| type: int |
| setter: <testLibrary>::@enum::A::@setter::foo1 |
| isOriginGetterSetter foo2 |
| reference: <testLibrary>::@enum::A::@field::foo2 |
| firstFragment: #F6 |
| type: int |
| setter: <testLibrary>::@enum::A::@setter::foo2 |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F7 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F9 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| setters |
| isOriginDeclaration foo1 |
| reference: <testLibrary>::@enum::A::@setter::foo1 |
| firstFragment: #F10 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo1 |
| isOriginDeclaration foo2 |
| reference: <testLibrary>::@enum::A::@setter::foo2 |
| firstFragment: #F14 |
| formalParameters |
| #E1 requiredPositional _ |
| firstFragment: #F15 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo2 |
| '''); |
| } |
| |
| test_setter_augmentation_chain_fromField() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v; |
| final int foo = 0; |
| } |
| |
| augment enum A {; |
| augment set foo(int _) {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| #F5 hasInitializer isFinal isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@enum::A::@field::foo |
| initializer: expression_2 |
| IntegerLiteral |
| literal: 0 @32 |
| staticType: int |
| constructors |
| #F6 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F8 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F9 isCompleteDeclaration isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@enum::A::@getter::foo |
| #F2 isAugmentation enum A (nameOffset:51) (firstTokenOffset:38) (offset:51) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| setters |
| #F10 hasImplicitReturnType isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:70) (firstTokenOffset:58) (offset:70) |
| element: <testLibrary>::@enum::A::@setter::foo |
| formalParameters |
| #F11 requiredPositional isOriginDeclaration _ (nameOffset:78) (firstTokenOffset:74) (offset:78) |
| element: <testLibrary>::@enum::A::@setter::foo::@formalParameter::_ |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| hasInitializer isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F5 |
| type: int |
| constantInitializer |
| fragment: #F5 |
| expression: expression_2 |
| getter: <testLibrary>::@enum::A::@getter::foo |
| setter: <testLibrary>::@enum::A::@setter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F6 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F7 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F8 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| isOriginVariable foo |
| reference: <testLibrary>::@enum::A::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@enum::A::@field::foo |
| setters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@setter::foo |
| firstFragment: #F10 |
| previousFragmentOfDifferentKind: #F5 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| |
| test_setter_augmentation_chain_noIntroductoryDeclaration() async { |
| var library = await buildLibrary(r''' |
| enum A { |
| v |
| } |
| |
| augment enum A {; |
| augment set foo(int _) {} |
| } |
| '''); |
| |
| configuration.withConstantInitializers = false; |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| enums |
| #F1 enum A (nameOffset:5) (firstTokenOffset:0) (offset:5) |
| element: <testLibrary>::@enum::A |
| nextFragment: #F2 |
| fields |
| #F3 hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic v (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: <testLibrary>::@enum::A::@field::v |
| initializer: expression_0 |
| InstanceCreationExpression |
| constructorName: ConstructorName |
| type: NamedType |
| name: A @-1 |
| element: <testLibrary>::@enum::A |
| type: A |
| element: <testLibrary>::@enum::A::@constructor::new |
| argumentList: ArgumentList |
| leftParenthesis: ( @0 |
| rightParenthesis: ) @0 |
| staticType: A |
| #F4 isConst isOriginEnumValues isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@field::values |
| initializer: expression_1 |
| ListLiteral |
| leftBracket: [ @0 |
| elements |
| SimpleIdentifier |
| token: v @-1 |
| element: <testLibrary>::@enum::A::@getter::v |
| staticType: A |
| rightBracket: ] @0 |
| staticType: List<A> |
| constructors |
| #F5 isConst isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isCompleteDeclaration isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11) |
| element: <testLibrary>::@enum::A::@getter::v |
| #F7 isCompleteDeclaration isOriginVariable isStatic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5) |
| element: <testLibrary>::@enum::A::@getter::values |
| #F2 isAugmentation enum A (nameOffset:29) (firstTokenOffset:16) (offset:29) |
| element: <testLibrary>::@enum::A |
| previousFragment: #F1 |
| fields |
| #F8 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@enum::A::@field::foo |
| setters |
| #F9 hasImplicitReturnType isAugmentation isCompleteDeclaration isOriginDeclaration foo (nameOffset:48) (firstTokenOffset:36) (offset:48) |
| element: <testLibrary>::@enum::A::@setter::foo |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration _ (nameOffset:56) (firstTokenOffset:52) (offset:56) |
| element: <testLibrary>::@enum::A::@setter::foo::@formalParameter::_ |
| enums |
| isSimplyBounded enum A |
| reference: <testLibrary>::@enum::A |
| firstFragment: #F1 |
| supertype: Enum |
| fields |
| hasImplicitType hasInitializer isConst isEnumConstant isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@enum::A::@field::v |
| firstFragment: #F3 |
| type: A |
| constantInitializer |
| fragment: #F3 |
| expression: expression_0 |
| getter: <testLibrary>::@enum::A::@getter::v |
| isConst isOriginEnumValues isStatic values |
| reference: <testLibrary>::@enum::A::@field::values |
| firstFragment: #F4 |
| type: List<A> |
| constantInitializer |
| fragment: #F4 |
| expression: expression_1 |
| getter: <testLibrary>::@enum::A::@getter::values |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@enum::A::@field::foo |
| firstFragment: #F8 |
| type: int |
| setter: <testLibrary>::@enum::A::@setter::foo |
| constructors |
| isConst isOriginImplicitDefault new |
| reference: <testLibrary>::@enum::A::@constructor::new |
| firstFragment: #F5 |
| superConstructor: dart:core::@class::Enum::@constructor::new |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@enum::A::@getter::v |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@enum::A::@field::v |
| isOriginVariable isStatic values |
| reference: <testLibrary>::@enum::A::@getter::values |
| firstFragment: #F7 |
| returnType: List<A> |
| variable: <testLibrary>::@enum::A::@field::values |
| setters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@enum::A::@setter::foo |
| firstFragment: #F9 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@enum::A::@field::foo |
| '''); |
| } |
| } |
| |
| @reflectiveTest |
| class EnumElementTest_fromBytes extends EnumElementTest { |
| @override |
| bool get keepLinkingLibraries => false; |
| } |
| |
| @reflectiveTest |
| class EnumElementTest_keepLinking extends EnumElementTest { |
| @override |
| bool get keepLinkingLibraries => true; |
| } |