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

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

Issue 1870733002: Fix the parser to handle generic type arguments in named constructor invocations (issue 26183) (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « pkg/analyzer/lib/src/generated/parser.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 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 8625 matching lines...) Expand 10 before | Expand all | Expand 10 after
8636 expect(declaration.semicolon, isNotNull); 8636 expect(declaration.semicolon, isNotNull);
8637 } 8637 }
8638 8638
8639 void test_parseInstanceCreationExpression_qualifiedType() { 8639 void test_parseInstanceCreationExpression_qualifiedType() {
8640 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); 8640 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8641 InstanceCreationExpression expression = 8641 InstanceCreationExpression expression =
8642 parse("parseInstanceCreationExpression", <Object>[token], "A.B()"); 8642 parse("parseInstanceCreationExpression", <Object>[token], "A.B()");
8643 expect(expression.keyword, token); 8643 expect(expression.keyword, token);
8644 ConstructorName name = expression.constructorName; 8644 ConstructorName name = expression.constructorName;
8645 expect(name, isNotNull); 8645 expect(name, isNotNull);
8646 expect(name.type, isNotNull); 8646 TypeName type = name.type;
8647 expect(type, isNotNull);
8648 expect(type.typeArguments, isNull);
8647 expect(name.period, isNull); 8649 expect(name.period, isNull);
8648 expect(name.name, isNull); 8650 expect(name.name, isNull);
8649 expect(expression.argumentList, isNotNull); 8651 expect(expression.argumentList, isNotNull);
8650 } 8652 }
8651 8653
8652 void test_parseInstanceCreationExpression_qualifiedType_named() { 8654 void test_parseInstanceCreationExpression_qualifiedType_named() {
8653 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); 8655 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8654 InstanceCreationExpression expression = 8656 InstanceCreationExpression expression =
8655 parse("parseInstanceCreationExpression", <Object>[token], "A.B.c()"); 8657 parse("parseInstanceCreationExpression", <Object>[token], "A.B.c()");
8656 expect(expression.keyword, token); 8658 expect(expression.keyword, token);
8657 ConstructorName name = expression.constructorName; 8659 ConstructorName name = expression.constructorName;
8658 expect(name, isNotNull); 8660 expect(name, isNotNull);
8659 expect(name.type, isNotNull); 8661 TypeName type = name.type;
8662 expect(type, isNotNull);
8663 expect(type.typeArguments, isNull);
8660 expect(name.period, isNotNull); 8664 expect(name.period, isNotNull);
8661 expect(name.name, isNotNull); 8665 expect(name.name, isNotNull);
8662 expect(expression.argumentList, isNotNull); 8666 expect(expression.argumentList, isNotNull);
8663 } 8667 }
8664 8668
8669 void
8670 test_parseInstanceCreationExpression_qualifiedType_named_typeParameterComm ent() {
8671 enableGenericMethodComments = true;
8672 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8673 InstanceCreationExpression expression = parse(
8674 "parseInstanceCreationExpression", <Object>[token], "A.B/*<E>*/.c()");
8675 expect(expression.keyword, token);
8676 ConstructorName name = expression.constructorName;
8677 expect(name, isNotNull);
8678 TypeName type = name.type;
8679 expect(type, isNotNull);
8680 expect(type.typeArguments.arguments, hasLength(1));
8681 expect(name.period, isNotNull);
8682 expect(name.name, isNotNull);
8683 expect(expression.argumentList, isNotNull);
8684 }
8685
8686 void
8687 test_parseInstanceCreationExpression_qualifiedType_named_typeParameters() {
8688 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8689 InstanceCreationExpression expression =
8690 parse("parseInstanceCreationExpression", <Object>[token], "A.B<E>.c()");
8691 expect(expression.keyword, token);
8692 ConstructorName name = expression.constructorName;
8693 expect(name, isNotNull);
8694 TypeName type = name.type;
8695 expect(type, isNotNull);
8696 expect(type.typeArguments.arguments, hasLength(1));
8697 expect(name.period, isNotNull);
8698 expect(name.name, isNotNull);
8699 expect(expression.argumentList, isNotNull);
8700 }
8701
8702 void
8703 test_parseInstanceCreationExpression_qualifiedType_typeParameterComment() {
8704 enableGenericMethodComments = true;
8705 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8706 InstanceCreationExpression expression = parse(
8707 "parseInstanceCreationExpression", <Object>[token], "A.B/*<E>*/()");
8708 expect(expression.keyword, token);
8709 ConstructorName name = expression.constructorName;
8710 expect(name, isNotNull);
8711 TypeName type = name.type;
8712 expect(type, isNotNull);
8713 expect(type.typeArguments.arguments, hasLength(1));
8714 expect(name.period, isNull);
8715 expect(name.name, isNull);
8716 expect(expression.argumentList, isNotNull);
8717 }
8718
8719 void test_parseInstanceCreationExpression_qualifiedType_typeParameters() {
8720 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8721 InstanceCreationExpression expression =
8722 parse("parseInstanceCreationExpression", <Object>[token], "A.B<E>()");
8723 expect(expression.keyword, token);
8724 ConstructorName name = expression.constructorName;
8725 expect(name, isNotNull);
8726 TypeName type = name.type;
8727 expect(type, isNotNull);
8728 expect(type.typeArguments.arguments, hasLength(1));
8729 expect(name.period, isNull);
8730 expect(name.name, isNull);
8731 expect(expression.argumentList, isNotNull);
8732 }
8733
8665 void test_parseInstanceCreationExpression_type() { 8734 void test_parseInstanceCreationExpression_type() {
8666 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); 8735 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8667 InstanceCreationExpression expression = 8736 InstanceCreationExpression expression =
8668 parse("parseInstanceCreationExpression", <Object>[token], "A()"); 8737 parse("parseInstanceCreationExpression", <Object>[token], "A()");
8669 expect(expression.keyword, token); 8738 expect(expression.keyword, token);
8670 ConstructorName name = expression.constructorName; 8739 ConstructorName name = expression.constructorName;
8671 expect(name, isNotNull); 8740 expect(name, isNotNull);
8672 expect(name.type, isNotNull); 8741 TypeName type = name.type;
8742 expect(type, isNotNull);
8743 expect(type.typeArguments, isNull);
8673 expect(name.period, isNull); 8744 expect(name.period, isNull);
8674 expect(name.name, isNull); 8745 expect(name.name, isNull);
8675 expect(expression.argumentList, isNotNull); 8746 expect(expression.argumentList, isNotNull);
8676 } 8747 }
8677 8748
8678 void test_parseInstanceCreationExpression_type_named() { 8749 void test_parseInstanceCreationExpression_type_named() {
8750 enableGenericMethodComments = true;
8751 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8752 InstanceCreationExpression expression =
8753 parse("parseInstanceCreationExpression", <Object>[token], "A.c()");
8754 expect(expression.keyword, token);
8755 ConstructorName name = expression.constructorName;
8756 expect(name, isNotNull);
8757 TypeName type = name.type;
8758 expect(type, isNotNull);
8759 expect(type.typeArguments, isNull);
8760 expect(name.period, isNull);
8761 expect(name.name, isNull);
8762 expect(expression.argumentList, isNotNull);
8763 }
8764
8765 void test_parseInstanceCreationExpression_type_named_typeParameterComment() {
8766 enableGenericMethodComments = true;
8767 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8768 InstanceCreationExpression expression = parse(
8769 "parseInstanceCreationExpression", <Object>[token], "A/*<B>*/.c()");
8770 expect(expression.keyword, token);
8771 ConstructorName name = expression.constructorName;
8772 expect(name, isNotNull);
8773 TypeName type = name.type;
8774 expect(type, isNotNull);
8775 expect(type.typeArguments.arguments, hasLength(1));
8776 expect(name.period, isNotNull);
8777 expect(name.name, isNotNull);
8778 expect(expression.argumentList, isNotNull);
8779 }
8780
8781 void test_parseInstanceCreationExpression_type_named_typeParameters() {
8679 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); 8782 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8680 InstanceCreationExpression expression = 8783 InstanceCreationExpression expression =
8681 parse("parseInstanceCreationExpression", <Object>[token], "A<B>.c()"); 8784 parse("parseInstanceCreationExpression", <Object>[token], "A<B>.c()");
8682 expect(expression.keyword, token); 8785 expect(expression.keyword, token);
8683 ConstructorName name = expression.constructorName; 8786 ConstructorName name = expression.constructorName;
8684 expect(name, isNotNull); 8787 expect(name, isNotNull);
8685 expect(name.type, isNotNull); 8788 TypeName type = name.type;
8789 expect(type, isNotNull);
8790 expect(type.typeArguments.arguments, hasLength(1));
8686 expect(name.period, isNotNull); 8791 expect(name.period, isNotNull);
8687 expect(name.name, isNotNull); 8792 expect(name.name, isNotNull);
8688 expect(expression.argumentList, isNotNull); 8793 expect(expression.argumentList, isNotNull);
8689 } 8794 }
8690 8795
8796 void test_parseInstanceCreationExpression_type_typeParameterComment() {
8797 enableGenericMethodComments = true;
8798 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8799 InstanceCreationExpression expression =
8800 parse("parseInstanceCreationExpression", <Object>[token], "A/*<B>*/()");
8801 expect(expression.keyword, token);
8802 ConstructorName name = expression.constructorName;
8803 expect(name, isNotNull);
8804 TypeName type = name.type;
8805 expect(type, isNotNull);
8806 expect(type.typeArguments.arguments, hasLength(1));
8807 expect(name.period, isNull);
8808 expect(name.name, isNull);
8809 expect(expression.argumentList, isNotNull);
8810 }
8811
8812 void test_parseInstanceCreationExpression_type_typeParameters() {
8813 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
8814 InstanceCreationExpression expression =
8815 parse("parseInstanceCreationExpression", <Object>[token], "A<B>()");
8816 expect(expression.keyword, token);
8817 ConstructorName name = expression.constructorName;
8818 expect(name, isNotNull);
8819 TypeName type = name.type;
8820 expect(type, isNotNull);
8821 expect(type.typeArguments.arguments, hasLength(1));
8822 expect(name.period, isNull);
8823 expect(name.name, isNull);
8824 expect(expression.argumentList, isNotNull);
8825 }
8826
8691 void test_parseLibraryDirective() { 8827 void test_parseLibraryDirective() {
8692 LibraryDirective directive = parse("parseLibraryDirective", 8828 LibraryDirective directive = parse("parseLibraryDirective",
8693 <Object>[emptyCommentAndMetadata()], "library l;"); 8829 <Object>[emptyCommentAndMetadata()], "library l;");
8694 expect(directive.libraryKeyword, isNotNull); 8830 expect(directive.libraryKeyword, isNotNull);
8695 expect(directive.name, isNotNull); 8831 expect(directive.name, isNotNull);
8696 expect(directive.semicolon, isNotNull); 8832 expect(directive.semicolon, isNotNull);
8697 } 8833 }
8698 8834
8699 void test_parseLibraryIdentifier_multiple() { 8835 void test_parseLibraryIdentifier_multiple() {
8700 String name = "a.b.c"; 8836 String name = "a.b.c";
(...skipping 2348 matching lines...) Expand 10 before | Expand all | Expand 10 after
11049 new Scanner(null, new CharSequenceReader(source), listener); 11185 new Scanner(null, new CharSequenceReader(source), listener);
11050 Token tokenStream = scanner.tokenize(); 11186 Token tokenStream = scanner.tokenize();
11051 // 11187 //
11052 // Parse the source. 11188 // Parse the source.
11053 // 11189 //
11054 Parser parser = new Parser(null, listener); 11190 Parser parser = new Parser(null, listener);
11055 return invokeParserMethodImpl( 11191 return invokeParserMethodImpl(
11056 parser, methodName, <Object>[tokenStream], tokenStream) as Token; 11192 parser, methodName, <Object>[tokenStream], tokenStream) as Token;
11057 } 11193 }
11058 } 11194 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/parser.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698