@@ -14,11 +14,37 @@ main() {
1414
1515@reflectiveTest
1616class EnumDeclarationParserTest extends ParserDiagnosticsTest {
17- test_augment () {
17+ test_augment_constant_add () {
1818 var parseResult = parseStringWithErrors (r'''
1919augment library 'a.dart';
2020
21- augment enum E {bar}
21+ augment enum E {
22+ v
23+ }
24+ ''' );
25+ parseResult.assertNoErrors ();
26+
27+ var node = parseResult.findNode.singleEnumDeclaration;
28+ assertParsedNodeText (node, r'''
29+ EnumDeclaration
30+ augmentKeyword: augment
31+ enumKeyword: enum
32+ name: E
33+ leftBracket: {
34+ constants
35+ EnumConstantDeclaration
36+ name: v
37+ rightBracket: }
38+ ''' );
39+ }
40+
41+ test_augment_constant_augment_withConstructor () {
42+ var parseResult = parseStringWithErrors (r'''
43+ augment library 'a.dart';
44+
45+ augment enum E {
46+ augment v.foo()
47+ }
2248''' );
2349 parseResult.assertNoErrors ();
2450
@@ -31,7 +57,114 @@ EnumDeclaration
3157 leftBracket: {
3258 constants
3359 EnumConstantDeclaration
34- name: bar
60+ augmentKeyword: augment
61+ name: v
62+ arguments: EnumConstantArguments
63+ constructorSelector: ConstructorSelector
64+ period: .
65+ name: SimpleIdentifier
66+ token: foo
67+ argumentList: ArgumentList
68+ leftParenthesis: (
69+ rightParenthesis: )
70+ rightBracket: }
71+ ''' );
72+ }
73+
74+ test_augment_noConstants_semicolon_method () {
75+ var parseResult = parseStringWithErrors (r'''
76+ augment library 'a.dart';
77+
78+ augment enum E {;
79+ void foo() {}
80+ }
81+ ''' );
82+ parseResult.assertNoErrors ();
83+
84+ var node = parseResult.findNode.singleEnumDeclaration;
85+ assertParsedNodeText (node, r'''
86+ EnumDeclaration
87+ augmentKeyword: augment
88+ enumKeyword: enum
89+ name: E
90+ leftBracket: {
91+ semicolon: ;
92+ members
93+ MethodDeclaration
94+ returnType: NamedType
95+ name: void
96+ name: foo
97+ parameters: FormalParameterList
98+ leftParenthesis: (
99+ rightParenthesis: )
100+ body: BlockFunctionBody
101+ block: Block
102+ leftBracket: {
103+ rightBracket: }
104+ rightBracket: }
105+ ''' );
106+ }
107+
108+ test_declaration_empty () {
109+ var parseResult = parseStringWithErrors (r'''
110+ enum E {}
111+ ''' );
112+ parseResult.assertNoErrors ();
113+
114+ var node = parseResult.findNode.singleEnumDeclaration;
115+ assertParsedNodeText (node, r'''
116+ EnumDeclaration
117+ enumKeyword: enum
118+ name: E
119+ leftBracket: {
120+ rightBracket: }
121+ ''' );
122+ }
123+
124+ test_declaration_noConstants_semicolon () {
125+ var parseResult = parseStringWithErrors (r'''
126+ enum E {;}
127+ ''' );
128+ parseResult.assertNoErrors ();
129+
130+ var node = parseResult.findNode.singleEnumDeclaration;
131+ assertParsedNodeText (node, r'''
132+ EnumDeclaration
133+ enumKeyword: enum
134+ name: E
135+ leftBracket: {
136+ semicolon: ;
137+ rightBracket: }
138+ ''' );
139+ }
140+
141+ test_declaration_noConstants_semicolon_method () {
142+ var parseResult = parseStringWithErrors (r'''
143+ enum E {;
144+ void foo() {}
145+ }
146+ ''' );
147+ parseResult.assertNoErrors ();
148+
149+ var node = parseResult.findNode.singleEnumDeclaration;
150+ assertParsedNodeText (node, r'''
151+ EnumDeclaration
152+ enumKeyword: enum
153+ name: E
154+ leftBracket: {
155+ semicolon: ;
156+ members
157+ MethodDeclaration
158+ returnType: NamedType
159+ name: void
160+ name: foo
161+ parameters: FormalParameterList
162+ leftParenthesis: (
163+ rightParenthesis: )
164+ body: BlockFunctionBody
165+ block: Block
166+ leftBracket: {
167+ rightBracket: }
35168 rightBracket: }
36169''' );
37170 }
0 commit comments