Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 55b9ec4

Browse files
author
Dart CI
committed
Version 2.17.0-192.0.dev
Merge commit '9dc81176ab8dabad51b42a24203eb85cee7334e3' into 'dev'
2 parents 7ee381e + 9dc8117 commit 55b9ec4

File tree

204 files changed

+3065
-3147
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

204 files changed

+3065
-3147
lines changed

pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6710,7 +6710,7 @@ class Parser {
67106710
break;
67116711
}
67126712
Token? colon = null;
6713-
if (optional(':', next.next!)) {
6713+
if (optional(':', next.next!) || /* recovery */ optional(':', next)) {
67146714
token =
67156715
ensureIdentifier(token, IdentifierContext.namedArgumentReference)
67166716
.next!;

pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:_fe_analyzer_shared/src/scanner/token.dart';
65
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
76
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
87
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
@@ -200,16 +199,15 @@ class ArgListContributor extends DartCompletionContributor {
200199
bool _isEditingNamedArgLabel() {
201200
if (argumentList != null) {
202201
var entity = request.target.entity;
203-
if (entity is SimpleIdentifier &&
204-
entity.isSynthetic &&
205-
entity.token.next?.type == TokenType.COLON) {
206-
return true;
207-
}
208202
if (entity is NamedExpression) {
209203
var offset = request.offset;
210-
if (entity.offset < offset && offset < entity.end) {
211-
return true;
204+
var nameId = entity.name.label;
205+
// `^id: value` - add a new named argument.
206+
// `^: value` - edit the name of this named argument.
207+
if (offset == nameId.offset && !nameId.isSynthetic) {
208+
return false;
212209
}
210+
return nameId.offset <= offset && offset <= nameId.end;
213211
}
214212
}
215213
return false;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
void f(int x) {
2+
g(: 1, bbb: 0);
3+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Problems reported:
2+
3+
parser/error_recovery/issue_48288:2:5: Expected an identifier, but got ':'.
4+
g(: 1, bbb: 0);
5+
^
6+
7+
beginCompilationUnit(void)
8+
beginMetadataStar(void)
9+
endMetadataStar(0)
10+
beginTopLevelMember(void)
11+
beginTopLevelMethod(, null, null)
12+
handleVoidKeyword(void)
13+
handleIdentifier(f, topLevelFunctionDeclaration)
14+
handleNoTypeVariables(()
15+
beginFormalParameters((, MemberKind.TopLevelMethod)
16+
beginMetadataStar(int)
17+
endMetadataStar(0)
18+
beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
19+
handleIdentifier(int, typeReference)
20+
handleNoTypeArguments(x)
21+
handleType(int, null)
22+
handleIdentifier(x, formalParameterDeclaration)
23+
handleFormalParameterWithoutValue())
24+
endFormalParameter(null, null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
25+
endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
26+
handleAsyncModifier(null, null)
27+
beginBlockFunctionBody({)
28+
handleIdentifier(g, expression)
29+
handleNoTypeArguments(()
30+
beginArguments(()
31+
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}], :, :)
32+
handleIdentifier(, namedArgumentReference)
33+
handleLiteralInt(1)
34+
handleNamedArgument(:)
35+
handleIdentifier(bbb, namedArgumentReference)
36+
handleLiteralInt(0)
37+
handleNamedArgument(:)
38+
endArguments(2, (, ))
39+
handleSend(g, ;)
40+
handleExpressionStatement(;)
41+
endBlockFunctionBody(1, {, })
42+
endTopLevelMethod(void, null, })
43+
endTopLevelDeclaration()
44+
endCompilationUnit(1, )
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
parseUnit(void)
2+
skipErrorTokens(void)
3+
listener: beginCompilationUnit(void)
4+
syntheticPreviousToken(void)
5+
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
6+
parseMetadataStar()
7+
listener: beginMetadataStar(void)
8+
listener: endMetadataStar(0)
9+
parseTopLevelMemberImpl()
10+
listener: beginTopLevelMember(void)
11+
parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, f, false)
12+
listener: beginTopLevelMethod(, null, null)
13+
listener: handleVoidKeyword(void)
14+
ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
15+
listener: handleIdentifier(f, topLevelFunctionDeclaration)
16+
parseMethodTypeVar(f)
17+
listener: handleNoTypeVariables(()
18+
parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod)
19+
parseFormalParameters(f, MemberKind.TopLevelMethod)
20+
parseFormalParametersRest((, MemberKind.TopLevelMethod)
21+
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
22+
parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
23+
parseMetadataStar(()
24+
listener: beginMetadataStar(int)
25+
listener: endMetadataStar(0)
26+
listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
27+
listener: handleIdentifier(int, typeReference)
28+
listener: handleNoTypeArguments(x)
29+
listener: handleType(int, null)
30+
ensureIdentifier(int, formalParameterDeclaration)
31+
listener: handleIdentifier(x, formalParameterDeclaration)
32+
listener: handleFormalParameterWithoutValue())
33+
listener: endFormalParameter(null, null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
34+
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
35+
parseAsyncModifierOpt())
36+
listener: handleAsyncModifier(null, null)
37+
inPlainSync()
38+
parseFunctionBody(), false, false)
39+
listener: beginBlockFunctionBody({)
40+
notEofOrValue(}, g)
41+
parseStatement({)
42+
parseStatementX({)
43+
parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
44+
looksLikeLocalFunction(g)
45+
parseExpressionStatement({)
46+
parseExpression({)
47+
parsePrecedenceExpression({, 1, true)
48+
parseUnaryExpression({, true)
49+
parsePrimary({, expression)
50+
parseSendOrFunctionLiteral({, expression)
51+
looksLikeFunctionBody(;)
52+
parseSend({, expression)
53+
isNextIdentifier({)
54+
ensureIdentifier({, expression)
55+
listener: handleIdentifier(g, expression)
56+
listener: handleNoTypeArguments(()
57+
parseArgumentsOpt(g)
58+
parseArguments(g)
59+
parseArgumentsRest(()
60+
listener: beginArguments(()
61+
ensureIdentifier((, namedArgumentReference)
62+
insertSyntheticIdentifier((, namedArgumentReference, message: Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}], messageOnToken: null)
63+
reportRecoverableError(:, Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}])
64+
listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}], :, :)
65+
rewriter()
66+
listener: handleIdentifier(, namedArgumentReference)
67+
parseExpression(:)
68+
parsePrecedenceExpression(:, 1, true)
69+
parseUnaryExpression(:, true)
70+
parsePrimary(:, expression)
71+
parseLiteralInt(:)
72+
listener: handleLiteralInt(1)
73+
listener: handleNamedArgument(:)
74+
ensureIdentifier(,, namedArgumentReference)
75+
listener: handleIdentifier(bbb, namedArgumentReference)
76+
parseExpression(:)
77+
parsePrecedenceExpression(:, 1, true)
78+
parseUnaryExpression(:, true)
79+
parsePrimary(:, expression)
80+
parseLiteralInt(:)
81+
listener: handleLiteralInt(0)
82+
listener: handleNamedArgument(:)
83+
listener: endArguments(2, (, ))
84+
listener: handleSend(g, ;)
85+
ensureSemicolon())
86+
listener: handleExpressionStatement(;)
87+
notEofOrValue(}, })
88+
listener: endBlockFunctionBody(1, {, })
89+
listener: endTopLevelMethod(void, null, })
90+
listener: endTopLevelDeclaration()
91+
reportAllErrorTokens(void)
92+
listener: endCompilationUnit(1, )
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
NOTICE: Stream was rewritten by parser!
2+
3+
void f(int x) {
4+
g(*synthetic*: 1, bbb: 0);
5+
}
6+
7+
8+
void[KeywordToken] f[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
9+
g[StringToken]([BeginToken][SyntheticStringToken]:[SimpleToken] 1[StringToken],[SimpleToken] bbb[StringToken]:[SimpleToken] 0[StringToken])[SimpleToken];[SimpleToken]
10+
}[SimpleToken]
11+
[SimpleToken]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
void f(int x) {
2+
g(: 1, bbb: 0);
3+
}
4+
5+
6+
void[KeywordToken] f[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
7+
g[StringToken]([BeginToken]:[SimpleToken] 1[StringToken],[SimpleToken] bbb[StringToken]:[SimpleToken] 0[StringToken])[SimpleToken];[SimpleToken]
8+
}[SimpleToken]
9+
[SimpleToken]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
files:
2+
- issue_48288.dart
3+
- issue_48288_prime.dart
4+
filters:
5+
- ignoreListenerArguments
6+
ignored:
7+
- handleRecoverableError
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
void f(int x) {
2+
g(foo: 1, bbb: 0);
3+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
beginCompilationUnit(void)
2+
beginMetadataStar(void)
3+
endMetadataStar(0)
4+
beginTopLevelMember(void)
5+
beginTopLevelMethod(, null, null)
6+
handleVoidKeyword(void)
7+
handleIdentifier(f, topLevelFunctionDeclaration)
8+
handleNoTypeVariables(()
9+
beginFormalParameters((, MemberKind.TopLevelMethod)
10+
beginMetadataStar(int)
11+
endMetadataStar(0)
12+
beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
13+
handleIdentifier(int, typeReference)
14+
handleNoTypeArguments(x)
15+
handleType(int, null)
16+
handleIdentifier(x, formalParameterDeclaration)
17+
handleFormalParameterWithoutValue())
18+
endFormalParameter(null, null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
19+
endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
20+
handleAsyncModifier(null, null)
21+
beginBlockFunctionBody({)
22+
handleIdentifier(g, expression)
23+
handleNoTypeArguments(()
24+
beginArguments(()
25+
handleIdentifier(foo, namedArgumentReference)
26+
handleLiteralInt(1)
27+
handleNamedArgument(:)
28+
handleIdentifier(bbb, namedArgumentReference)
29+
handleLiteralInt(0)
30+
handleNamedArgument(:)
31+
endArguments(2, (, ))
32+
handleSend(g, ;)
33+
handleExpressionStatement(;)
34+
endBlockFunctionBody(1, {, })
35+
endTopLevelMethod(void, null, })
36+
endTopLevelDeclaration()
37+
endCompilationUnit(1, )

0 commit comments

Comments
 (0)