Skip to content

Commit c0146bc

Browse files
jensjohaCommit Queue
authored andcommitted
[parser] Enable coverage in abstract_scanner; increase coverage; remove unreachable places
Change-Id: Icf634b29f0cea274c2039deea48218b4c15872a8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/437440 Commit-Queue: Jens Johansen <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 4144b32 commit c0146bc

File tree

61 files changed

+2899
-84
lines changed

Some content is hidden

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

61 files changed

+2899
-84
lines changed

pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart

Lines changed: 78 additions & 70 deletions
Large diffs are not rendered by default.

pkg/front_end/lib/src/util/parser_ast.dart

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ CompilationUnitEnd getAST(
5757
ParserASTListener listener = new ParserASTListener();
5858
Parser parser;
5959
if (includeBody) {
60-
// Coverage-ignore-block(suite): Not run.
6160
parser = new Parser(
6261
listener,
6362
useImplicitCreationExpression: useImplicitCreationExpressionInCfe,
@@ -1027,7 +1026,6 @@ extension CompilationUnitExtension on CompilationUnitEnd {
10271026
}
10281027
}
10291028

1030-
// Coverage-ignore(suite): Not run.
10311029
extension TopLevelDeclarationExtension on TopLevelDeclarationEnd {
10321030
IdentifierHandle getIdentifier() {
10331031
for (ParserAstNode child in children!) {
@@ -1036,6 +1034,7 @@ extension TopLevelDeclarationExtension on TopLevelDeclarationEnd {
10361034
throw "Not found.";
10371035
}
10381036

1037+
// Coverage-ignore(suite): Not run.
10391038
ClassDeclarationEnd getClassDeclaration() {
10401039
if (!isClass()) {
10411040
throw "Not a class";
@@ -1076,8 +1075,8 @@ extension NamedMixinApplicationExtension on NamedMixinApplicationEnd {
10761075
}
10771076
}
10781077

1079-
// Coverage-ignore(suite): Not run.
10801078
extension ClassDeclarationExtension on ClassDeclarationEnd {
1079+
// Coverage-ignore(suite): Not run.
10811080
ClassOrMixinOrExtensionBodyEnd getClassOrMixinOrExtensionBody() {
10821081
for (ParserAstNode child in children!) {
10831082
if (child is ClassOrMixinOrExtensionBodyEnd) {
@@ -1087,13 +1086,15 @@ extension ClassDeclarationExtension on ClassDeclarationEnd {
10871086
throw "Not found.";
10881087
}
10891088

1089+
// Coverage-ignore(suite): Not run.
10901090
ClassExtendsHandle getClassExtends() {
10911091
for (ParserAstNode child in children!) {
10921092
if (child is ClassExtendsHandle) return child;
10931093
}
10941094
throw "Not found.";
10951095
}
10961096

1097+
// Coverage-ignore(suite): Not run.
10971098
ImplementsHandle getClassImplements() {
10981099
for (ParserAstNode child in children!) {
10991100
if (child is ImplementsHandle) {
@@ -1103,6 +1104,7 @@ extension ClassDeclarationExtension on ClassDeclarationEnd {
11031104
throw "Not found.";
11041105
}
11051106

1107+
// Coverage-ignore(suite): Not run.
11061108
ClassWithClauseHandle? getClassWithClause() {
11071109
for (ParserAstNode child in children!) {
11081110
if (child is ClassWithClauseHandle) {
@@ -1630,7 +1632,6 @@ extension ExtensionTypeDeclarationExtension on ExtensionTypeDeclarationEnd {
16301632
}
16311633
}
16321634

1633-
// Coverage-ignore(suite): Not run.
16341635
extension TopLevelMethodExtension on TopLevelMethodEnd {
16351636
IdentifierHandle getNameIdentifier() {
16361637
for (ParserAstNode child in children!) {
@@ -1643,6 +1644,7 @@ extension TopLevelMethodExtension on TopLevelMethodEnd {
16431644
throw "Didn't find the name identifier!";
16441645
}
16451646

1647+
// Coverage-ignore(suite): Not run.
16461648
Token getNameIdentifierToken() {
16471649
return getNameIdentifier().token;
16481650
}
@@ -1838,7 +1840,6 @@ extension TopLevelFieldsExtension on TopLevelFieldsEnd {
18381840
}
18391841
}
18401842

1841-
// Coverage-ignore(suite): Not run.
18421843
bool _isTypeOrNoType(ParserAstNode node) {
18431844
return node is TypeHandle ||
18441845
node is RecordTypeEnd ||
@@ -1847,8 +1848,8 @@ bool _isTypeOrNoType(ParserAstNode node) {
18471848
node is FunctionTypeEnd;
18481849
}
18491850

1850-
// Coverage-ignore(suite): Not run.
18511851
extension ClassMethodExtension on ClassMethodEnd {
1852+
// Coverage-ignore(suite): Not run.
18521853
BlockFunctionBodyEnd? getBlockFunctionBody() {
18531854
for (ParserAstNode child in children!) {
18541855
if (child is BlockFunctionBodyEnd) {
@@ -1867,9 +1868,11 @@ extension ClassMethodExtension on ClassMethodEnd {
18671868
if (foundType && child is IdentifierHandle) {
18681869
return child.token;
18691870
} else if (foundType && child is OperatorNameHandle) {
1871+
// Coverage-ignore-block(suite): Not run.
18701872
return child.token;
18711873
}
18721874
}
1875+
// Coverage-ignore-block(suite): Not run.
18731876
throw "No identifier found: $children";
18741877
}
18751878

@@ -2288,9 +2291,7 @@ class ParserASTListener extends AbstractParserAstListener {
22882291
end == "EnumFields")) {
22892292
// beginFields is ended by one of endTopLevelFields, endMixinFields,
22902293
// endEnumFields or endExtensionFields.
2291-
} else if (begin == "ForStatement" &&
2292-
// Coverage-ignore(suite): Not run.
2293-
end == "ForIn") {
2294+
} else if (begin == "ForStatement" && end == "ForIn") {
22942295
// beginForStatement is ended by either endForStatement or endForIn.
22952296
} else if (begin == "FactoryMethod" &&
22962297
(end == "ClassFactoryMethod" ||
@@ -2301,9 +2302,7 @@ class ParserASTListener extends AbstractParserAstListener {
23012302
// beginFactoryMethod is ended by either endClassFactoryMethod,
23022303
// endMixinFactoryMethod, endExtensionFactoryMethod, or
23032304
// endEnumFactoryMethod.
2304-
}
2305-
// Coverage-ignore(suite): Not run.
2306-
else if (begin == "ForControlFlow" && (end == "ForInControlFlow")) {
2305+
} else if (begin == "ForControlFlow" && (end == "ForInControlFlow")) {
23072306
// beginForControlFlow is ended by either endForControlFlow or
23082307
// endForInControlFlow.
23092308
} else if (begin == "IfControlFlow" && (end == "IfElseControlFlow")) {
@@ -2322,6 +2321,7 @@ class ParserASTListener extends AbstractParserAstListener {
23222321
// beginParenthesizedExpressionOrRecordLiteral is ended by either
23232322
// endParenthesizedExpression or endRecordLiteral.
23242323
} else {
2324+
// Coverage-ignore-block(suite): Not run.
23252325
throw "Unknown combination: begin$begin and end$end";
23262326
}
23272327
List<ParserAstNode> children = data.sublist(beginIndex);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//@
2+
//@d
3+
//@da
4+
//@dar
5+
//@dart
6+
//@dart=
7+
//@dart=a
8+
//@dart=3
9+
//@dart=3.
10+
//@dart=3.1
11+
//@dart=3.a
12+
//@dart=a.b
13+
//@dart=3.1
14+
//@dart=3.1 hello
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
beginCompilationUnit()
2+
endCompilationUnit(0, )
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
parseUnit()
2+
skipErrorTokens()
3+
listener: beginCompilationUnit()
4+
syntheticPreviousToken()
5+
reportAllErrorTokens()
6+
listener: endCompilationUnit(0, )
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[SimpleToken]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[SimpleToken]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
void foo(dynamic bar) {
2+
bar |= 2;
3+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
beginCompilationUnit(void)
2+
beginMetadataStar(void)
3+
endMetadataStar(0)
4+
beginTopLevelMember(void)
5+
beginTopLevelMethod(, null, null)
6+
handleVoidKeyword(void)
7+
handleIdentifier(foo, topLevelFunctionDeclaration)
8+
handleNoTypeVariables(()
9+
beginFormalParameters((, MemberKind.TopLevelMethod)
10+
beginMetadataStar(dynamic)
11+
endMetadataStar(0)
12+
beginFormalParameter(dynamic, MemberKind.TopLevelMethod, null, null, null)
13+
handleIdentifier(dynamic, typeReference)
14+
handleNoTypeArguments(bar)
15+
handleType(dynamic, null)
16+
handleIdentifier(bar, formalParameterDeclaration)
17+
handleFormalParameterWithoutValue())
18+
endFormalParameter(null, null, null, bar, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
19+
endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
20+
handleAsyncModifier(null, null)
21+
beginBlockFunctionBody({)
22+
handleIdentifier(bar, expression)
23+
handleNoTypeArguments(|=)
24+
handleNoArguments(|=)
25+
handleSend(bar, bar)
26+
handleLiteralInt(2)
27+
handleAssignmentExpression(|=, 2)
28+
handleExpressionStatement(bar, ;)
29+
endBlockFunctionBody(1, {, })
30+
endTopLevelMethod(void, null, })
31+
endTopLevelDeclaration(})
32+
endCompilationUnit(1, )
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
parseUnit(void)
2+
skipErrorTokens(void)
3+
listener: beginCompilationUnit(void)
4+
syntheticPreviousToken(void)
5+
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
6+
parseMetadataStar()
7+
listener: beginMetadataStar(void)
8+
listener: endMetadataStar(0)
9+
parseTopLevelMemberImpl()
10+
listener: beginTopLevelMember(void)
11+
parseTopLevelMethod(, null, null, , VoidType(), null, foo, false)
12+
listener: beginTopLevelMethod(, null, null)
13+
listener: handleVoidKeyword(void)
14+
ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
15+
listener: handleIdentifier(foo, topLevelFunctionDeclaration)
16+
parseMethodTypeVar(foo)
17+
listener: handleNoTypeVariables(()
18+
parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
19+
parseFormalParameters(foo, MemberKind.TopLevelMethod)
20+
parseFormalParametersRest((, MemberKind.TopLevelMethod)
21+
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
22+
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
23+
parseMetadataStar(()
24+
listener: beginMetadataStar(dynamic)
25+
listener: endMetadataStar(0)
26+
listener: beginFormalParameter(dynamic, MemberKind.TopLevelMethod, null, null, null)
27+
listener: handleIdentifier(dynamic, typeReference)
28+
listener: handleNoTypeArguments(bar)
29+
listener: handleType(dynamic, null)
30+
ensureIdentifier(dynamic, formalParameterDeclaration)
31+
listener: handleIdentifier(bar, formalParameterDeclaration)
32+
listener: handleFormalParameterWithoutValue())
33+
listener: endFormalParameter(null, null, null, bar, null, null, FormalParameterKind.requiredPositional, 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(}, bar)
41+
parseStatement({)
42+
parseStatementX({)
43+
parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, null)
44+
looksLikeLocalFunction(bar)
45+
parseExpressionStatement({)
46+
parseExpression({)
47+
parsePrecedenceExpression({, 1, true, ConstantPatternContext.none)
48+
parseUnaryExpression({, true, ConstantPatternContext.none)
49+
parsePrimary({, expression, ConstantPatternContext.none)
50+
parseSendOrFunctionLiteral({, expression, ConstantPatternContext.none)
51+
parseSend({, expression, ConstantPatternContext.none)
52+
isNextIdentifier({)
53+
ensureIdentifier({, expression)
54+
listener: handleIdentifier(bar, expression)
55+
listener: handleNoTypeArguments(|=)
56+
parseArgumentsOpt(bar)
57+
listener: handleNoArguments(|=)
58+
listener: handleSend(bar, bar)
59+
parsePrecedenceExpression(|=, 1, true, ConstantPatternContext.none)
60+
parseUnaryExpression(|=, true, ConstantPatternContext.none)
61+
parsePrimary(|=, expression, ConstantPatternContext.none)
62+
parseLiteralInt(|=)
63+
listener: handleLiteralInt(2)
64+
listener: handleAssignmentExpression(|=, 2)
65+
ensureSemicolon(2)
66+
listener: handleExpressionStatement(bar, ;)
67+
notEofOrValue(}, })
68+
listener: endBlockFunctionBody(1, {, })
69+
listener: endTopLevelMethod(void, null, })
70+
listener: endTopLevelDeclaration(})
71+
reportAllErrorTokens(void)
72+
listener: endCompilationUnit(1, )

0 commit comments

Comments
 (0)