Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Side by Side Diff: pkg/analyzer/test/generated/parser_test.dart

Issue 2981343002: improve fasta closing brace recovery (Closed)
Patch Set: rebase Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:analyzer/dart/ast/ast.dart'; 5 import 'package:analyzer/dart/ast/ast.dart';
6 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; 6 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
7 import 'package:analyzer/dart/ast/token.dart'; 7 import 'package:analyzer/dart/ast/token.dart';
8 import 'package:analyzer/dart/ast/visitor.dart'; 8 import 'package:analyzer/dart/ast/visitor.dart';
9 import 'package:analyzer/error/error.dart'; 9 import 'package:analyzer/error/error.dart';
10 import 'package:analyzer/error/listener.dart'; 10 import 'package:analyzer/error/listener.dart';
(...skipping 4122 matching lines...) Expand 10 before | Expand all | Expand 10 after
4133 4133
4134 void test_typedefInClass_withReturnType() { 4134 void test_typedefInClass_withReturnType() {
4135 parseCompilationUnit("class C { typedef int F(int x); }", 4135 parseCompilationUnit("class C { typedef int F(int x); }",
4136 [ParserErrorCode.TYPEDEF_IN_CLASS]); 4136 [ParserErrorCode.TYPEDEF_IN_CLASS]);
4137 } 4137 }
4138 4138
4139 void test_unexpectedTerminatorForParameterGroup_named() { 4139 void test_unexpectedTerminatorForParameterGroup_named() {
4140 createParser('(a, b})'); 4140 createParser('(a, b})');
4141 FormalParameterList list = parser.parseFormalParameterList(); 4141 FormalParameterList list = parser.parseFormalParameterList();
4142 expectNotNullIfNoErrors(list); 4142 expectNotNullIfNoErrors(list);
4143 listener.assertErrorsWithCodes(fe.Scanner.useFasta 4143 listener.assertErrorsWithCodes(
4144 ? [ScannerErrorCode.EXPECTED_TOKEN] 4144 [ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP]);
4145 : [ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP]);
4146 } 4145 }
4147 4146
4148 void test_unexpectedTerminatorForParameterGroup_optional() { 4147 void test_unexpectedTerminatorForParameterGroup_optional() {
4149 createParser('(a, b])'); 4148 createParser('(a, b])');
4150 FormalParameterList list = parser.parseFormalParameterList(); 4149 FormalParameterList list = parser.parseFormalParameterList();
4151 expectNotNullIfNoErrors(list); 4150 expectNotNullIfNoErrors(list);
4152 listener.assertErrorsWithCodes(fe.Scanner.useFasta 4151 listener.assertErrorsWithCodes(
4153 ? [ScannerErrorCode.EXPECTED_TOKEN] 4152 [ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP]);
4154 : [ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP]);
4155 } 4153 }
4156 4154
4157 void test_unexpectedToken_endOfFieldDeclarationStatement() { 4155 void test_unexpectedToken_endOfFieldDeclarationStatement() {
4158 parseStatement("String s = (null));"); 4156 parseStatement("String s = (null));");
4159 assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]); 4157 assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]);
4160 } 4158 }
4161 4159
4162 @failingTest 4160 @failingTest
4163 void test_unexpectedToken_invalidPostfixExpression() { 4161 void test_unexpectedToken_invalidPostfixExpression() {
4164 // Note: this might not be the right error to produce, but some error should 4162 // Note: this might not be the right error to produce, but some error should
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
4384 expectNotNullIfNoErrors(list); 4382 expectNotNullIfNoErrors(list);
4385 listener.assertErrorsWithCodes( 4383 listener.assertErrorsWithCodes(
4386 [ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER]); 4384 [ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER]);
4387 } 4385 }
4388 4386
4389 void test_wrongTerminatorForParameterGroup_named() { 4387 void test_wrongTerminatorForParameterGroup_named() {
4390 createParser('(a, {b, c])'); 4388 createParser('(a, {b, c])');
4391 FormalParameterList list = parser.parseFormalParameterList(); 4389 FormalParameterList list = parser.parseFormalParameterList();
4392 expectNotNullIfNoErrors(list); 4390 expectNotNullIfNoErrors(list);
4393 listener.assertErrorsWithCodes(fe.Scanner.useFasta 4391 listener.assertErrorsWithCodes(fe.Scanner.useFasta
4394 ? [ScannerErrorCode.EXPECTED_TOKEN, ScannerErrorCode.EXPECTED_TOKEN] 4392 ? [
4393 // fasta scanner generates '(a, {b, c]})' where '}' is synthetic
4394 ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP,
4395 ScannerErrorCode.EXPECTED_TOKEN,
4396 ]
4395 : [ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]); 4397 : [ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]);
4396 } 4398 }
4397 4399
4398 void test_wrongTerminatorForParameterGroup_optional() { 4400 void test_wrongTerminatorForParameterGroup_optional() {
4399 createParser('(a, [b, c})'); 4401 createParser('(a, [b, c})');
4400 FormalParameterList list = parser.parseFormalParameterList(); 4402 FormalParameterList list = parser.parseFormalParameterList();
4401 expectNotNullIfNoErrors(list); 4403 expectNotNullIfNoErrors(list);
4402 listener.assertErrorsWithCodes(fe.Scanner.useFasta 4404 listener.assertErrorsWithCodes(usingFastaScanner
4403 ? [ScannerErrorCode.EXPECTED_TOKEN, ScannerErrorCode.EXPECTED_TOKEN] 4405 ? [
4406 // fasta scanner generates '(a, [b, c}])' where ']' is synthetic
4407 ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP,
4408 ScannerErrorCode.EXPECTED_TOKEN,
4409 ]
4404 : [ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]); 4410 : [ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]);
4405 } 4411 }
4406 } 4412 }
4407 4413
4408 @reflectiveTest 4414 @reflectiveTest
4409 class ExpressionParserTest extends ParserTestCase 4415 class ExpressionParserTest extends ParserTestCase
4410 with ExpressionParserTestMixin {} 4416 with ExpressionParserTestMixin {}
4411 4417
4412 abstract class ExpressionParserTestMixin implements AbstractParserTestCase { 4418 abstract class ExpressionParserTestMixin implements AbstractParserTestCase {
4413 void test_namedArgument() { 4419 void test_namedArgument() {
(...skipping 10754 matching lines...) Expand 10 before | Expand all | Expand 10 after
15168 expectCommentText(typeVariable.documentationComment, '/// Doc'); 15174 expectCommentText(typeVariable.documentationComment, '/// Doc');
15169 } 15175 }
15170 15176
15171 /** 15177 /**
15172 * Assert that the given [name] is in declaration context. 15178 * Assert that the given [name] is in declaration context.
15173 */ 15179 */
15174 void _assertIsDeclarationName(SimpleIdentifier name) { 15180 void _assertIsDeclarationName(SimpleIdentifier name) {
15175 expect(name.inDeclarationContext(), isTrue); 15181 expect(name.inDeclarationContext(), isTrue);
15176 } 15182 }
15177 } 15183 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/parser.dart ('k') | pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698