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 analyzer.test.generated.parser_test; | 5 library analyzer.test.generated.parser_test; |
6 | 6 |
7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
8 import 'package:analyzer/dart/ast/token.dart'; | 8 import 'package:analyzer/dart/ast/token.dart'; |
9 import 'package:analyzer/dart/ast/visitor.dart'; | 9 import 'package:analyzer/dart/ast/visitor.dart'; |
10 import 'package:analyzer/src/dart/ast/token.dart'; | 10 import 'package:analyzer/src/dart/ast/token.dart'; |
(...skipping 2730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2741 * A flag indicating whether parser is to parse function bodies. | 2741 * A flag indicating whether parser is to parse function bodies. |
2742 */ | 2742 */ |
2743 static bool parseFunctionBodies = true; | 2743 static bool parseFunctionBodies = true; |
2744 | 2744 |
2745 /** | 2745 /** |
2746 * A flag indicating whether parser is to parse async. | 2746 * A flag indicating whether parser is to parse async. |
2747 */ | 2747 */ |
2748 bool parseAsync = true; | 2748 bool parseAsync = true; |
2749 | 2749 |
2750 /** | 2750 /** |
2751 * A flag indicating whether conditional directives support should be enabled | |
2752 * for a specific test. | |
2753 */ | |
2754 bool enableConditionalDirectives = false; | |
2755 | |
2756 /** | |
2757 * A flag indicating whether generic method support should be enabled for a | 2751 * A flag indicating whether generic method support should be enabled for a |
2758 * specific test. | 2752 * specific test. |
2759 */ | 2753 */ |
2760 bool enableGenericMethods = false; | 2754 bool enableGenericMethods = false; |
2761 | 2755 |
2762 /** | 2756 /** |
2763 * Whether generic method comments should be enabled for the test. | 2757 * Whether generic method comments should be enabled for the test. |
2764 */ | 2758 */ |
2765 bool enableGenericMethodComments = false; | 2759 bool enableGenericMethodComments = false; |
2766 | 2760 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2808 Scanner scanner = | 2802 Scanner scanner = |
2809 new Scanner(null, new CharSequenceReader(source), listener); | 2803 new Scanner(null, new CharSequenceReader(source), listener); |
2810 scanner.scanGenericMethodComments = enableGenericMethodComments; | 2804 scanner.scanGenericMethodComments = enableGenericMethodComments; |
2811 Token tokenStream = scanner.tokenize(); | 2805 Token tokenStream = scanner.tokenize(); |
2812 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 2806 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
2813 // | 2807 // |
2814 // Parse the source. | 2808 // Parse the source. |
2815 // | 2809 // |
2816 Parser parser = createParser(listener); | 2810 Parser parser = createParser(listener); |
2817 parser.parseAsync = parseAsync; | 2811 parser.parseAsync = parseAsync; |
2818 parser.parseConditionalDirectives = enableConditionalDirectives; | |
2819 parser.parseGenericMethods = enableGenericMethods; | 2812 parser.parseGenericMethods = enableGenericMethods; |
2820 parser.parseGenericMethodComments = enableGenericMethodComments; | 2813 parser.parseGenericMethodComments = enableGenericMethodComments; |
2821 parser.parseFunctionBodies = parseFunctionBodies; | 2814 parser.parseFunctionBodies = parseFunctionBodies; |
2822 Object result = | 2815 Object result = |
2823 invokeParserMethodImpl(parser, methodName, objects, tokenStream); | 2816 invokeParserMethodImpl(parser, methodName, objects, tokenStream); |
2824 // | 2817 // |
2825 // Partially test the results. | 2818 // Partially test the results. |
2826 // | 2819 // |
2827 if (!listener.hasErrors) { | 2820 if (!listener.hasErrors) { |
2828 expect(result, isNotNull); | 2821 expect(result, isNotNull); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2939 CompilationUnit parseCompilationUnitWithOptions(String source, | 2932 CompilationUnit parseCompilationUnitWithOptions(String source, |
2940 [List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { | 2933 [List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { |
2941 GatheringErrorListener listener = new GatheringErrorListener(); | 2934 GatheringErrorListener listener = new GatheringErrorListener(); |
2942 Scanner scanner = | 2935 Scanner scanner = |
2943 new Scanner(null, new CharSequenceReader(source), listener); | 2936 new Scanner(null, new CharSequenceReader(source), listener); |
2944 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 2937 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
2945 Token token = scanner.tokenize(); | 2938 Token token = scanner.tokenize(); |
2946 Parser parser = createParser(listener); | 2939 Parser parser = createParser(listener); |
2947 parser.parseAsync = parseAsync; | 2940 parser.parseAsync = parseAsync; |
2948 parser.parseFunctionBodies = parseFunctionBodies; | 2941 parser.parseFunctionBodies = parseFunctionBodies; |
2949 parser.parseConditionalDirectives = enableConditionalDirectives; | |
2950 parser.parseGenericMethods = enableGenericMethods; | 2942 parser.parseGenericMethods = enableGenericMethods; |
2951 parser.parseGenericMethodComments = enableGenericMethodComments; | 2943 parser.parseGenericMethodComments = enableGenericMethodComments; |
2952 CompilationUnit unit = parser.parseCompilationUnit(token); | 2944 CompilationUnit unit = parser.parseCompilationUnit(token); |
2953 expect(unit, isNotNull); | 2945 expect(unit, isNotNull); |
2954 listener.assertErrorsWithCodes(errorCodes); | 2946 listener.assertErrorsWithCodes(errorCodes); |
2955 return unit; | 2947 return unit; |
2956 } | 2948 } |
2957 | 2949 |
2958 /** | 2950 /** |
2959 * Parse the given source as an expression. | 2951 * Parse the given source as an expression. |
(...skipping 4260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7220 BinaryExpression expression = | 7212 BinaryExpression expression = |
7221 parse4("parseEqualityExpression", "super == y"); | 7213 parse4("parseEqualityExpression", "super == y"); |
7222 EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, | 7214 EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, |
7223 SuperExpression, expression.leftOperand); | 7215 SuperExpression, expression.leftOperand); |
7224 expect(expression.operator, isNotNull); | 7216 expect(expression.operator, isNotNull); |
7225 expect(expression.operator.type, TokenType.EQ_EQ); | 7217 expect(expression.operator.type, TokenType.EQ_EQ); |
7226 expect(expression.rightOperand, isNotNull); | 7218 expect(expression.rightOperand, isNotNull); |
7227 } | 7219 } |
7228 | 7220 |
7229 void test_parseExportDirective_configuration_multiple() { | 7221 void test_parseExportDirective_configuration_multiple() { |
7230 enableConditionalDirectives = true; | |
7231 ExportDirective directive = parse( | 7222 ExportDirective directive = parse( |
7232 "parseExportDirective", | 7223 "parseExportDirective", |
7233 <Object>[emptyCommentAndMetadata()], | 7224 <Object>[emptyCommentAndMetadata()], |
7234 "export 'lib/lib.dart' if (a) 'b.dart' if (c) 'd.dart';"); | 7225 "export 'lib/lib.dart' if (a) 'b.dart' if (c) 'd.dart';"); |
7235 expect(directive.keyword, isNotNull); | 7226 expect(directive.keyword, isNotNull); |
7236 expect(directive.uri, isNotNull); | 7227 expect(directive.uri, isNotNull); |
7237 expect(directive.configurations, hasLength(2)); | 7228 expect(directive.configurations, hasLength(2)); |
7238 _expectDottedName(directive.configurations[0].name, ['a']); | 7229 _expectDottedName(directive.configurations[0].name, ['a']); |
7239 _expectDottedName(directive.configurations[1].name, ['c']); | 7230 _expectDottedName(directive.configurations[1].name, ['c']); |
7240 expect(directive.combinators, hasLength(0)); | 7231 expect(directive.combinators, hasLength(0)); |
7241 expect(directive.semicolon, isNotNull); | 7232 expect(directive.semicolon, isNotNull); |
7242 } | 7233 } |
7243 | 7234 |
7244 void test_parseExportDirective_configuration_single() { | 7235 void test_parseExportDirective_configuration_single() { |
7245 enableConditionalDirectives = true; | |
7246 ExportDirective directive = parse( | 7236 ExportDirective directive = parse( |
7247 "parseExportDirective", | 7237 "parseExportDirective", |
7248 <Object>[emptyCommentAndMetadata()], | 7238 <Object>[emptyCommentAndMetadata()], |
7249 "export 'lib/lib.dart' if (a.b == 'c.dart') '';"); | 7239 "export 'lib/lib.dart' if (a.b == 'c.dart') '';"); |
7250 expect(directive.keyword, isNotNull); | 7240 expect(directive.keyword, isNotNull); |
7251 expect(directive.uri, isNotNull); | 7241 expect(directive.uri, isNotNull); |
7252 expect(directive.configurations, hasLength(1)); | 7242 expect(directive.configurations, hasLength(1)); |
7253 _expectDottedName(directive.configurations[0].name, ['a', 'b']); | 7243 _expectDottedName(directive.configurations[0].name, ['a', 'b']); |
7254 expect(directive.combinators, hasLength(0)); | 7244 expect(directive.combinators, hasLength(0)); |
7255 expect(directive.semicolon, isNotNull); | 7245 expect(directive.semicolon, isNotNull); |
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8426 expect(clause.implementsKeyword, isNotNull); | 8416 expect(clause.implementsKeyword, isNotNull); |
8427 } | 8417 } |
8428 | 8418 |
8429 void test_parseImplementsClause_single() { | 8419 void test_parseImplementsClause_single() { |
8430 ImplementsClause clause = parse4("parseImplementsClause", "implements A"); | 8420 ImplementsClause clause = parse4("parseImplementsClause", "implements A"); |
8431 expect(clause.interfaces, hasLength(1)); | 8421 expect(clause.interfaces, hasLength(1)); |
8432 expect(clause.implementsKeyword, isNotNull); | 8422 expect(clause.implementsKeyword, isNotNull); |
8433 } | 8423 } |
8434 | 8424 |
8435 void test_parseImportDirective_configuration_multiple() { | 8425 void test_parseImportDirective_configuration_multiple() { |
8436 enableConditionalDirectives = true; | |
8437 ImportDirective directive = parse( | 8426 ImportDirective directive = parse( |
8438 "parseImportDirective", | 8427 "parseImportDirective", |
8439 <Object>[emptyCommentAndMetadata()], | 8428 <Object>[emptyCommentAndMetadata()], |
8440 "import 'lib/lib.dart' if (a) 'b.dart' if (c) 'd.dart';"); | 8429 "import 'lib/lib.dart' if (a) 'b.dart' if (c) 'd.dart';"); |
8441 expect(directive.keyword, isNotNull); | 8430 expect(directive.keyword, isNotNull); |
8442 expect(directive.uri, isNotNull); | 8431 expect(directive.uri, isNotNull); |
8443 expect(directive.configurations, hasLength(2)); | 8432 expect(directive.configurations, hasLength(2)); |
8444 _expectDottedName(directive.configurations[0].name, ['a']); | 8433 _expectDottedName(directive.configurations[0].name, ['a']); |
8445 _expectDottedName(directive.configurations[1].name, ['c']); | 8434 _expectDottedName(directive.configurations[1].name, ['c']); |
8446 expect(directive.deferredKeyword, isNull); | 8435 expect(directive.deferredKeyword, isNull); |
8447 expect(directive.asKeyword, isNull); | 8436 expect(directive.asKeyword, isNull); |
8448 expect(directive.prefix, isNull); | 8437 expect(directive.prefix, isNull); |
8449 expect(directive.combinators, hasLength(0)); | 8438 expect(directive.combinators, hasLength(0)); |
8450 expect(directive.semicolon, isNotNull); | 8439 expect(directive.semicolon, isNotNull); |
8451 } | 8440 } |
8452 | 8441 |
8453 void test_parseImportDirective_configuration_single() { | 8442 void test_parseImportDirective_configuration_single() { |
8454 enableConditionalDirectives = true; | |
8455 ImportDirective directive = parse( | 8443 ImportDirective directive = parse( |
8456 "parseImportDirective", | 8444 "parseImportDirective", |
8457 <Object>[emptyCommentAndMetadata()], | 8445 <Object>[emptyCommentAndMetadata()], |
8458 "import 'lib/lib.dart' if (a.b == 'c.dart') '';"); | 8446 "import 'lib/lib.dart' if (a.b == 'c.dart') '';"); |
8459 expect(directive.keyword, isNotNull); | 8447 expect(directive.keyword, isNotNull); |
8460 expect(directive.uri, isNotNull); | 8448 expect(directive.uri, isNotNull); |
8461 expect(directive.configurations, hasLength(1)); | 8449 expect(directive.configurations, hasLength(1)); |
8462 _expectDottedName(directive.configurations[0].name, ['a', 'b']); | 8450 _expectDottedName(directive.configurations[0].name, ['a', 'b']); |
8463 expect(directive.deferredKeyword, isNull); | 8451 expect(directive.deferredKeyword, isNull); |
8464 expect(directive.asKeyword, isNull); | 8452 expect(directive.asKeyword, isNull); |
(...skipping 2545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11010 new Scanner(null, new CharSequenceReader(source), listener); | 10998 new Scanner(null, new CharSequenceReader(source), listener); |
11011 Token tokenStream = scanner.tokenize(); | 10999 Token tokenStream = scanner.tokenize(); |
11012 // | 11000 // |
11013 // Parse the source. | 11001 // Parse the source. |
11014 // | 11002 // |
11015 Parser parser = new Parser(null, listener); | 11003 Parser parser = new Parser(null, listener); |
11016 return invokeParserMethodImpl( | 11004 return invokeParserMethodImpl( |
11017 parser, methodName, <Object>[tokenStream], tokenStream) as Token; | 11005 parser, methodName, <Object>[tokenStream], tokenStream) as Token; |
11018 } | 11006 } |
11019 } | 11007 } |
OLD | NEW |