| OLD | NEW |
| 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 library engine.parser_test; | 5 library engine.parser_test; |
| 6 | 6 |
| 7 import 'package:analyzer/src/generated/ast.dart'; | 7 import 'package:analyzer/src/generated/ast.dart'; |
| 8 import 'package:analyzer/src/generated/element.dart'; | 8 import 'package:analyzer/src/generated/element.dart'; |
| 9 import 'package:analyzer/src/generated/engine.dart'; | 9 import 'package:analyzer/src/generated/engine.dart'; |
| 10 import 'package:analyzer/src/generated/error.dart'; | 10 import 'package:analyzer/src/generated/error.dart'; |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 BinaryExpression expression = parseExpression("x << y + z"); | 478 BinaryExpression expression = parseExpression("x << y + z"); |
| 479 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 479 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 480 BinaryExpression, expression.rightOperand); | 480 BinaryExpression, expression.rightOperand); |
| 481 } | 481 } |
| 482 | 482 |
| 483 void test_shiftExpression_super() { | 483 void test_shiftExpression_super() { |
| 484 BinaryExpression expression = parseExpression("super >> 4 << 3"); | 484 BinaryExpression expression = parseExpression("super >> 4 << 3"); |
| 485 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 485 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 486 BinaryExpression, expression.leftOperand); | 486 BinaryExpression, expression.leftOperand); |
| 487 } | 487 } |
| 488 | |
| 489 void test_topLevelVariable_withMetadata() { | |
| 490 ParserTestCase.parseCompilationUnit("String @A string;"); | |
| 491 } | |
| 492 } | 488 } |
| 493 | 489 |
| 494 /** | 490 /** |
| 495 * The class `ErrorParserTest` defines parser tests that test the parsing of cod
e to ensure | 491 * The class `ErrorParserTest` defines parser tests that test the parsing of cod
e to ensure |
| 496 * that errors are correctly reported, and in some cases, not reported. | 492 * that errors are correctly reported, and in some cases, not reported. |
| 497 */ | 493 */ |
| 498 @reflectiveTest | 494 @reflectiveTest |
| 499 class ErrorParserTest extends ParserTestCase { | 495 class ErrorParserTest extends ParserTestCase { |
| 500 void fail_expectedListOrMapLiteral() { | 496 void fail_expectedListOrMapLiteral() { |
| 501 // It isn't clear that this test can ever pass. The parser is currently | 497 // It isn't clear that this test can ever pass. The parser is currently |
| (...skipping 1390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1892 "bool operator +(bool x, bool y) => x | y;", | 1888 "bool operator +(bool x, bool y) => x | y;", |
| 1893 [ParserErrorCode.TOP_LEVEL_OPERATOR]); | 1889 [ParserErrorCode.TOP_LEVEL_OPERATOR]); |
| 1894 } | 1890 } |
| 1895 | 1891 |
| 1896 void test_topLevelOperator_withVoid() { | 1892 void test_topLevelOperator_withVoid() { |
| 1897 parse3("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()], | 1893 parse3("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()], |
| 1898 "void operator +(bool x, bool y) => x | y;", | 1894 "void operator +(bool x, bool y) => x | y;", |
| 1899 [ParserErrorCode.TOP_LEVEL_OPERATOR]); | 1895 [ParserErrorCode.TOP_LEVEL_OPERATOR]); |
| 1900 } | 1896 } |
| 1901 | 1897 |
| 1898 void test_topLevelVariable_withMetadata() { |
| 1899 ParserTestCase.parseCompilationUnit("String @A string;", [ |
| 1900 ParserErrorCode.MISSING_IDENTIFIER, |
| 1901 ParserErrorCode.EXPECTED_TOKEN, |
| 1902 ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE |
| 1903 ]); |
| 1904 } |
| 1905 |
| 1902 void test_typedefInClass_withoutReturnType() { | 1906 void test_typedefInClass_withoutReturnType() { |
| 1903 ParserTestCase.parseCompilationUnit( | 1907 ParserTestCase.parseCompilationUnit( |
| 1904 "class C { typedef F(x); }", [ParserErrorCode.TYPEDEF_IN_CLASS]); | 1908 "class C { typedef F(x); }", [ParserErrorCode.TYPEDEF_IN_CLASS]); |
| 1905 } | 1909 } |
| 1906 | 1910 |
| 1907 void test_typedefInClass_withReturnType() { | 1911 void test_typedefInClass_withReturnType() { |
| 1908 ParserTestCase.parseCompilationUnit("class C { typedef int F(int x); }", | 1912 ParserTestCase.parseCompilationUnit("class C { typedef int F(int x); }", |
| 1909 [ParserErrorCode.TYPEDEF_IN_CLASS]); | 1913 [ParserErrorCode.TYPEDEF_IN_CLASS]); |
| 1910 } | 1914 } |
| 1911 | 1915 |
| (...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3264 expect(vars, hasLength(1)); | 3268 expect(vars, hasLength(1)); |
| 3265 expect(vars[0].name.name, "v"); | 3269 expect(vars[0].name.name, "v"); |
| 3266 } | 3270 } |
| 3267 | 3271 |
| 3268 void test_functionExpression_named() { | 3272 void test_functionExpression_named() { |
| 3269 parseExpression("m(f() => 0);", [ParserErrorCode.EXPECTED_TOKEN]); | 3273 parseExpression("m(f() => 0);", [ParserErrorCode.EXPECTED_TOKEN]); |
| 3270 } | 3274 } |
| 3271 | 3275 |
| 3272 void test_importDirectivePartial_as() { | 3276 void test_importDirectivePartial_as() { |
| 3273 CompilationUnit unit = ParserTestCase.parseCompilationUnit( | 3277 CompilationUnit unit = ParserTestCase.parseCompilationUnit( |
| 3274 "import 'b.dart' d as b;", | 3278 "import 'b.dart' d as b;", [ParserErrorCode.UNEXPECTED_TOKEN]); |
| 3275 [ParserErrorCode.UNEXPECTED_TOKEN]); | |
| 3276 ImportDirective importDirective = unit.childEntities.first; | 3279 ImportDirective importDirective = unit.childEntities.first; |
| 3277 expect(importDirective.asKeyword, isNotNull); | 3280 expect(importDirective.asKeyword, isNotNull); |
| 3278 expect(unit.directives, hasLength(1)); | 3281 expect(unit.directives, hasLength(1)); |
| 3279 expect(unit.declarations, hasLength(0)); | 3282 expect(unit.declarations, hasLength(0)); |
| 3280 } | 3283 } |
| 3281 | 3284 |
| 3282 void test_importDirectivePartial_show() { | 3285 void test_importDirectivePartial_hide() { |
| 3283 CompilationUnit unit = ParserTestCase.parseCompilationUnit( | 3286 CompilationUnit unit = ParserTestCase.parseCompilationUnit( |
| 3284 "import 'b.dart' d show foo;", | 3287 "import 'b.dart' d hide foo;", [ParserErrorCode.UNEXPECTED_TOKEN]); |
| 3285 [ParserErrorCode.UNEXPECTED_TOKEN]); | |
| 3286 ImportDirective importDirective = unit.childEntities.first; | 3288 ImportDirective importDirective = unit.childEntities.first; |
| 3287 expect(importDirective.combinators, hasLength(1)); | 3289 expect(importDirective.combinators, hasLength(1)); |
| 3288 expect(unit.directives, hasLength(1)); | 3290 expect(unit.directives, hasLength(1)); |
| 3289 expect(unit.declarations, hasLength(0)); | 3291 expect(unit.declarations, hasLength(0)); |
| 3290 } | 3292 } |
| 3291 | 3293 |
| 3292 void test_importDirectivePartial_hide() { | 3294 void test_importDirectivePartial_show() { |
| 3293 CompilationUnit unit = ParserTestCase.parseCompilationUnit( | 3295 CompilationUnit unit = ParserTestCase.parseCompilationUnit( |
| 3294 "import 'b.dart' d hide foo;", | 3296 "import 'b.dart' d show foo;", [ParserErrorCode.UNEXPECTED_TOKEN]); |
| 3295 [ParserErrorCode.UNEXPECTED_TOKEN]); | |
| 3296 ImportDirective importDirective = unit.childEntities.first; | 3297 ImportDirective importDirective = unit.childEntities.first; |
| 3297 expect(importDirective.combinators, hasLength(1)); | 3298 expect(importDirective.combinators, hasLength(1)); |
| 3298 expect(unit.directives, hasLength(1)); | 3299 expect(unit.directives, hasLength(1)); |
| 3299 expect(unit.declarations, hasLength(0)); | 3300 expect(unit.declarations, hasLength(0)); |
| 3300 } | 3301 } |
| 3301 | 3302 |
| 3302 void test_incomplete_conditionalExpression() { | 3303 void test_incomplete_conditionalExpression() { |
| 3303 parseExpression("x ? 0", [ | 3304 parseExpression("x ? 0", [ |
| 3304 ParserErrorCode.EXPECTED_TOKEN, | 3305 ParserErrorCode.EXPECTED_TOKEN, |
| 3305 ParserErrorCode.MISSING_IDENTIFIER | 3306 ParserErrorCode.MISSING_IDENTIFIER |
| (...skipping 6944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10250 new Scanner(null, new CharSequenceReader(source), listener); | 10251 new Scanner(null, new CharSequenceReader(source), listener); |
| 10251 Token tokenStream = scanner.tokenize(); | 10252 Token tokenStream = scanner.tokenize(); |
| 10252 // | 10253 // |
| 10253 // Parse the source. | 10254 // Parse the source. |
| 10254 // | 10255 // |
| 10255 Parser parser = new Parser(null, listener); | 10256 Parser parser = new Parser(null, listener); |
| 10256 return invokeParserMethodImpl( | 10257 return invokeParserMethodImpl( |
| 10257 parser, methodName, <Object>[tokenStream], tokenStream) as Token; | 10258 parser, methodName, <Object>[tokenStream], tokenStream) as Token; |
| 10258 } | 10259 } |
| 10259 } | 10260 } |
| OLD | NEW |