| 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 2423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2434 } | 2434 } |
| 2435 | 2435 |
| 2436 void test_emptyEnumBody() { | 2436 void test_emptyEnumBody() { |
| 2437 createParser('enum E {}'); | 2437 createParser('enum E {}'); |
| 2438 EnumDeclaration declaration = parseFullCompilationUnitMember(); | 2438 EnumDeclaration declaration = parseFullCompilationUnitMember(); |
| 2439 expectNotNullIfNoErrors(declaration); | 2439 expectNotNullIfNoErrors(declaration); |
| 2440 listener.assertErrorsWithCodes([ParserErrorCode.EMPTY_ENUM_BODY]); | 2440 listener.assertErrorsWithCodes([ParserErrorCode.EMPTY_ENUM_BODY]); |
| 2441 } | 2441 } |
| 2442 | 2442 |
| 2443 void test_enumInClass() { | 2443 void test_enumInClass() { |
| 2444 parseCompilationUnit( | 2444 parseCompilationUnit(r''' |
| 2445 r''' | |
| 2446 class Foo { | 2445 class Foo { |
| 2447 enum Bar { | 2446 enum Bar { |
| 2448 Bar1, Bar2, Bar3 | 2447 Bar1, Bar2, Bar3 |
| 2449 } | 2448 } |
| 2450 } | 2449 } |
| 2451 ''', | 2450 ''', [ParserErrorCode.ENUM_IN_CLASS]); |
| 2452 [ParserErrorCode.ENUM_IN_CLASS]); | |
| 2453 } | 2451 } |
| 2454 | 2452 |
| 2455 void test_equalityCannotBeEqualityOperand_eq_eq() { | 2453 void test_equalityCannotBeEqualityOperand_eq_eq() { |
| 2456 parseExpression( | 2454 parseExpression( |
| 2457 "1 == 2 == 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); | 2455 "1 == 2 == 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); |
| 2458 } | 2456 } |
| 2459 | 2457 |
| 2460 void test_equalityCannotBeEqualityOperand_eq_neq() { | 2458 void test_equalityCannotBeEqualityOperand_eq_neq() { |
| 2461 parseExpression( | 2459 parseExpression( |
| 2462 "1 == 2 != 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); | 2460 "1 == 2 != 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); |
| (...skipping 1627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4090 void test_topLevelVariable_withMetadata() { | 4088 void test_topLevelVariable_withMetadata() { |
| 4091 parseCompilationUnit("String @A string;", [ | 4089 parseCompilationUnit("String @A string;", [ |
| 4092 ParserErrorCode.MISSING_IDENTIFIER, | 4090 ParserErrorCode.MISSING_IDENTIFIER, |
| 4093 ParserErrorCode.EXPECTED_TOKEN, | 4091 ParserErrorCode.EXPECTED_TOKEN, |
| 4094 ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE | 4092 ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE |
| 4095 ]); | 4093 ]); |
| 4096 } | 4094 } |
| 4097 | 4095 |
| 4098 void test_typedef_incomplete() { | 4096 void test_typedef_incomplete() { |
| 4099 // TODO(brianwilkerson) Improve recovery for this case. | 4097 // TODO(brianwilkerson) Improve recovery for this case. |
| 4100 parseCompilationUnit( | 4098 parseCompilationUnit(''' |
| 4101 ''' | |
| 4102 class A {} | 4099 class A {} |
| 4103 class B extends A {} | 4100 class B extends A {} |
| 4104 | 4101 |
| 4105 typedef T | 4102 typedef T |
| 4106 | 4103 |
| 4107 main() { | 4104 main() { |
| 4108 Function< | 4105 Function< |
| 4109 } | 4106 } |
| 4110 ''', | 4107 ''', [ |
| 4111 [ | 4108 ParserErrorCode.EXPECTED_TOKEN, |
| 4112 ParserErrorCode.EXPECTED_TOKEN, | 4109 ParserErrorCode.UNEXPECTED_TOKEN, |
| 4113 ParserErrorCode.UNEXPECTED_TOKEN, | 4110 ParserErrorCode.EXPECTED_EXECUTABLE |
| 4114 ParserErrorCode.EXPECTED_EXECUTABLE | 4111 ]); |
| 4115 ]); | |
| 4116 } | 4112 } |
| 4117 | 4113 |
| 4118 void test_typedef_namedFunction() { | 4114 void test_typedef_namedFunction() { |
| 4119 // TODO(brianwilkerson) Improve recovery for this case. | 4115 // TODO(brianwilkerson) Improve recovery for this case. |
| 4120 parseCompilationUnit('typedef void Function();', [ | 4116 parseCompilationUnit('typedef void Function();', [ |
| 4121 ParserErrorCode.UNEXPECTED_TOKEN, | 4117 ParserErrorCode.UNEXPECTED_TOKEN, |
| 4122 ParserErrorCode.MISSING_IDENTIFIER, | 4118 ParserErrorCode.MISSING_IDENTIFIER, |
| 4123 ParserErrorCode.EXPECTED_EXECUTABLE, | 4119 ParserErrorCode.EXPECTED_EXECUTABLE, |
| 4124 ParserErrorCode.MISSING_TYPEDEF_PARAMETERS | 4120 ParserErrorCode.MISSING_TYPEDEF_PARAMETERS |
| 4125 ]); | 4121 ]); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4178 } | 4174 } |
| 4179 | 4175 |
| 4180 void test_unexpectedToken_semicolonBetweenCompilationUnitMembers() { | 4176 void test_unexpectedToken_semicolonBetweenCompilationUnitMembers() { |
| 4181 parseCompilationUnit("int x; ; int y;", [ParserErrorCode.UNEXPECTED_TOKEN]); | 4177 parseCompilationUnit("int x; ; int y;", [ParserErrorCode.UNEXPECTED_TOKEN]); |
| 4182 } | 4178 } |
| 4183 | 4179 |
| 4184 void test_unterminatedString_at_eof() { | 4180 void test_unterminatedString_at_eof() { |
| 4185 // Although the "unterminated string" error message is produced by the | 4181 // Although the "unterminated string" error message is produced by the |
| 4186 // scanner, we need to verify that the parser can handle the tokens | 4182 // scanner, we need to verify that the parser can handle the tokens |
| 4187 // produced by the scanner when an unterminated string is encountered. | 4183 // produced by the scanner when an unterminated string is encountered. |
| 4188 parseCompilationUnit( | 4184 parseCompilationUnit(r''' |
| 4189 r''' | |
| 4190 void main() { | 4185 void main() { |
| 4191 var x = "''', | 4186 var x = "''', [ |
| 4192 [ | 4187 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
| 4193 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, | 4188 fe.Scanner.useFasta |
| 4194 fe.Scanner.useFasta | 4189 ? ScannerErrorCode.EXPECTED_TOKEN |
| 4195 ? ScannerErrorCode.EXPECTED_TOKEN | 4190 : ParserErrorCode.EXPECTED_TOKEN, |
| 4196 : ParserErrorCode.EXPECTED_TOKEN, | 4191 ParserErrorCode.EXPECTED_TOKEN |
| 4197 ParserErrorCode.EXPECTED_TOKEN | 4192 ]); |
| 4198 ]); | |
| 4199 } | 4193 } |
| 4200 | 4194 |
| 4201 void test_unterminatedString_at_eol() { | 4195 void test_unterminatedString_at_eol() { |
| 4202 // Although the "unterminated string" error message is produced by the | 4196 // Although the "unterminated string" error message is produced by the |
| 4203 // scanner, we need to verify that the parser can handle the tokens | 4197 // scanner, we need to verify that the parser can handle the tokens |
| 4204 // produced by the scanner when an unterminated string is encountered. | 4198 // produced by the scanner when an unterminated string is encountered. |
| 4205 parseCompilationUnit( | 4199 parseCompilationUnit(r''' |
| 4206 r''' | |
| 4207 void main() { | 4200 void main() { |
| 4208 var x = " | 4201 var x = " |
| 4209 ; | 4202 ; |
| 4210 } | 4203 } |
| 4211 ''', | 4204 ''', [ScannerErrorCode.UNTERMINATED_STRING_LITERAL]); |
| 4212 [ScannerErrorCode.UNTERMINATED_STRING_LITERAL]); | |
| 4213 } | 4205 } |
| 4214 | 4206 |
| 4215 void test_unterminatedString_multiline_at_eof_3_quotes() { | 4207 void test_unterminatedString_multiline_at_eof_3_quotes() { |
| 4216 // Although the "unterminated string" error message is produced by the | 4208 // Although the "unterminated string" error message is produced by the |
| 4217 // scanner, we need to verify that the parser can handle the tokens | 4209 // scanner, we need to verify that the parser can handle the tokens |
| 4218 // produced by the scanner when an unterminated string is encountered. | 4210 // produced by the scanner when an unterminated string is encountered. |
| 4219 parseCompilationUnit( | 4211 parseCompilationUnit(r''' |
| 4220 r''' | |
| 4221 void main() { | 4212 void main() { |
| 4222 var x = """''', | 4213 var x = """''', [ |
| 4223 [ | 4214 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
| 4224 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, | 4215 fe.Scanner.useFasta |
| 4225 fe.Scanner.useFasta | 4216 ? ScannerErrorCode.EXPECTED_TOKEN |
| 4226 ? ScannerErrorCode.EXPECTED_TOKEN | 4217 : ParserErrorCode.EXPECTED_TOKEN, |
| 4227 : ParserErrorCode.EXPECTED_TOKEN, | 4218 ParserErrorCode.EXPECTED_TOKEN |
| 4228 ParserErrorCode.EXPECTED_TOKEN | 4219 ]); |
| 4229 ]); | |
| 4230 } | 4220 } |
| 4231 | 4221 |
| 4232 void test_unterminatedString_multiline_at_eof_4_quotes() { | 4222 void test_unterminatedString_multiline_at_eof_4_quotes() { |
| 4233 // Although the "unterminated string" error message is produced by the | 4223 // Although the "unterminated string" error message is produced by the |
| 4234 // scanner, we need to verify that the parser can handle the tokens | 4224 // scanner, we need to verify that the parser can handle the tokens |
| 4235 // produced by the scanner when an unterminated string is encountered. | 4225 // produced by the scanner when an unterminated string is encountered. |
| 4236 parseCompilationUnit( | 4226 parseCompilationUnit(r''' |
| 4237 r''' | |
| 4238 void main() { | 4227 void main() { |
| 4239 var x = """"''', | 4228 var x = """"''', [ |
| 4240 [ | 4229 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
| 4241 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, | 4230 fe.Scanner.useFasta |
| 4242 fe.Scanner.useFasta | 4231 ? ScannerErrorCode.EXPECTED_TOKEN |
| 4243 ? ScannerErrorCode.EXPECTED_TOKEN | 4232 : ParserErrorCode.EXPECTED_TOKEN, |
| 4244 : ParserErrorCode.EXPECTED_TOKEN, | 4233 ParserErrorCode.EXPECTED_TOKEN |
| 4245 ParserErrorCode.EXPECTED_TOKEN | 4234 ]); |
| 4246 ]); | |
| 4247 } | 4235 } |
| 4248 | 4236 |
| 4249 void test_unterminatedString_multiline_at_eof_5_quotes() { | 4237 void test_unterminatedString_multiline_at_eof_5_quotes() { |
| 4250 // Although the "unterminated string" error message is produced by the | 4238 // Although the "unterminated string" error message is produced by the |
| 4251 // scanner, we need to verify that the parser can handle the tokens | 4239 // scanner, we need to verify that the parser can handle the tokens |
| 4252 // produced by the scanner when an unterminated string is encountered. | 4240 // produced by the scanner when an unterminated string is encountered. |
| 4253 parseCompilationUnit( | 4241 parseCompilationUnit(r''' |
| 4254 r''' | |
| 4255 void main() { | 4242 void main() { |
| 4256 var x = """""''', | 4243 var x = """""''', [ |
| 4257 [ | 4244 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
| 4258 ScannerErrorCode.UNTERMINATED_STRING_LITERAL, | 4245 fe.Scanner.useFasta |
| 4259 fe.Scanner.useFasta | 4246 ? ScannerErrorCode.EXPECTED_TOKEN |
| 4260 ? ScannerErrorCode.EXPECTED_TOKEN | 4247 : ParserErrorCode.EXPECTED_TOKEN, |
| 4261 : ParserErrorCode.EXPECTED_TOKEN, | 4248 ParserErrorCode.EXPECTED_TOKEN |
| 4262 ParserErrorCode.EXPECTED_TOKEN | 4249 ]); |
| 4263 ]); | |
| 4264 } | 4250 } |
| 4265 | 4251 |
| 4266 void test_useOfUnaryPlusOperator() { | 4252 void test_useOfUnaryPlusOperator() { |
| 4267 createParser('+x'); | 4253 createParser('+x'); |
| 4268 Expression expression = parser.parseUnaryExpression(); | 4254 Expression expression = parser.parseUnaryExpression(); |
| 4269 expectNotNullIfNoErrors(expression); | 4255 expectNotNullIfNoErrors(expression); |
| 4270 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); | 4256 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
| 4271 var identifier = expression as SimpleIdentifier; | 4257 var identifier = expression as SimpleIdentifier; |
| 4272 expect(identifier.isSynthetic, isTrue); | 4258 expect(identifier.isSynthetic, isTrue); |
| 4273 } | 4259 } |
| (...skipping 4663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8937 void test_bitwiseXorExpression_super() { | 8923 void test_bitwiseXorExpression_super() { |
| 8938 BinaryExpression expression = parseExpression("super ^ ^", [ | 8924 BinaryExpression expression = parseExpression("super ^ ^", [ |
| 8939 ParserErrorCode.MISSING_IDENTIFIER, | 8925 ParserErrorCode.MISSING_IDENTIFIER, |
| 8940 ParserErrorCode.MISSING_IDENTIFIER | 8926 ParserErrorCode.MISSING_IDENTIFIER |
| 8941 ]); | 8927 ]); |
| 8942 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 8928 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 8943 BinaryExpression, expression.leftOperand); | 8929 BinaryExpression, expression.leftOperand); |
| 8944 } | 8930 } |
| 8945 | 8931 |
| 8946 void test_classTypeAlias_withBody() { | 8932 void test_classTypeAlias_withBody() { |
| 8947 parseCompilationUnit( | 8933 parseCompilationUnit(r''' |
| 8948 r''' | |
| 8949 class A {} | 8934 class A {} |
| 8950 class B = Object with A {}''', | 8935 class B = Object with A {}''', [ParserErrorCode.EXPECTED_TOKEN]); |
| 8951 [ParserErrorCode.EXPECTED_TOKEN]); | |
| 8952 } | 8936 } |
| 8953 | 8937 |
| 8954 void test_conditionalExpression_missingElse() { | 8938 void test_conditionalExpression_missingElse() { |
| 8955 createParser('x ? y :'); | 8939 createParser('x ? y :'); |
| 8956 Expression expression = parser.parseConditionalExpression(); | 8940 Expression expression = parser.parseConditionalExpression(); |
| 8957 expectNotNullIfNoErrors(expression); | 8941 expectNotNullIfNoErrors(expression); |
| 8958 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); | 8942 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
| 8959 expect(expression, new isInstanceOf<ConditionalExpression>()); | 8943 expect(expression, new isInstanceOf<ConditionalExpression>()); |
| 8960 ConditionalExpression conditionalExpression = expression; | 8944 ConditionalExpression conditionalExpression = expression; |
| 8961 expect(conditionalExpression.elseExpression, | 8945 expect(conditionalExpression.elseExpression, |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9245 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableDeclaration, | 9229 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableDeclaration, |
| 9246 TopLevelVariableDeclaration, member); | 9230 TopLevelVariableDeclaration, member); |
| 9247 NodeList<VariableDeclaration> variables = | 9231 NodeList<VariableDeclaration> variables = |
| 9248 (member as TopLevelVariableDeclaration).variables.variables; | 9232 (member as TopLevelVariableDeclaration).variables.variables; |
| 9249 expect(variables, hasLength(1)); | 9233 expect(variables, hasLength(1)); |
| 9250 SimpleIdentifier name = variables[0].name; | 9234 SimpleIdentifier name = variables[0].name; |
| 9251 expect(name.isSynthetic, isTrue); | 9235 expect(name.isSynthetic, isTrue); |
| 9252 } | 9236 } |
| 9253 | 9237 |
| 9254 void test_incompleteField_const() { | 9238 void test_incompleteField_const() { |
| 9255 CompilationUnit unit = parseCompilationUnit( | 9239 CompilationUnit unit = parseCompilationUnit(r''' |
| 9256 r''' | |
| 9257 class C { | 9240 class C { |
| 9258 const | 9241 const |
| 9259 }''', | 9242 }''', [ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); |
| 9260 [ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); | |
| 9261 NodeList<CompilationUnitMember> declarations = unit.declarations; | 9243 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 9262 expect(declarations, hasLength(1)); | 9244 expect(declarations, hasLength(1)); |
| 9263 CompilationUnitMember unitMember = declarations[0]; | 9245 CompilationUnitMember unitMember = declarations[0]; |
| 9264 EngineTestCase.assertInstanceOf( | 9246 EngineTestCase.assertInstanceOf( |
| 9265 (obj) => obj is ClassDeclaration, ClassDeclaration, unitMember); | 9247 (obj) => obj is ClassDeclaration, ClassDeclaration, unitMember); |
| 9266 NodeList<ClassMember> members = (unitMember as ClassDeclaration).members; | 9248 NodeList<ClassMember> members = (unitMember as ClassDeclaration).members; |
| 9267 expect(members, hasLength(1)); | 9249 expect(members, hasLength(1)); |
| 9268 ClassMember classMember = members[0]; | 9250 ClassMember classMember = members[0]; |
| 9269 EngineTestCase.assertInstanceOf( | 9251 EngineTestCase.assertInstanceOf( |
| 9270 (obj) => obj is FieldDeclaration, FieldDeclaration, classMember); | 9252 (obj) => obj is FieldDeclaration, FieldDeclaration, classMember); |
| 9271 VariableDeclarationList fieldList = | 9253 VariableDeclarationList fieldList = |
| 9272 (classMember as FieldDeclaration).fields; | 9254 (classMember as FieldDeclaration).fields; |
| 9273 expect(fieldList.keyword.keyword, Keyword.CONST); | 9255 expect(fieldList.keyword.keyword, Keyword.CONST); |
| 9274 NodeList<VariableDeclaration> fields = fieldList.variables; | 9256 NodeList<VariableDeclaration> fields = fieldList.variables; |
| 9275 expect(fields, hasLength(1)); | 9257 expect(fields, hasLength(1)); |
| 9276 VariableDeclaration field = fields[0]; | 9258 VariableDeclaration field = fields[0]; |
| 9277 expect(field.name.isSynthetic, isTrue); | 9259 expect(field.name.isSynthetic, isTrue); |
| 9278 } | 9260 } |
| 9279 | 9261 |
| 9280 void test_incompleteField_final() { | 9262 void test_incompleteField_final() { |
| 9281 CompilationUnit unit = parseCompilationUnit( | 9263 CompilationUnit unit = parseCompilationUnit(r''' |
| 9282 r''' | |
| 9283 class C { | 9264 class C { |
| 9284 final | 9265 final |
| 9285 }''', | 9266 }''', [ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); |
| 9286 [ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); | |
| 9287 NodeList<CompilationUnitMember> declarations = unit.declarations; | 9267 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 9288 expect(declarations, hasLength(1)); | 9268 expect(declarations, hasLength(1)); |
| 9289 CompilationUnitMember unitMember = declarations[0]; | 9269 CompilationUnitMember unitMember = declarations[0]; |
| 9290 EngineTestCase.assertInstanceOf( | 9270 EngineTestCase.assertInstanceOf( |
| 9291 (obj) => obj is ClassDeclaration, ClassDeclaration, unitMember); | 9271 (obj) => obj is ClassDeclaration, ClassDeclaration, unitMember); |
| 9292 NodeList<ClassMember> members = (unitMember as ClassDeclaration).members; | 9272 NodeList<ClassMember> members = (unitMember as ClassDeclaration).members; |
| 9293 expect(members, hasLength(1)); | 9273 expect(members, hasLength(1)); |
| 9294 ClassMember classMember = members[0]; | 9274 ClassMember classMember = members[0]; |
| 9295 EngineTestCase.assertInstanceOf( | 9275 EngineTestCase.assertInstanceOf( |
| 9296 (obj) => obj is FieldDeclaration, FieldDeclaration, classMember); | 9276 (obj) => obj is FieldDeclaration, FieldDeclaration, classMember); |
| 9297 VariableDeclarationList fieldList = | 9277 VariableDeclarationList fieldList = |
| 9298 (classMember as FieldDeclaration).fields; | 9278 (classMember as FieldDeclaration).fields; |
| 9299 expect(fieldList.keyword.keyword, Keyword.FINAL); | 9279 expect(fieldList.keyword.keyword, Keyword.FINAL); |
| 9300 NodeList<VariableDeclaration> fields = fieldList.variables; | 9280 NodeList<VariableDeclaration> fields = fieldList.variables; |
| 9301 expect(fields, hasLength(1)); | 9281 expect(fields, hasLength(1)); |
| 9302 VariableDeclaration field = fields[0]; | 9282 VariableDeclaration field = fields[0]; |
| 9303 expect(field.name.isSynthetic, isTrue); | 9283 expect(field.name.isSynthetic, isTrue); |
| 9304 } | 9284 } |
| 9305 | 9285 |
| 9306 void test_incompleteField_var() { | 9286 void test_incompleteField_var() { |
| 9307 CompilationUnit unit = parseCompilationUnit( | 9287 CompilationUnit unit = parseCompilationUnit(r''' |
| 9308 r''' | |
| 9309 class C { | 9288 class C { |
| 9310 var | 9289 var |
| 9311 }''', | 9290 }''', [ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); |
| 9312 [ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); | |
| 9313 NodeList<CompilationUnitMember> declarations = unit.declarations; | 9291 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 9314 expect(declarations, hasLength(1)); | 9292 expect(declarations, hasLength(1)); |
| 9315 CompilationUnitMember unitMember = declarations[0]; | 9293 CompilationUnitMember unitMember = declarations[0]; |
| 9316 EngineTestCase.assertInstanceOf( | 9294 EngineTestCase.assertInstanceOf( |
| 9317 (obj) => obj is ClassDeclaration, ClassDeclaration, unitMember); | 9295 (obj) => obj is ClassDeclaration, ClassDeclaration, unitMember); |
| 9318 NodeList<ClassMember> members = (unitMember as ClassDeclaration).members; | 9296 NodeList<ClassMember> members = (unitMember as ClassDeclaration).members; |
| 9319 expect(members, hasLength(1)); | 9297 expect(members, hasLength(1)); |
| 9320 ClassMember classMember = members[0]; | 9298 ClassMember classMember = members[0]; |
| 9321 EngineTestCase.assertInstanceOf( | 9299 EngineTestCase.assertInstanceOf( |
| 9322 (obj) => obj is FieldDeclaration, FieldDeclaration, classMember); | 9300 (obj) => obj is FieldDeclaration, FieldDeclaration, classMember); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9370 } | 9348 } |
| 9371 | 9349 |
| 9372 void test_incompleteLocalVariable_parameterizedType() { | 9350 void test_incompleteLocalVariable_parameterizedType() { |
| 9373 Statement statement = parseStatement('List<String> v {}'); | 9351 Statement statement = parseStatement('List<String> v {}'); |
| 9374 assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); | 9352 assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); |
| 9375 expect(statement, new isInstanceOf<VariableDeclarationStatement>()); | 9353 expect(statement, new isInstanceOf<VariableDeclarationStatement>()); |
| 9376 expect(statement.toSource(), 'List<String> v;'); | 9354 expect(statement.toSource(), 'List<String> v;'); |
| 9377 } | 9355 } |
| 9378 | 9356 |
| 9379 void test_incompleteTypeArguments_field() { | 9357 void test_incompleteTypeArguments_field() { |
| 9380 CompilationUnit unit = parseCompilationUnit( | 9358 CompilationUnit unit = parseCompilationUnit(r''' |
| 9381 r''' | |
| 9382 class C { | 9359 class C { |
| 9383 final List<int f; | 9360 final List<int f; |
| 9384 }''', | 9361 }''', [ParserErrorCode.EXPECTED_TOKEN]); |
| 9385 [ParserErrorCode.EXPECTED_TOKEN]); | |
| 9386 // one class | 9362 // one class |
| 9387 List<CompilationUnitMember> declarations = unit.declarations; | 9363 List<CompilationUnitMember> declarations = unit.declarations; |
| 9388 expect(declarations, hasLength(1)); | 9364 expect(declarations, hasLength(1)); |
| 9389 ClassDeclaration classDecl = declarations[0] as ClassDeclaration; | 9365 ClassDeclaration classDecl = declarations[0] as ClassDeclaration; |
| 9390 // one field declaration | 9366 // one field declaration |
| 9391 List<ClassMember> members = classDecl.members; | 9367 List<ClassMember> members = classDecl.members; |
| 9392 expect(members, hasLength(1)); | 9368 expect(members, hasLength(1)); |
| 9393 FieldDeclaration fieldDecl = members[0] as FieldDeclaration; | 9369 FieldDeclaration fieldDecl = members[0] as FieldDeclaration; |
| 9394 // one field | 9370 // one field |
| 9395 VariableDeclarationList fieldList = fieldDecl.fields; | 9371 VariableDeclarationList fieldList = fieldDecl.fields; |
| 9396 List<VariableDeclaration> fields = fieldList.variables; | 9372 List<VariableDeclaration> fields = fieldList.variables; |
| 9397 expect(fields, hasLength(1)); | 9373 expect(fields, hasLength(1)); |
| 9398 VariableDeclaration field = fields[0]; | 9374 VariableDeclaration field = fields[0]; |
| 9399 expect(field.name.name, 'f'); | 9375 expect(field.name.name, 'f'); |
| 9400 // validate the type | 9376 // validate the type |
| 9401 TypeArgumentList typeArguments = (fieldList.type as TypeName).typeArguments; | 9377 TypeArgumentList typeArguments = (fieldList.type as TypeName).typeArguments; |
| 9402 expect(typeArguments.arguments, hasLength(1)); | 9378 expect(typeArguments.arguments, hasLength(1)); |
| 9403 // synthetic '>' | 9379 // synthetic '>' |
| 9404 Token token = typeArguments.endToken; | 9380 Token token = typeArguments.endToken; |
| 9405 expect(token.type, TokenType.GT); | 9381 expect(token.type, TokenType.GT); |
| 9406 expect(token.isSynthetic, isTrue); | 9382 expect(token.isSynthetic, isTrue); |
| 9407 } | 9383 } |
| 9408 | 9384 |
| 9409 void test_incompleteTypeParameters() { | 9385 void test_incompleteTypeParameters() { |
| 9410 CompilationUnit unit = parseCompilationUnit( | 9386 CompilationUnit unit = parseCompilationUnit(r''' |
| 9411 r''' | |
| 9412 class C<K { | 9387 class C<K { |
| 9413 }''', | 9388 }''', [ParserErrorCode.EXPECTED_TOKEN]); |
| 9414 [ParserErrorCode.EXPECTED_TOKEN]); | |
| 9415 // one class | 9389 // one class |
| 9416 List<CompilationUnitMember> declarations = unit.declarations; | 9390 List<CompilationUnitMember> declarations = unit.declarations; |
| 9417 expect(declarations, hasLength(1)); | 9391 expect(declarations, hasLength(1)); |
| 9418 ClassDeclaration classDecl = declarations[0] as ClassDeclaration; | 9392 ClassDeclaration classDecl = declarations[0] as ClassDeclaration; |
| 9419 // validate the type parameters | 9393 // validate the type parameters |
| 9420 TypeParameterList typeParameters = classDecl.typeParameters; | 9394 TypeParameterList typeParameters = classDecl.typeParameters; |
| 9421 expect(typeParameters.typeParameters, hasLength(1)); | 9395 expect(typeParameters.typeParameters, hasLength(1)); |
| 9422 // synthetic '>' | 9396 // synthetic '>' |
| 9423 Token token = typeParameters.endToken; | 9397 Token token = typeParameters.endToken; |
| 9424 expect(token.type, TokenType.GT); | 9398 expect(token.type, TokenType.GT); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9564 | 9538 |
| 9565 void test_missingComma_beforeNamedArgument() { | 9539 void test_missingComma_beforeNamedArgument() { |
| 9566 createParser('(a b: c)'); | 9540 createParser('(a b: c)'); |
| 9567 ArgumentList argumentList = parser.parseArgumentList(); | 9541 ArgumentList argumentList = parser.parseArgumentList(); |
| 9568 expectNotNullIfNoErrors(argumentList); | 9542 expectNotNullIfNoErrors(argumentList); |
| 9569 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); | 9543 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); |
| 9570 expect(argumentList.arguments, hasLength(2)); | 9544 expect(argumentList.arguments, hasLength(2)); |
| 9571 } | 9545 } |
| 9572 | 9546 |
| 9573 void test_missingGet() { | 9547 void test_missingGet() { |
| 9574 CompilationUnit unit = parseCompilationUnit( | 9548 CompilationUnit unit = parseCompilationUnit(r''' |
| 9575 r''' | |
| 9576 class C { | 9549 class C { |
| 9577 int length {} | 9550 int length {} |
| 9578 void foo() {} | 9551 void foo() {} |
| 9579 }''', | 9552 }''', [ParserErrorCode.MISSING_GET]); |
| 9580 [ParserErrorCode.MISSING_GET]); | |
| 9581 expect(unit, isNotNull); | 9553 expect(unit, isNotNull); |
| 9582 ClassDeclaration classDeclaration = | 9554 ClassDeclaration classDeclaration = |
| 9583 unit.declarations[0] as ClassDeclaration; | 9555 unit.declarations[0] as ClassDeclaration; |
| 9584 NodeList<ClassMember> members = classDeclaration.members; | 9556 NodeList<ClassMember> members = classDeclaration.members; |
| 9585 expect(members, hasLength(2)); | 9557 expect(members, hasLength(2)); |
| 9586 EngineTestCase.assertInstanceOf( | 9558 EngineTestCase.assertInstanceOf( |
| 9587 (obj) => obj is MethodDeclaration, MethodDeclaration, members[0]); | 9559 (obj) => obj is MethodDeclaration, MethodDeclaration, members[0]); |
| 9588 ClassMember member = members[1]; | 9560 ClassMember member = members[1]; |
| 9589 EngineTestCase.assertInstanceOf( | 9561 EngineTestCase.assertInstanceOf( |
| 9590 (obj) => obj is MethodDeclaration, MethodDeclaration, member); | 9562 (obj) => obj is MethodDeclaration, MethodDeclaration, member); |
| (...skipping 5598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15189 expectCommentText(typeVariable.documentationComment, '/// Doc'); | 15161 expectCommentText(typeVariable.documentationComment, '/// Doc'); |
| 15190 } | 15162 } |
| 15191 | 15163 |
| 15192 /** | 15164 /** |
| 15193 * Assert that the given [name] is in declaration context. | 15165 * Assert that the given [name] is in declaration context. |
| 15194 */ | 15166 */ |
| 15195 void _assertIsDeclarationName(SimpleIdentifier name) { | 15167 void _assertIsDeclarationName(SimpleIdentifier name) { |
| 15196 expect(name.inDeclarationContext(), isTrue); | 15168 expect(name.inDeclarationContext(), isTrue); |
| 15197 } | 15169 } |
| 15198 } | 15170 } |
| OLD | NEW |