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 import 'package:analyzer/dart/ast/ast.dart'; | 5 import 'package:analyzer/dart/ast/ast.dart'; |
6 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; | 6 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
7 import 'package:analyzer/dart/ast/token.dart'; | 7 import 'package:analyzer/dart/ast/token.dart'; |
8 import 'package:analyzer/dart/ast/visitor.dart'; | 8 import 'package:analyzer/dart/ast/visitor.dart'; |
9 import 'package:analyzer/error/error.dart'; | 9 import 'package:analyzer/error/error.dart'; |
10 import 'package:analyzer/error/listener.dart'; | 10 import 'package:analyzer/error/listener.dart'; |
(...skipping 2047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2058 * and in some cases, not reported. | 2058 * and in some cases, not reported. |
2059 */ | 2059 */ |
2060 @reflectiveTest | 2060 @reflectiveTest |
2061 class ErrorParserTest extends ParserTestCase with ErrorParserTestMixin {} | 2061 class ErrorParserTest extends ParserTestCase with ErrorParserTestMixin {} |
2062 | 2062 |
2063 abstract class ErrorParserTestMixin implements AbstractParserTestCase { | 2063 abstract class ErrorParserTestMixin implements AbstractParserTestCase { |
2064 void test_abstractClassMember_constructor() { | 2064 void test_abstractClassMember_constructor() { |
2065 createParser('abstract C.c();'); | 2065 createParser('abstract C.c();'); |
2066 ClassMember member = parser.parseClassMember('C'); | 2066 ClassMember member = parser.parseClassMember('C'); |
2067 expectNotNullIfNoErrors(member); | 2067 expectNotNullIfNoErrors(member); |
2068 listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); | 2068 assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
2069 } | 2069 } |
2070 | 2070 |
2071 void test_abstractClassMember_field() { | 2071 void test_abstractClassMember_field() { |
2072 createParser('abstract C f;'); | 2072 createParser('abstract C f;'); |
2073 ClassMember member = parser.parseClassMember('C'); | 2073 ClassMember member = parser.parseClassMember('C'); |
2074 expectNotNullIfNoErrors(member); | 2074 expectNotNullIfNoErrors(member); |
2075 listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); | 2075 assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
2076 } | 2076 } |
2077 | 2077 |
2078 void test_abstractClassMember_getter() { | 2078 void test_abstractClassMember_getter() { |
2079 createParser('abstract get m;'); | 2079 createParser('abstract get m;'); |
2080 ClassMember member = parser.parseClassMember('C'); | 2080 ClassMember member = parser.parseClassMember('C'); |
2081 expectNotNullIfNoErrors(member); | 2081 expectNotNullIfNoErrors(member); |
2082 listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); | 2082 assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
2083 } | 2083 } |
2084 | 2084 |
2085 void test_abstractClassMember_method() { | 2085 void test_abstractClassMember_method() { |
2086 createParser('abstract m();'); | 2086 createParser('abstract m();'); |
2087 ClassMember member = parser.parseClassMember('C'); | 2087 ClassMember member = parser.parseClassMember('C'); |
2088 expectNotNullIfNoErrors(member); | 2088 expectNotNullIfNoErrors(member); |
2089 listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); | 2089 assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
2090 } | 2090 } |
2091 | 2091 |
2092 void test_abstractClassMember_setter() { | 2092 void test_abstractClassMember_setter() { |
2093 createParser('abstract set m(v);'); | 2093 createParser('abstract set m(v);'); |
2094 ClassMember member = parser.parseClassMember('C'); | 2094 ClassMember member = parser.parseClassMember('C'); |
2095 expectNotNullIfNoErrors(member); | 2095 expectNotNullIfNoErrors(member); |
2096 listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); | 2096 assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
2097 } | 2097 } |
2098 | 2098 |
2099 void test_abstractEnum() { | 2099 void test_abstractEnum() { |
2100 parseCompilationUnit( | 2100 parseCompilationUnit( |
2101 "abstract enum E {ONE}", [ParserErrorCode.ABSTRACT_ENUM]); | 2101 "abstract enum E {ONE}", [ParserErrorCode.ABSTRACT_ENUM]); |
2102 } | 2102 } |
2103 | 2103 |
2104 void test_abstractTopLevelFunction_function() { | 2104 void test_abstractTopLevelFunction_function() { |
2105 parseCompilationUnit( | 2105 parseCompilationUnit( |
2106 "abstract f(v) {}", [ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION]); | 2106 "abstract f(v) {}", [ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION]); |
(...skipping 5687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7794 expect(list.rightDelimiter, isNull); | 7794 expect(list.rightDelimiter, isNull); |
7795 expect(list.rightParenthesis, isNotNull); | 7795 expect(list.rightParenthesis, isNotNull); |
7796 } | 7796 } |
7797 | 7797 |
7798 void test_parseNormalFormalParameter_field_const_noType() { | 7798 void test_parseNormalFormalParameter_field_const_noType() { |
7799 NormalFormalParameter parameter = | 7799 NormalFormalParameter parameter = |
7800 parseNormalFormalParameter('const this.a'); | 7800 parseNormalFormalParameter('const this.a'); |
7801 expect(parameter, isNotNull); | 7801 expect(parameter, isNotNull); |
7802 if (usingFastaParser) { | 7802 if (usingFastaParser) { |
7803 // TODO(danrubel): should not be generating an error | 7803 // TODO(danrubel): should not be generating an error |
7804 assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]); | 7804 assertErrorsWithCodes([ParserErrorCode.EXTRANEOUS_MODIFIER]); |
7805 } else { | 7805 } else { |
7806 assertNoErrors(); | 7806 assertNoErrors(); |
7807 } | 7807 } |
7808 expect(parameter, new isInstanceOf<FieldFormalParameter>()); | 7808 expect(parameter, new isInstanceOf<FieldFormalParameter>()); |
7809 FieldFormalParameter fieldParameter = parameter; | 7809 FieldFormalParameter fieldParameter = parameter; |
7810 expect(fieldParameter.keyword, isNotNull); | 7810 expect(fieldParameter.keyword, isNotNull); |
7811 expect(fieldParameter.type, isNull); | 7811 expect(fieldParameter.type, isNull); |
7812 expect(fieldParameter.identifier, isNotNull); | 7812 expect(fieldParameter.identifier, isNotNull); |
7813 expect(fieldParameter.parameters, isNull); | 7813 expect(fieldParameter.parameters, isNull); |
7814 } | 7814 } |
7815 | 7815 |
7816 void test_parseNormalFormalParameter_field_const_type() { | 7816 void test_parseNormalFormalParameter_field_const_type() { |
7817 NormalFormalParameter parameter = | 7817 NormalFormalParameter parameter = |
7818 parseNormalFormalParameter('const A this.a'); | 7818 parseNormalFormalParameter('const A this.a'); |
7819 expect(parameter, isNotNull); | 7819 expect(parameter, isNotNull); |
7820 if (usingFastaParser) { | 7820 if (usingFastaParser) { |
7821 // TODO(danrubel): should not be generating an error | 7821 // TODO(danrubel): should not be generating an error |
7822 assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]); | 7822 assertErrorsWithCodes([ParserErrorCode.EXTRANEOUS_MODIFIER]); |
7823 } else { | 7823 } else { |
7824 assertNoErrors(); | 7824 assertNoErrors(); |
7825 } | 7825 } |
7826 expect(parameter, new isInstanceOf<FieldFormalParameter>()); | 7826 expect(parameter, new isInstanceOf<FieldFormalParameter>()); |
7827 FieldFormalParameter fieldParameter = parameter; | 7827 FieldFormalParameter fieldParameter = parameter; |
7828 expect(fieldParameter.keyword, isNotNull); | 7828 expect(fieldParameter.keyword, isNotNull); |
7829 expect(fieldParameter.type, isNotNull); | 7829 expect(fieldParameter.type, isNotNull); |
7830 expect(fieldParameter.identifier, isNotNull); | 7830 expect(fieldParameter.identifier, isNotNull); |
7831 expect(fieldParameter.parameters, isNull); | 7831 expect(fieldParameter.parameters, isNull); |
7832 } | 7832 } |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8172 var parameter = parseFormalParameter('/// Doc\nf()', ParameterKind.REQUIRED) | 8172 var parameter = parseFormalParameter('/// Doc\nf()', ParameterKind.REQUIRED) |
8173 as FunctionTypedFormalParameter; | 8173 as FunctionTypedFormalParameter; |
8174 expectCommentText(parameter.documentationComment, '/// Doc'); | 8174 expectCommentText(parameter.documentationComment, '/// Doc'); |
8175 } | 8175 } |
8176 | 8176 |
8177 void test_parseNormalFormalParameter_simple_const_noType() { | 8177 void test_parseNormalFormalParameter_simple_const_noType() { |
8178 NormalFormalParameter parameter = parseNormalFormalParameter('const a'); | 8178 NormalFormalParameter parameter = parseNormalFormalParameter('const a'); |
8179 expect(parameter, isNotNull); | 8179 expect(parameter, isNotNull); |
8180 if (usingFastaParser) { | 8180 if (usingFastaParser) { |
8181 // TODO(danrubel): should not be generating an error | 8181 // TODO(danrubel): should not be generating an error |
8182 assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]); | 8182 assertErrorsWithCodes([ParserErrorCode.EXTRANEOUS_MODIFIER]); |
8183 } else { | 8183 } else { |
8184 assertNoErrors(); | 8184 assertNoErrors(); |
8185 } | 8185 } |
8186 expect(parameter, new isInstanceOf<SimpleFormalParameter>()); | 8186 expect(parameter, new isInstanceOf<SimpleFormalParameter>()); |
8187 SimpleFormalParameter simpleParameter = parameter; | 8187 SimpleFormalParameter simpleParameter = parameter; |
8188 expect(simpleParameter.keyword, isNotNull); | 8188 expect(simpleParameter.keyword, isNotNull); |
8189 expect(simpleParameter.type, isNull); | 8189 expect(simpleParameter.type, isNull); |
8190 expect(simpleParameter.identifier, isNotNull); | 8190 expect(simpleParameter.identifier, isNotNull); |
8191 } | 8191 } |
8192 | 8192 |
8193 void test_parseNormalFormalParameter_simple_const_type() { | 8193 void test_parseNormalFormalParameter_simple_const_type() { |
8194 NormalFormalParameter parameter = parseNormalFormalParameter('const A a'); | 8194 NormalFormalParameter parameter = parseNormalFormalParameter('const A a'); |
8195 expect(parameter, isNotNull); | 8195 expect(parameter, isNotNull); |
8196 if (usingFastaParser) { | 8196 if (usingFastaParser) { |
8197 // TODO(danrubel): should not be generating an error | 8197 // TODO(danrubel): should not be generating an error |
8198 assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]); | 8198 assertErrorsWithCodes([ParserErrorCode.EXTRANEOUS_MODIFIER]); |
8199 } else { | 8199 } else { |
8200 assertNoErrors(); | 8200 assertNoErrors(); |
8201 } | 8201 } |
8202 expect(parameter, new isInstanceOf<SimpleFormalParameter>()); | 8202 expect(parameter, new isInstanceOf<SimpleFormalParameter>()); |
8203 SimpleFormalParameter simpleParameter = parameter; | 8203 SimpleFormalParameter simpleParameter = parameter; |
8204 expect(simpleParameter.keyword, isNotNull); | 8204 expect(simpleParameter.keyword, isNotNull); |
8205 expect(simpleParameter.type, isNotNull); | 8205 expect(simpleParameter.type, isNotNull); |
8206 expect(simpleParameter.identifier, isNotNull); | 8206 expect(simpleParameter.identifier, isNotNull); |
8207 } | 8207 } |
8208 | 8208 |
(...skipping 7258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15467 expectCommentText(typeVariable.documentationComment, '/// Doc'); | 15467 expectCommentText(typeVariable.documentationComment, '/// Doc'); |
15468 } | 15468 } |
15469 | 15469 |
15470 /** | 15470 /** |
15471 * Assert that the given [name] is in declaration context. | 15471 * Assert that the given [name] is in declaration context. |
15472 */ | 15472 */ |
15473 void _assertIsDeclarationName(SimpleIdentifier name) { | 15473 void _assertIsDeclarationName(SimpleIdentifier name) { |
15474 expect(name.inDeclarationContext(), isTrue); | 15474 expect(name.inDeclarationContext(), isTrue); |
15475 } | 15475 } |
15476 } | 15476 } |
OLD | NEW |