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

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

Issue 2856463004: New tests and improvements for generics in comments parsing. (Closed)
Patch Set: Created 3 years, 7 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 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/standard_ast_factory.dart'; 8 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
9 import 'package:analyzer/dart/ast/token.dart'; 9 import 'package:analyzer/dart/ast/token.dart';
10 import 'package:analyzer/dart/ast/visitor.dart'; 10 import 'package:analyzer/dart/ast/visitor.dart';
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 createParser('/*=T*/ m/*<T>*/() {}'); 633 createParser('/*=T*/ m/*<T>*/() {}');
634 ClassMember member = parser.parseClassMember('C'); 634 ClassMember member = parser.parseClassMember('C');
635 expect(member, isNotNull); 635 expect(member, isNotNull);
636 assertNoErrors(); 636 assertNoErrors();
637 expect(member, new isInstanceOf<MethodDeclaration>()); 637 expect(member, new isInstanceOf<MethodDeclaration>());
638 MethodDeclaration method = member; 638 MethodDeclaration method = member;
639 expect(method.documentationComment, isNull); 639 expect(method.documentationComment, isNull);
640 expect(method.externalKeyword, isNull); 640 expect(method.externalKeyword, isNull);
641 expect(method.modifierKeyword, isNull); 641 expect(method.modifierKeyword, isNull);
642 expect(method.propertyKeyword, isNull); 642 expect(method.propertyKeyword, isNull);
643 expect(method.returnType, isNotNull);
643 expect((method.returnType as TypeName).name.name, 'T'); 644 expect((method.returnType as TypeName).name.name, 'T');
644 expect(method.name, isNotNull); 645 expect(method.name, isNotNull);
645 expect(method.operatorKeyword, isNull); 646 expect(method.operatorKeyword, isNull);
647 expect(method.typeParameters, isNotNull);
648 expect(method.parameters, isNotNull);
649 expect(method.body, isNotNull);
650 }
651
652 void test_parseClassMember_method_static_generic_comment_returnType() {
653 enableGenericMethodComments = true;
654 createParser('static /*=T*/ m/*<T>*/() {}');
655 ClassMember member = parser.parseClassMember('C');
656 expect(member, isNotNull);
657 assertNoErrors();
658 expect(member, new isInstanceOf<MethodDeclaration>());
659 MethodDeclaration method = member;
660 expect(method.documentationComment, isNull);
661 expect(method.externalKeyword, isNull);
662 expect(method.modifierKeyword, isNotNull);
663 expect(method.propertyKeyword, isNull);
664 expect(method.returnType, isNotNull);
665 expect((method.returnType as TypeName).name.name, 'T');
666 expect(method.name, isNotNull);
667 expect(method.operatorKeyword, isNull);
646 expect(method.typeParameters, isNotNull); 668 expect(method.typeParameters, isNotNull);
647 expect(method.parameters, isNotNull); 669 expect(method.parameters, isNotNull);
648 expect(method.body, isNotNull); 670 expect(method.body, isNotNull);
649 } 671 }
650 672
673 void test_parseClassMember_method_generic_comment_returnType_complex() {
674 enableGenericMethodComments = true;
675 createParser('dynamic /*=Map<int, T>*/ m/*<T>*/() => null;');
676 ClassMember member = parser.parseClassMember('C');
677 expect(member, isNotNull);
678 assertNoErrors();
679 expect(member, new isInstanceOf<MethodDeclaration>());
680 MethodDeclaration method = member;
681 expect(method.documentationComment, isNull);
682 expect(method.externalKeyword, isNull);
683 expect(method.modifierKeyword, isNull);
684 expect(method.propertyKeyword, isNull);
685
686 {
687 var returnType = method.returnType as TypeName;
688 expect(returnType, isNotNull);
689 expect(returnType.name.name, 'Map');
690
691 List<TypeAnnotation> typeArguments = returnType.typeArguments.arguments;
692 expect(typeArguments, hasLength(2));
693 expect((typeArguments[0] as TypeName).name.name, 'int');
694 expect((typeArguments[1] as TypeName).name.name, 'T');
695 }
696
697 expect(method.name, isNotNull);
698 expect(method.operatorKeyword, isNull);
699 expect(method.typeParameters, isNotNull);
700 expect(method.parameters, isNotNull);
701 expect(method.body, isNotNull);
702 }
703
704 void test_parseClassMember_method_generic_comment_parameterType() {
705 enableGenericMethodComments = true;
706 createParser('m/*<T>*/(dynamic /*=T*/ p) => null;');
707 ClassMember member = parser.parseClassMember('C');
708 expect(member, isNotNull);
709 assertNoErrors();
710 expect(member, new isInstanceOf<MethodDeclaration>());
711 MethodDeclaration method = member;
712 expect(method.documentationComment, isNull);
713 expect(method.externalKeyword, isNull);
714 expect(method.modifierKeyword, isNull);
715 expect(method.propertyKeyword, isNull);
716 expect(method.returnType, isNull);
717 expect(method.name, isNotNull);
718 expect(method.operatorKeyword, isNull);
719 expect(method.typeParameters, isNotNull);
720
721 FormalParameterList parameters = method.parameters;
722 expect(parameters, isNotNull);
723 expect(parameters.parameters, hasLength(1));
724 var parameter = parameters.parameters[0] as SimpleFormalParameter;
725 var parameterType = parameter.type as TypeName;
726 expect(parameterType.name.name, 'T');
727
728 expect(method.body, isNotNull);
729 }
730
651 void test_parseClassMember_method_generic_comment_returnType_bound() { 731 void test_parseClassMember_method_generic_comment_returnType_bound() {
652 enableGenericMethodComments = true; 732 enableGenericMethodComments = true;
653 createParser('num/*=T*/ m/*<T extends num>*/() {}'); 733 createParser('num/*=T*/ m/*<T extends num>*/() {}');
654 ClassMember member = parser.parseClassMember('C'); 734 ClassMember member = parser.parseClassMember('C');
655 expect(member, isNotNull); 735 expect(member, isNotNull);
656 assertNoErrors(); 736 assertNoErrors();
657 expect(member, new isInstanceOf<MethodDeclaration>()); 737 expect(member, new isInstanceOf<MethodDeclaration>());
658 MethodDeclaration method = member; 738 MethodDeclaration method = member;
659 expect(method.documentationComment, isNull); 739 expect(method.documentationComment, isNull);
660 expect(method.externalKeyword, isNull); 740 expect(method.externalKeyword, isNull);
(...skipping 13819 matching lines...) Expand 10 before | Expand all | Expand 10 after
14480 expect((declaration.returnType as TypeName).name.name, 'T'); 14560 expect((declaration.returnType as TypeName).name.name, 'T');
14481 expect(declaration.name, isNotNull); 14561 expect(declaration.name, isNotNull);
14482 FunctionExpression expression = declaration.functionExpression; 14562 FunctionExpression expression = declaration.functionExpression;
14483 expect(expression, isNotNull); 14563 expect(expression, isNotNull);
14484 expect(expression.body, isNotNull); 14564 expect(expression.body, isNotNull);
14485 expect(expression.typeParameters, isNull); 14565 expect(expression.typeParameters, isNull);
14486 expect(expression.parameters, isNotNull); 14566 expect(expression.parameters, isNotNull);
14487 expect(declaration.propertyKeyword, isNotNull); 14567 expect(declaration.propertyKeyword, isNotNull);
14488 } 14568 }
14489 14569
14570 void test_parseFunctionDeclaration_getter_generic_comment_returnType() {
14571 enableGenericMethodComments = true;
14572 createParser('/*=T*/ f/*<S, T>*/(/*=S*/ s) => null;');
14573 var member = parseFullCompilationUnitMember();
14574 expect(member, isNotNull);
14575 assertNoErrors();
14576 var functionDeclaration = member as FunctionDeclaration;
14577 var functionExpression = functionDeclaration.functionExpression;
14578 expect(functionDeclaration.documentationComment, isNull);
14579 expect(functionDeclaration.externalKeyword, isNull);
14580 expect(functionDeclaration.propertyKeyword, isNull);
14581 expect((functionDeclaration.returnType as TypeName).name.name, 'T');
14582 expect(functionDeclaration.name, isNotNull);
14583 expect(functionExpression.typeParameters, isNotNull);
14584 expect(functionExpression.parameters, isNotNull);
14585 expect(functionExpression.body, isNotNull);
14586 }
14587
14490 @failingTest 14588 @failingTest
14491 void test_parseGenericTypeAlias_noTypeParameters() { 14589 void test_parseGenericTypeAlias_noTypeParameters() {
14492 createParser('F = int Function(int);'); 14590 createParser('F = int Function(int);');
14493 GenericTypeAlias alias = parseFullCompilationUnitMember(); 14591 GenericTypeAlias alias = parseFullCompilationUnitMember();
14494 expect(alias, isNotNull); 14592 expect(alias, isNotNull);
14495 assertNoErrors(); 14593 assertNoErrors();
14496 expect(alias.name, isNotNull); 14594 expect(alias.name, isNotNull);
14497 expect(alias.name.name, 'F'); 14595 expect(alias.name.name, 'F');
14498 expect(alias.typeParameters, isNull); 14596 expect(alias.typeParameters, isNull);
14499 expect(alias.equals, isNotNull); 14597 expect(alias.equals, isNotNull);
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
14976 expectCommentText(typeVariable.documentationComment, '/// Doc'); 15074 expectCommentText(typeVariable.documentationComment, '/// Doc');
14977 } 15075 }
14978 15076
14979 /** 15077 /**
14980 * Assert that the given [name] is in declaration context. 15078 * Assert that the given [name] is in declaration context.
14981 */ 15079 */
14982 void _assertIsDeclarationName(SimpleIdentifier name) { 15080 void _assertIsDeclarationName(SimpleIdentifier name) {
14983 expect(name.inDeclarationContext(), isTrue); 15081 expect(name.inDeclarationContext(), isTrue);
14984 } 15082 }
14985 } 15083 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698