Index: pkg/analyzer/test/generated/parser_test.dart |
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart |
index 19b767dba7b90bdab46c12c5b0711d06370778bb..61ccf2207d4b460a35c8dd956ff6b3b00840e6c7 100644 |
--- a/pkg/analyzer/test/generated/parser_test.dart |
+++ b/pkg/analyzer/test/generated/parser_test.dart |
@@ -2,8 +2,6 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-library analyzer.test.generated.parser_test; |
- |
import 'package:analyzer/dart/ast/ast.dart'; |
import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
import 'package:analyzer/dart/ast/token.dart'; |
@@ -628,9 +626,9 @@ Function(int, String) v; |
expect(method.body, isNotNull); |
} |
- void test_parseClassMember_method_generic_comment_returnType() { |
+ void test_parseClassMember_method_generic_comment_parameterType() { |
enableGenericMethodComments = true; |
- createParser('/*=T*/ m/*<T>*/() {}'); |
+ createParser('m/*<T>*/(dynamic /*=T*/ p) => null;'); |
ClassMember member = parser.parseClassMember('C'); |
expect(member, isNotNull); |
assertNoErrors(); |
@@ -640,18 +638,24 @@ Function(int, String) v; |
expect(method.externalKeyword, isNull); |
expect(method.modifierKeyword, isNull); |
expect(method.propertyKeyword, isNull); |
- expect(method.returnType, isNotNull); |
- expect((method.returnType as TypeName).name.name, 'T'); |
+ expect(method.returnType, isNull); |
expect(method.name, isNotNull); |
expect(method.operatorKeyword, isNull); |
expect(method.typeParameters, isNotNull); |
- expect(method.parameters, isNotNull); |
+ |
+ FormalParameterList parameters = method.parameters; |
+ expect(parameters, isNotNull); |
+ expect(parameters.parameters, hasLength(1)); |
+ var parameter = parameters.parameters[0] as SimpleFormalParameter; |
+ var parameterType = parameter.type as TypeName; |
+ expect(parameterType.name.name, 'T'); |
+ |
expect(method.body, isNotNull); |
} |
- void test_parseClassMember_method_static_generic_comment_returnType() { |
+ void test_parseClassMember_method_generic_comment_returnType() { |
enableGenericMethodComments = true; |
- createParser('static /*=T*/ m/*<T>*/() {}'); |
+ createParser('/*=T*/ m/*<T>*/() {}'); |
ClassMember member = parser.parseClassMember('C'); |
expect(member, isNotNull); |
assertNoErrors(); |
@@ -659,7 +663,7 @@ Function(int, String) v; |
MethodDeclaration method = member; |
expect(method.documentationComment, isNull); |
expect(method.externalKeyword, isNull); |
- expect(method.modifierKeyword, isNotNull); |
+ expect(method.modifierKeyword, isNull); |
expect(method.propertyKeyword, isNull); |
expect(method.returnType, isNotNull); |
expect((method.returnType as TypeName).name.name, 'T'); |
@@ -670,9 +674,9 @@ Function(int, String) v; |
expect(method.body, isNotNull); |
} |
- void test_parseClassMember_method_generic_comment_returnType_complex() { |
+ void test_parseClassMember_method_generic_comment_returnType_bound() { |
enableGenericMethodComments = true; |
- createParser('dynamic /*=Map<int, T>*/ m/*<T>*/() => null;'); |
+ createParser('num/*=T*/ m/*<T extends num>*/() {}'); |
ClassMember member = parser.parseClassMember('C'); |
expect(member, isNotNull); |
assertNoErrors(); |
@@ -682,28 +686,21 @@ Function(int, String) v; |
expect(method.externalKeyword, isNull); |
expect(method.modifierKeyword, isNull); |
expect(method.propertyKeyword, isNull); |
- |
- { |
- var returnType = method.returnType as TypeName; |
- expect(returnType, isNotNull); |
- expect(returnType.name.name, 'Map'); |
- |
- List<TypeAnnotation> typeArguments = returnType.typeArguments.arguments; |
- expect(typeArguments, hasLength(2)); |
- expect((typeArguments[0] as TypeName).name.name, 'int'); |
- expect((typeArguments[1] as TypeName).name.name, 'T'); |
- } |
- |
+ expect((method.returnType as TypeName).name.name, 'T'); |
expect(method.name, isNotNull); |
expect(method.operatorKeyword, isNull); |
expect(method.typeParameters, isNotNull); |
+ TypeParameter tp = method.typeParameters.typeParameters[0]; |
+ expect(tp.name.name, 'T'); |
+ expect(tp.extendsKeyword, isNotNull); |
+ expect((tp.bound as TypeName).name.name, 'num'); |
expect(method.parameters, isNotNull); |
expect(method.body, isNotNull); |
} |
- void test_parseClassMember_method_generic_comment_parameterType() { |
+ void test_parseClassMember_method_generic_comment_returnType_complex() { |
enableGenericMethodComments = true; |
- createParser('m/*<T>*/(dynamic /*=T*/ p) => null;'); |
+ createParser('dynamic /*=Map<int, T>*/ m/*<T>*/() => null;'); |
ClassMember member = parser.parseClassMember('C'); |
expect(member, isNotNull); |
assertNoErrors(); |
@@ -713,41 +710,21 @@ Function(int, String) v; |
expect(method.externalKeyword, isNull); |
expect(method.modifierKeyword, isNull); |
expect(method.propertyKeyword, isNull); |
- expect(method.returnType, isNull); |
- expect(method.name, isNotNull); |
- expect(method.operatorKeyword, isNull); |
- expect(method.typeParameters, isNotNull); |
- FormalParameterList parameters = method.parameters; |
- expect(parameters, isNotNull); |
- expect(parameters.parameters, hasLength(1)); |
- var parameter = parameters.parameters[0] as SimpleFormalParameter; |
- var parameterType = parameter.type as TypeName; |
- expect(parameterType.name.name, 'T'); |
+ { |
+ var returnType = method.returnType as TypeName; |
+ expect(returnType, isNotNull); |
+ expect(returnType.name.name, 'Map'); |
- expect(method.body, isNotNull); |
- } |
+ List<TypeAnnotation> typeArguments = returnType.typeArguments.arguments; |
+ expect(typeArguments, hasLength(2)); |
+ expect((typeArguments[0] as TypeName).name.name, 'int'); |
+ expect((typeArguments[1] as TypeName).name.name, 'T'); |
+ } |
- void test_parseClassMember_method_generic_comment_returnType_bound() { |
- enableGenericMethodComments = true; |
- createParser('num/*=T*/ m/*<T extends num>*/() {}'); |
- ClassMember member = parser.parseClassMember('C'); |
- expect(member, isNotNull); |
- assertNoErrors(); |
- expect(member, new isInstanceOf<MethodDeclaration>()); |
- MethodDeclaration method = member; |
- expect(method.documentationComment, isNull); |
- expect(method.externalKeyword, isNull); |
- expect(method.modifierKeyword, isNull); |
- expect(method.propertyKeyword, isNull); |
- expect((method.returnType as TypeName).name.name, 'T'); |
expect(method.name, isNotNull); |
expect(method.operatorKeyword, isNull); |
expect(method.typeParameters, isNotNull); |
- TypeParameter tp = method.typeParameters.typeParameters[0]; |
- expect(tp.name.name, 'T'); |
- expect(tp.extendsKeyword, isNotNull); |
- expect((tp.bound as TypeName).name.name, 'num'); |
expect(method.parameters, isNotNull); |
expect(method.body, isNotNull); |
} |
@@ -1072,6 +1049,27 @@ void Function<A>(core.List<core.int> x) m() => null; |
expect(method.body, isNotNull); |
} |
+ void test_parseClassMember_method_static_generic_comment_returnType() { |
+ enableGenericMethodComments = true; |
+ createParser('static /*=T*/ m/*<T>*/() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expect(member, isNotNull); |
+ assertNoErrors(); |
+ expect(member, new isInstanceOf<MethodDeclaration>()); |
+ MethodDeclaration method = member; |
+ expect(method.documentationComment, isNull); |
+ expect(method.externalKeyword, isNull); |
+ expect(method.modifierKeyword, isNotNull); |
+ expect(method.propertyKeyword, isNull); |
+ expect(method.returnType, isNotNull); |
+ expect((method.returnType as TypeName).name.name, 'T'); |
+ expect(method.name, isNotNull); |
+ expect(method.operatorKeyword, isNull); |
+ expect(method.typeParameters, isNotNull); |
+ expect(method.parameters, isNotNull); |
+ expect(method.body, isNotNull); |
+ } |
+ |
void test_parseClassMember_method_trailing_commas() { |
createParser('void f(int x, int y,) {}'); |
ClassMember member = parser.parseClassMember('C'); |
@@ -2861,6 +2859,18 @@ class Foo { |
"void f(final x()) {}", [ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR]); |
} |
+ void test_functionTypedParameter_incomplete1() { |
+ // This caused an exception at one point. |
+ parseCompilationUnit("void f(int Function(", [ |
+ ParserErrorCode.MISSING_FUNCTION_BODY, |
+ ParserErrorCode.MISSING_CLOSING_PARENTHESIS, |
+ ParserErrorCode.EXPECTED_EXECUTABLE, |
+ ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, |
+ ParserErrorCode.EXPECTED_TOKEN, |
+ ParserErrorCode.EXPECTED_TOKEN |
+ ]); |
+ } |
+ |
void test_functionTypedParameter_var() { |
parseCompilationUnit( |
"void f(var x()) {}", [ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR]); |
@@ -14551,22 +14561,6 @@ enum E { |
expect(declaration.propertyKeyword, isNotNull); |
} |
- void test_parseFunctionDeclaration_setter() { |
- createParser('/// Doc\nT set p(v) {}'); |
- FunctionDeclaration declaration = parseFullCompilationUnitMember(); |
- expect(declaration, isNotNull); |
- assertNoErrors(); |
- expectCommentText(declaration.documentationComment, '/// Doc'); |
- expect((declaration.returnType as TypeName).name.name, 'T'); |
- expect(declaration.name, isNotNull); |
- FunctionExpression expression = declaration.functionExpression; |
- expect(expression, isNotNull); |
- expect(expression.body, isNotNull); |
- expect(expression.typeParameters, isNull); |
- expect(expression.parameters, isNotNull); |
- expect(declaration.propertyKeyword, isNotNull); |
- } |
- |
void test_parseFunctionDeclaration_getter_generic_comment_returnType() { |
enableGenericMethodComments = true; |
createParser('/*=T*/ f/*<S, T>*/(/*=S*/ s) => null;'); |
@@ -14585,6 +14579,22 @@ enum E { |
expect(functionExpression.body, isNotNull); |
} |
+ void test_parseFunctionDeclaration_setter() { |
+ createParser('/// Doc\nT set p(v) {}'); |
+ FunctionDeclaration declaration = parseFullCompilationUnitMember(); |
+ expect(declaration, isNotNull); |
+ assertNoErrors(); |
+ expectCommentText(declaration.documentationComment, '/// Doc'); |
+ expect((declaration.returnType as TypeName).name.name, 'T'); |
+ expect(declaration.name, isNotNull); |
+ FunctionExpression expression = declaration.functionExpression; |
+ expect(expression, isNotNull); |
+ expect(expression.body, isNotNull); |
+ expect(expression.typeParameters, isNull); |
+ expect(expression.parameters, isNotNull); |
+ expect(declaration.propertyKeyword, isNotNull); |
+ } |
+ |
@failingTest |
void test_parseGenericTypeAlias_noTypeParameters() { |
createParser('F = int Function(int);'); |