Skip to content

Commit 05aed28

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Fix linkNodeTokens() for List<Token>.
Bug: #61674 Change-Id: I1e7a19a08fe7b78ab53ef80d60817567c04bf187 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/452849 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent d952c3e commit 05aed28

File tree

2 files changed

+113
-2
lines changed

2 files changed

+113
-2
lines changed

pkg/analyzer/lib/src/dart/ast/ast.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,13 +1503,16 @@ sealed class AstNodeImpl implements AstNode {
15031503
lastToken?.next = token;
15041504
token.previous = lastToken;
15051505
lastToken = token;
1506-
case NodeListImpl nodeList:
1506+
case List<Token> tokenList:
15071507
// Push in reverse order, so process in source order.
1508-
stack.addAll(nodeList.reversed);
1508+
stack.addAll(tokenList.reversed);
15091509
case AstNodeImpl node:
15101510
// Push in reverse order, so process in source order.
15111511
var entities = node._childEntities.entities;
15121512
stack.addAll(entities.reversed.map((e) => e.value));
1513+
case NodeListImpl nodeList:
1514+
// Push in reverse order, so process in source order.
1515+
stack.addAll(nodeList.reversed);
15131516
default:
15141517
throw UnimplementedError('${entity.runtimeType}');
15151518
}

pkg/analyzer/test/src/summary/elements/enum_test.dart

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,114 @@ library
176176
''');
177177
}
178178

179+
test_enum_constant_arguments_symbolLiteral() async {
180+
var library = await buildLibrary(r'''
181+
enum E {
182+
v(#foo.bar);
183+
const E(Object _);
184+
}
185+
''');
186+
checkElementText(library, r'''
187+
library
188+
reference: <testLibrary>
189+
fragments
190+
#F0 <testLibraryFragment>
191+
element: <testLibrary>
192+
enums
193+
#F1 enum E (nameOffset:5) (firstTokenOffset:0) (offset:5)
194+
element: <testLibrary>::@enum::E
195+
fields
196+
#F2 hasInitializer v (nameOffset:11) (firstTokenOffset:11) (offset:11)
197+
element: <testLibrary>::@enum::E::@field::v
198+
initializer: expression_0
199+
InstanceCreationExpression
200+
constructorName: ConstructorName
201+
type: NamedType
202+
name: E @-1
203+
element2: <testLibrary>::@enum::E
204+
type: E
205+
element: <testLibrary>::@enum::E::@constructor::new
206+
argumentList: ArgumentList
207+
leftParenthesis: ( @12
208+
arguments
209+
SymbolLiteral
210+
poundSign: # @13
211+
components
212+
foo
213+
offset: 14
214+
bar
215+
offset: 18
216+
rightParenthesis: ) @21
217+
staticType: E
218+
#F3 synthetic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5)
219+
element: <testLibrary>::@enum::E::@field::values
220+
initializer: expression_1
221+
ListLiteral
222+
leftBracket: [ @0
223+
elements
224+
SimpleIdentifier
225+
token: v @-1
226+
element: <testLibrary>::@enum::E::@getter::v
227+
staticType: E
228+
rightBracket: ] @0
229+
staticType: List<E>
230+
constructors
231+
#F4 const new (nameOffset:<null>) (firstTokenOffset:26) (offset:32)
232+
element: <testLibrary>::@enum::E::@constructor::new
233+
typeName: E
234+
typeNameOffset: 32
235+
formalParameters
236+
#F5 _ (nameOffset:41) (firstTokenOffset:34) (offset:41)
237+
element: <testLibrary>::@enum::E::@constructor::new::@formalParameter::_
238+
getters
239+
#F6 synthetic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:11)
240+
element: <testLibrary>::@enum::E::@getter::v
241+
#F7 synthetic values (nameOffset:<null>) (firstTokenOffset:<null>) (offset:5)
242+
element: <testLibrary>::@enum::E::@getter::values
243+
enums
244+
enum E
245+
reference: <testLibrary>::@enum::E
246+
firstFragment: #F1
247+
supertype: Enum
248+
fields
249+
static const enumConstant hasInitializer v
250+
reference: <testLibrary>::@enum::E::@field::v
251+
firstFragment: #F2
252+
type: E
253+
constantInitializer
254+
fragment: #F2
255+
expression: expression_0
256+
getter: <testLibrary>::@enum::E::@getter::v
257+
synthetic static const values
258+
reference: <testLibrary>::@enum::E::@field::values
259+
firstFragment: #F3
260+
type: List<E>
261+
constantInitializer
262+
fragment: #F3
263+
expression: expression_1
264+
getter: <testLibrary>::@enum::E::@getter::values
265+
constructors
266+
const new
267+
reference: <testLibrary>::@enum::E::@constructor::new
268+
firstFragment: #F4
269+
formalParameters
270+
#E0 requiredPositional _
271+
firstFragment: #F5
272+
type: Object
273+
getters
274+
synthetic static v
275+
reference: <testLibrary>::@enum::E::@getter::v
276+
firstFragment: #F6
277+
returnType: E
278+
variable: <testLibrary>::@enum::E::@field::v
279+
synthetic static values
280+
reference: <testLibrary>::@enum::E::@getter::values
281+
firstFragment: #F7
282+
returnType: List<E>
283+
variable: <testLibrary>::@enum::E::@field::values
284+
''');
285+
}
286+
179287
test_enum_constant_inference() async {
180288
var library = await buildLibrary(r'''
181289
enum E<T> {

0 commit comments

Comments
 (0)