| 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 |