Chromium Code Reviews| 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 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 10 matching lines...) Expand all Loading... | |
| 21 import 'package:test/test.dart'; | 21 import 'package:test/test.dart'; |
| 22 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 22 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 23 | 23 |
| 24 import 'test_support.dart'; | 24 import 'test_support.dart'; |
| 25 | 25 |
| 26 main() { | 26 main() { |
| 27 defineReflectiveSuite(() { | 27 defineReflectiveSuite(() { |
| 28 defineReflectiveTests(ClassMemberParserTest); | 28 defineReflectiveTests(ClassMemberParserTest); |
| 29 defineReflectiveTests(ComplexParserTest); | 29 defineReflectiveTests(ComplexParserTest); |
| 30 defineReflectiveTests(ErrorParserTest); | 30 defineReflectiveTests(ErrorParserTest); |
| 31 defineReflectiveTests(ExpressionParserText); | |
| 31 defineReflectiveTests(FormalParameterParserTest); | 32 defineReflectiveTests(FormalParameterParserTest); |
| 32 defineReflectiveTests(NonErrorParserTest); | 33 defineReflectiveTests(NonErrorParserTest); |
| 33 defineReflectiveTests(RecoveryParserTest); | 34 defineReflectiveTests(RecoveryParserTest); |
| 34 defineReflectiveTests(SimpleParserTest); | 35 defineReflectiveTests(SimpleParserTest); |
| 35 defineReflectiveTests(TopLevelParserTest); | 36 defineReflectiveTests(TopLevelParserTest); |
| 36 }); | 37 }); |
| 37 } | 38 } |
| 38 | 39 |
| 39 /** | 40 /** |
| 40 * Abstract base class for parser tests, which does not make assumptions about | 41 * Abstract base class for parser tests, which does not make assumptions about |
| 41 * which parser is used. | 42 * which parser is used. |
| 42 */ | 43 */ |
| 43 abstract class AbstractParserTestCase implements ParserTestHelpers { | 44 abstract class AbstractParserTestCase implements ParserTestHelpers { |
| 44 void set enableAssertInitializer(bool value); | 45 void set enableAssertInitializer(bool value); |
| 45 | 46 |
| 46 void set enableGenericMethodComments(bool value); | 47 void set enableGenericMethodComments(bool value); |
| 47 | 48 |
| 49 void set enableLazyAssignmentOperators(bool value); | |
| 50 | |
| 48 void set enableNnbd(bool value); | 51 void set enableNnbd(bool value); |
| 49 | 52 |
| 50 /** | 53 /** |
| 51 * Set a flag indicating whether the parser is to parse part-of directives | 54 * Set a flag indicating whether the parser is to parse part-of directives |
| 52 * that specify a URI rather than a library name. | 55 * that specify a URI rather than a library name. |
| 53 */ | 56 */ |
| 54 void set enableUriInPartOf(bool value); | 57 void set enableUriInPartOf(bool value); |
| 55 | 58 |
| 56 /** | 59 /** |
| 57 * Get the parser used by the test. | 60 * Get the parser used by the test. |
| (...skipping 3882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3940 | 3943 |
| 3941 void test_wrongTerminatorForParameterGroup_optional() { | 3944 void test_wrongTerminatorForParameterGroup_optional() { |
| 3942 createParser('(a, [b, c})'); | 3945 createParser('(a, [b, c})'); |
| 3943 FormalParameterList list = parser.parseFormalParameterList(); | 3946 FormalParameterList list = parser.parseFormalParameterList(); |
| 3944 expectNotNullIfNoErrors(list); | 3947 expectNotNullIfNoErrors(list); |
| 3945 listener.assertErrorsWithCodes( | 3948 listener.assertErrorsWithCodes( |
| 3946 [ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]); | 3949 [ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]); |
| 3947 } | 3950 } |
| 3948 } | 3951 } |
| 3949 | 3952 |
| 3953 @reflectiveTest | |
| 3954 class ExpressionParserText extends ParserTestCase | |
|
Paul Berry
2017/02/27 20:39:39
I think you mean "ExpressionParserTest"
| |
| 3955 with ExpressionParserTextMixin {} | |
| 3956 | |
| 3957 abstract class ExpressionParserTextMixin implements AbstractParserTestCase { | |
|
Paul Berry
2017/02/27 20:39:39
Similarly, this should be "ExpressionParserTestMix
| |
| 3958 void test_parseAdditiveExpression_normal() { | |
| 3959 createParser('x + y'); | |
| 3960 Expression expression = parser.parseAdditiveExpression(); | |
| 3961 expect(expression, isNotNull); | |
| 3962 assertNoErrors(); | |
| 3963 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 3964 BinaryExpression binaryExpression = expression; | |
| 3965 expect(binaryExpression.leftOperand, isNotNull); | |
| 3966 expect(binaryExpression.operator, isNotNull); | |
| 3967 expect(binaryExpression.operator.type, TokenType.PLUS); | |
| 3968 expect(binaryExpression.rightOperand, isNotNull); | |
| 3969 } | |
| 3970 | |
| 3971 void test_parseAdditiveExpression_super() { | |
| 3972 createParser('super + y'); | |
| 3973 Expression expression = parser.parseAdditiveExpression(); | |
| 3974 expect(expression, isNotNull); | |
| 3975 assertNoErrors(); | |
| 3976 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 3977 BinaryExpression binaryExpression = expression; | |
| 3978 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 3979 expect(binaryExpression.operator, isNotNull); | |
| 3980 expect(binaryExpression.operator.type, TokenType.PLUS); | |
| 3981 expect(binaryExpression.rightOperand, isNotNull); | |
| 3982 } | |
| 3983 | |
| 3984 void test_parseAssignableExpression_expression_args_dot() { | |
| 3985 createParser('(x)(y).z'); | |
| 3986 Expression expression = parser.parseAssignableExpression(false); | |
| 3987 expect(expression, isNotNull); | |
| 3988 assertNoErrors(); | |
| 3989 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 3990 PropertyAccess propertyAccess = expression; | |
| 3991 FunctionExpressionInvocation invocation = | |
| 3992 propertyAccess.target as FunctionExpressionInvocation; | |
| 3993 expect(invocation.function, isNotNull); | |
| 3994 expect(invocation.typeArguments, isNull); | |
| 3995 ArgumentList argumentList = invocation.argumentList; | |
| 3996 expect(argumentList, isNotNull); | |
| 3997 expect(argumentList.arguments, hasLength(1)); | |
| 3998 expect(propertyAccess.operator, isNotNull); | |
| 3999 expect(propertyAccess.propertyName, isNotNull); | |
| 4000 } | |
| 4001 | |
| 4002 void | |
| 4003 test_parseAssignableExpression_expression_args_dot_typeParameterComments() { | |
| 4004 enableGenericMethodComments = true; | |
| 4005 createParser('(x)/*<F>*/(y).z'); | |
| 4006 Expression expression = parser.parseAssignableExpression(false); | |
| 4007 expect(expression, isNotNull); | |
| 4008 assertNoErrors(); | |
| 4009 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4010 PropertyAccess propertyAccess = expression; | |
| 4011 FunctionExpressionInvocation invocation = | |
| 4012 propertyAccess.target as FunctionExpressionInvocation; | |
| 4013 expect(invocation.function, isNotNull); | |
| 4014 expect(invocation.typeArguments, isNotNull); | |
| 4015 ArgumentList argumentList = invocation.argumentList; | |
| 4016 expect(argumentList, isNotNull); | |
| 4017 expect(argumentList.arguments, hasLength(1)); | |
| 4018 expect(propertyAccess.operator, isNotNull); | |
| 4019 expect(propertyAccess.propertyName, isNotNull); | |
| 4020 } | |
| 4021 | |
| 4022 void test_parseAssignableExpression_expression_args_dot_typeParameters() { | |
| 4023 createParser('(x)<F>(y).z'); | |
| 4024 Expression expression = parser.parseAssignableExpression(false); | |
| 4025 expect(expression, isNotNull); | |
| 4026 assertNoErrors(); | |
| 4027 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4028 PropertyAccess propertyAccess = expression; | |
| 4029 FunctionExpressionInvocation invocation = | |
| 4030 propertyAccess.target as FunctionExpressionInvocation; | |
| 4031 expect(invocation.function, isNotNull); | |
| 4032 expect(invocation.typeArguments, isNotNull); | |
| 4033 ArgumentList argumentList = invocation.argumentList; | |
| 4034 expect(argumentList, isNotNull); | |
| 4035 expect(argumentList.arguments, hasLength(1)); | |
| 4036 expect(propertyAccess.operator, isNotNull); | |
| 4037 expect(propertyAccess.propertyName, isNotNull); | |
| 4038 } | |
| 4039 | |
| 4040 void test_parseAssignableExpression_expression_dot() { | |
| 4041 createParser('(x).y'); | |
| 4042 Expression expression = parser.parseAssignableExpression(false); | |
| 4043 expect(expression, isNotNull); | |
| 4044 assertNoErrors(); | |
| 4045 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4046 PropertyAccess propertyAccess = expression; | |
| 4047 expect(propertyAccess.target, isNotNull); | |
| 4048 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 4049 expect(propertyAccess.propertyName, isNotNull); | |
| 4050 } | |
| 4051 | |
| 4052 void test_parseAssignableExpression_expression_index() { | |
| 4053 createParser('(x)[y]'); | |
| 4054 Expression expression = parser.parseAssignableExpression(false); | |
| 4055 expect(expression, isNotNull); | |
| 4056 assertNoErrors(); | |
| 4057 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 4058 IndexExpression indexExpression = expression; | |
| 4059 expect(indexExpression.target, isNotNull); | |
| 4060 expect(indexExpression.leftBracket, isNotNull); | |
| 4061 expect(indexExpression.index, isNotNull); | |
| 4062 expect(indexExpression.rightBracket, isNotNull); | |
| 4063 } | |
| 4064 | |
| 4065 void test_parseAssignableExpression_expression_question_dot() { | |
| 4066 createParser('(x)?.y'); | |
| 4067 Expression expression = parser.parseAssignableExpression(false); | |
| 4068 expect(expression, isNotNull); | |
| 4069 assertNoErrors(); | |
| 4070 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4071 PropertyAccess propertyAccess = expression; | |
| 4072 expect(propertyAccess.target, isNotNull); | |
| 4073 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | |
| 4074 expect(propertyAccess.propertyName, isNotNull); | |
| 4075 } | |
| 4076 | |
| 4077 void test_parseAssignableExpression_identifier() { | |
| 4078 createParser('x'); | |
| 4079 Expression expression = parser.parseAssignableExpression(false); | |
| 4080 expect(expression, isNotNull); | |
| 4081 assertNoErrors(); | |
| 4082 expect(expression, new isInstanceOf<SimpleIdentifier>()); | |
| 4083 SimpleIdentifier identifier = expression; | |
| 4084 expect(identifier, isNotNull); | |
| 4085 } | |
| 4086 | |
| 4087 void test_parseAssignableExpression_identifier_args_dot() { | |
| 4088 createParser('x(y).z'); | |
| 4089 Expression expression = parser.parseAssignableExpression(false); | |
| 4090 expect(expression, isNotNull); | |
| 4091 assertNoErrors(); | |
| 4092 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4093 PropertyAccess propertyAccess = expression; | |
| 4094 MethodInvocation invocation = propertyAccess.target as MethodInvocation; | |
| 4095 expect(invocation.methodName.name, "x"); | |
| 4096 expect(invocation.typeArguments, isNull); | |
| 4097 ArgumentList argumentList = invocation.argumentList; | |
| 4098 expect(argumentList, isNotNull); | |
| 4099 expect(argumentList.arguments, hasLength(1)); | |
| 4100 expect(propertyAccess.operator, isNotNull); | |
| 4101 expect(propertyAccess.propertyName, isNotNull); | |
| 4102 } | |
| 4103 | |
| 4104 void | |
| 4105 test_parseAssignableExpression_identifier_args_dot_typeParameterComments() { | |
| 4106 enableGenericMethodComments = true; | |
| 4107 createParser('x/*<E>*/(y).z'); | |
| 4108 Expression expression = parser.parseAssignableExpression(false); | |
| 4109 expect(expression, isNotNull); | |
| 4110 assertNoErrors(); | |
| 4111 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4112 PropertyAccess propertyAccess = expression; | |
| 4113 MethodInvocation invocation = propertyAccess.target as MethodInvocation; | |
| 4114 expect(invocation.methodName.name, "x"); | |
| 4115 expect(invocation.typeArguments, isNotNull); | |
| 4116 ArgumentList argumentList = invocation.argumentList; | |
| 4117 expect(argumentList, isNotNull); | |
| 4118 expect(argumentList.arguments, hasLength(1)); | |
| 4119 expect(propertyAccess.operator, isNotNull); | |
| 4120 expect(propertyAccess.propertyName, isNotNull); | |
| 4121 } | |
| 4122 | |
| 4123 void test_parseAssignableExpression_identifier_args_dot_typeParameters() { | |
| 4124 createParser('x<E>(y).z'); | |
| 4125 Expression expression = parser.parseAssignableExpression(false); | |
| 4126 expect(expression, isNotNull); | |
| 4127 assertNoErrors(); | |
| 4128 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4129 PropertyAccess propertyAccess = expression; | |
| 4130 MethodInvocation invocation = propertyAccess.target as MethodInvocation; | |
| 4131 expect(invocation.methodName.name, "x"); | |
| 4132 expect(invocation.typeArguments, isNotNull); | |
| 4133 ArgumentList argumentList = invocation.argumentList; | |
| 4134 expect(argumentList, isNotNull); | |
| 4135 expect(argumentList.arguments, hasLength(1)); | |
| 4136 expect(propertyAccess.operator, isNotNull); | |
| 4137 expect(propertyAccess.propertyName, isNotNull); | |
| 4138 } | |
| 4139 | |
| 4140 void test_parseAssignableExpression_identifier_dot() { | |
| 4141 createParser('x.y'); | |
| 4142 Expression expression = parser.parseAssignableExpression(false); | |
| 4143 expect(expression, isNotNull); | |
| 4144 assertNoErrors(); | |
| 4145 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4146 PropertyAccess propertyAccess = expression; | |
| 4147 expect(propertyAccess.target, isNotNull); | |
| 4148 expect(propertyAccess.operator, isNotNull); | |
| 4149 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 4150 expect(propertyAccess.propertyName, isNotNull); | |
| 4151 } | |
| 4152 | |
| 4153 void test_parseAssignableExpression_identifier_index() { | |
| 4154 createParser('x[y]'); | |
| 4155 Expression expression = parser.parseAssignableExpression(false); | |
| 4156 expect(expression, isNotNull); | |
| 4157 assertNoErrors(); | |
| 4158 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 4159 IndexExpression indexExpression = expression; | |
| 4160 expect(indexExpression.target, isNotNull); | |
| 4161 expect(indexExpression.leftBracket, isNotNull); | |
| 4162 expect(indexExpression.index, isNotNull); | |
| 4163 expect(indexExpression.rightBracket, isNotNull); | |
| 4164 } | |
| 4165 | |
| 4166 void test_parseAssignableExpression_identifier_question_dot() { | |
| 4167 createParser('x?.y'); | |
| 4168 Expression expression = parser.parseAssignableExpression(false); | |
| 4169 expect(expression, isNotNull); | |
| 4170 assertNoErrors(); | |
| 4171 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4172 PropertyAccess propertyAccess = expression; | |
| 4173 expect(propertyAccess.target, isNotNull); | |
| 4174 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | |
| 4175 expect(propertyAccess.propertyName, isNotNull); | |
| 4176 } | |
| 4177 | |
| 4178 void test_parseAssignableExpression_super_dot() { | |
| 4179 createParser('super.y'); | |
| 4180 Expression expression = parser.parseAssignableExpression(false); | |
| 4181 expect(expression, isNotNull); | |
| 4182 assertNoErrors(); | |
| 4183 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4184 PropertyAccess propertyAccess = expression; | |
| 4185 EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, | |
| 4186 SuperExpression, propertyAccess.target); | |
| 4187 expect(propertyAccess.operator, isNotNull); | |
| 4188 expect(propertyAccess.propertyName, isNotNull); | |
| 4189 } | |
| 4190 | |
| 4191 void test_parseAssignableExpression_super_index() { | |
| 4192 createParser('super[y]'); | |
| 4193 Expression expression = parser.parseAssignableExpression(false); | |
| 4194 expect(expression, isNotNull); | |
| 4195 assertNoErrors(); | |
| 4196 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 4197 IndexExpression indexExpression = expression; | |
| 4198 expect(indexExpression.target, new isInstanceOf<SuperExpression>()); | |
| 4199 expect(indexExpression.leftBracket, isNotNull); | |
| 4200 expect(indexExpression.index, isNotNull); | |
| 4201 expect(indexExpression.rightBracket, isNotNull); | |
| 4202 } | |
| 4203 | |
| 4204 void test_parseAssignableSelector_dot() { | |
| 4205 createParser('.x'); | |
| 4206 Expression expression = parser.parseAssignableSelector(null, true); | |
| 4207 expect(expression, isNotNull); | |
| 4208 assertNoErrors(); | |
| 4209 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4210 PropertyAccess propertyAccess = expression; | |
| 4211 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 4212 expect(propertyAccess.propertyName, isNotNull); | |
| 4213 } | |
| 4214 | |
| 4215 void test_parseAssignableSelector_index() { | |
| 4216 createParser('[x]'); | |
| 4217 Expression expression = parser.parseAssignableSelector(null, true); | |
| 4218 expect(expression, isNotNull); | |
| 4219 assertNoErrors(); | |
| 4220 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 4221 IndexExpression indexExpression = expression; | |
| 4222 expect(indexExpression.leftBracket, isNotNull); | |
| 4223 expect(indexExpression.index, isNotNull); | |
| 4224 expect(indexExpression.rightBracket, isNotNull); | |
| 4225 } | |
| 4226 | |
| 4227 void test_parseAssignableSelector_none() { | |
| 4228 createParser(';'); | |
| 4229 Expression expression = | |
| 4230 parser.parseAssignableSelector(astFactory.simpleIdentifier(null), true); | |
| 4231 expect(expression, isNotNull); | |
| 4232 assertNoErrors(); | |
| 4233 expect(expression, new isInstanceOf<SimpleIdentifier>()); | |
| 4234 SimpleIdentifier identifier = expression; | |
| 4235 expect(identifier, isNotNull); | |
| 4236 } | |
| 4237 | |
| 4238 void test_parseAssignableSelector_question_dot() { | |
| 4239 createParser('?.x'); | |
| 4240 Expression expression = parser.parseAssignableSelector(null, true); | |
| 4241 expect(expression, isNotNull); | |
| 4242 assertNoErrors(); | |
| 4243 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4244 PropertyAccess propertyAccess = expression; | |
| 4245 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | |
| 4246 expect(propertyAccess.propertyName, isNotNull); | |
| 4247 } | |
| 4248 | |
| 4249 void test_parseAwaitExpression() { | |
| 4250 createParser('await x;'); | |
| 4251 AwaitExpression expression = parser.parseAwaitExpression(); | |
| 4252 expect(expression, isNotNull); | |
| 4253 assertNoErrors(); | |
| 4254 expect(expression.awaitKeyword, isNotNull); | |
| 4255 expect(expression.expression, isNotNull); | |
| 4256 } | |
| 4257 | |
| 4258 void test_parseBitwiseAndExpression_normal() { | |
| 4259 createParser('x & y'); | |
| 4260 Expression expression = parser.parseBitwiseAndExpression(); | |
| 4261 expect(expression, isNotNull); | |
| 4262 assertNoErrors(); | |
| 4263 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4264 BinaryExpression binaryExpression = expression; | |
| 4265 expect(binaryExpression.leftOperand, isNotNull); | |
| 4266 expect(binaryExpression.operator, isNotNull); | |
| 4267 expect(binaryExpression.operator.type, TokenType.AMPERSAND); | |
| 4268 expect(binaryExpression.rightOperand, isNotNull); | |
| 4269 } | |
| 4270 | |
| 4271 void test_parseBitwiseAndExpression_super() { | |
| 4272 createParser('super & y'); | |
| 4273 Expression expression = parser.parseBitwiseAndExpression(); | |
| 4274 expect(expression, isNotNull); | |
| 4275 assertNoErrors(); | |
| 4276 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4277 BinaryExpression binaryExpression = expression; | |
| 4278 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 4279 expect(binaryExpression.operator, isNotNull); | |
| 4280 expect(binaryExpression.operator.type, TokenType.AMPERSAND); | |
| 4281 expect(binaryExpression.rightOperand, isNotNull); | |
| 4282 } | |
| 4283 | |
| 4284 void test_parseBitwiseOrExpression_normal() { | |
| 4285 createParser('x | y'); | |
| 4286 Expression expression = parser.parseBitwiseOrExpression(); | |
| 4287 expect(expression, isNotNull); | |
| 4288 assertNoErrors(); | |
| 4289 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4290 BinaryExpression binaryExpression = expression; | |
| 4291 expect(binaryExpression.leftOperand, isNotNull); | |
| 4292 expect(binaryExpression.operator, isNotNull); | |
| 4293 expect(binaryExpression.operator.type, TokenType.BAR); | |
| 4294 expect(binaryExpression.rightOperand, isNotNull); | |
| 4295 } | |
| 4296 | |
| 4297 void test_parseBitwiseOrExpression_super() { | |
| 4298 createParser('super | y'); | |
| 4299 Expression expression = parser.parseBitwiseOrExpression(); | |
| 4300 expect(expression, isNotNull); | |
| 4301 assertNoErrors(); | |
| 4302 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4303 BinaryExpression binaryExpression = expression; | |
| 4304 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 4305 expect(binaryExpression.operator, isNotNull); | |
| 4306 expect(binaryExpression.operator.type, TokenType.BAR); | |
| 4307 expect(binaryExpression.rightOperand, isNotNull); | |
| 4308 } | |
| 4309 | |
| 4310 void test_parseBitwiseXorExpression_normal() { | |
| 4311 createParser('x ^ y'); | |
| 4312 Expression expression = parser.parseBitwiseXorExpression(); | |
| 4313 expect(expression, isNotNull); | |
| 4314 assertNoErrors(); | |
| 4315 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4316 BinaryExpression binaryExpression = expression; | |
| 4317 expect(binaryExpression.leftOperand, isNotNull); | |
| 4318 expect(binaryExpression.operator, isNotNull); | |
| 4319 expect(binaryExpression.operator.type, TokenType.CARET); | |
| 4320 expect(binaryExpression.rightOperand, isNotNull); | |
| 4321 } | |
| 4322 | |
| 4323 void test_parseBitwiseXorExpression_super() { | |
| 4324 createParser('super ^ y'); | |
| 4325 Expression expression = parser.parseBitwiseXorExpression(); | |
| 4326 expect(expression, isNotNull); | |
| 4327 assertNoErrors(); | |
| 4328 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4329 BinaryExpression binaryExpression = expression; | |
| 4330 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 4331 expect(binaryExpression.operator, isNotNull); | |
| 4332 expect(binaryExpression.operator.type, TokenType.CARET); | |
| 4333 expect(binaryExpression.rightOperand, isNotNull); | |
| 4334 } | |
| 4335 | |
| 4336 void test_parseCascadeSection_i() { | |
| 4337 createParser('..[i]'); | |
| 4338 Expression expression = parser.parseCascadeSection(); | |
| 4339 expect(expression, isNotNull); | |
| 4340 assertNoErrors(); | |
| 4341 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 4342 IndexExpression section = expression; | |
| 4343 expect(section.target, isNull); | |
| 4344 expect(section.leftBracket, isNotNull); | |
| 4345 expect(section.index, isNotNull); | |
| 4346 expect(section.rightBracket, isNotNull); | |
| 4347 } | |
| 4348 | |
| 4349 void test_parseCascadeSection_ia() { | |
| 4350 createParser('..[i](b)'); | |
| 4351 Expression expression = parser.parseCascadeSection(); | |
| 4352 expect(expression, isNotNull); | |
| 4353 assertNoErrors(); | |
| 4354 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4355 FunctionExpressionInvocation section = expression; | |
| 4356 expect(section.function, new isInstanceOf<IndexExpression>()); | |
| 4357 expect(section.typeArguments, isNull); | |
| 4358 expect(section.argumentList, isNotNull); | |
| 4359 } | |
| 4360 | |
| 4361 void test_parseCascadeSection_ia_typeArgumentComments() { | |
| 4362 enableGenericMethodComments = true; | |
| 4363 createParser('..[i]/*<E>*/(b)'); | |
| 4364 Expression expression = parser.parseCascadeSection(); | |
| 4365 expect(expression, isNotNull); | |
| 4366 assertNoErrors(); | |
| 4367 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4368 FunctionExpressionInvocation section = expression; | |
| 4369 expect(section.function, new isInstanceOf<IndexExpression>()); | |
| 4370 expect(section.typeArguments, isNotNull); | |
| 4371 expect(section.argumentList, isNotNull); | |
| 4372 } | |
| 4373 | |
| 4374 void test_parseCascadeSection_ia_typeArguments() { | |
| 4375 createParser('..[i]<E>(b)'); | |
| 4376 Expression expression = parser.parseCascadeSection(); | |
| 4377 expect(expression, isNotNull); | |
| 4378 assertNoErrors(); | |
| 4379 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4380 FunctionExpressionInvocation section = expression; | |
| 4381 expect(section.function, new isInstanceOf<IndexExpression>()); | |
| 4382 expect(section.typeArguments, isNotNull); | |
| 4383 expect(section.argumentList, isNotNull); | |
| 4384 } | |
| 4385 | |
| 4386 void test_parseCascadeSection_ii() { | |
| 4387 createParser('..a(b).c(d)'); | |
| 4388 Expression expression = parser.parseCascadeSection(); | |
| 4389 expect(expression, isNotNull); | |
| 4390 assertNoErrors(); | |
| 4391 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4392 MethodInvocation section = expression; | |
| 4393 expect(section.target, new isInstanceOf<MethodInvocation>()); | |
| 4394 expect(section.operator, isNotNull); | |
| 4395 expect(section.methodName, isNotNull); | |
| 4396 expect(section.typeArguments, isNull); | |
| 4397 expect(section.argumentList, isNotNull); | |
| 4398 expect(section.argumentList.arguments, hasLength(1)); | |
| 4399 } | |
| 4400 | |
| 4401 void test_parseCascadeSection_ii_typeArgumentComments() { | |
| 4402 enableGenericMethodComments = true; | |
| 4403 createParser('..a/*<E>*/(b).c/*<F>*/(d)'); | |
| 4404 Expression expression = parser.parseCascadeSection(); | |
| 4405 expect(expression, isNotNull); | |
| 4406 assertNoErrors(); | |
| 4407 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4408 MethodInvocation section = expression; | |
| 4409 expect(section.target, new isInstanceOf<MethodInvocation>()); | |
| 4410 expect(section.operator, isNotNull); | |
| 4411 expect(section.methodName, isNotNull); | |
| 4412 expect(section.typeArguments, isNotNull); | |
| 4413 expect(section.argumentList, isNotNull); | |
| 4414 expect(section.argumentList.arguments, hasLength(1)); | |
| 4415 } | |
| 4416 | |
| 4417 void test_parseCascadeSection_ii_typeArguments() { | |
| 4418 createParser('..a<E>(b).c<F>(d)'); | |
| 4419 Expression expression = parser.parseCascadeSection(); | |
| 4420 expect(expression, isNotNull); | |
| 4421 assertNoErrors(); | |
| 4422 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4423 MethodInvocation section = expression; | |
| 4424 expect(section.target, new isInstanceOf<MethodInvocation>()); | |
| 4425 expect(section.operator, isNotNull); | |
| 4426 expect(section.methodName, isNotNull); | |
| 4427 expect(section.typeArguments, isNotNull); | |
| 4428 expect(section.argumentList, isNotNull); | |
| 4429 expect(section.argumentList.arguments, hasLength(1)); | |
| 4430 } | |
| 4431 | |
| 4432 void test_parseCascadeSection_p() { | |
| 4433 createParser('..a'); | |
| 4434 Expression expression = parser.parseCascadeSection(); | |
| 4435 expect(expression, isNotNull); | |
| 4436 assertNoErrors(); | |
| 4437 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4438 PropertyAccess section = expression; | |
| 4439 expect(section.target, isNull); | |
| 4440 expect(section.operator, isNotNull); | |
| 4441 expect(section.propertyName, isNotNull); | |
| 4442 } | |
| 4443 | |
| 4444 void test_parseCascadeSection_p_assign() { | |
| 4445 createParser('..a = 3'); | |
| 4446 Expression expression = parser.parseCascadeSection(); | |
| 4447 expect(expression, isNotNull); | |
| 4448 assertNoErrors(); | |
| 4449 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 4450 AssignmentExpression section = expression; | |
| 4451 expect(section.leftHandSide, isNotNull); | |
| 4452 expect(section.operator, isNotNull); | |
| 4453 Expression rhs = section.rightHandSide; | |
| 4454 expect(rhs, isNotNull); | |
| 4455 } | |
| 4456 | |
| 4457 void test_parseCascadeSection_p_assign_withCascade() { | |
| 4458 createParser('..a = 3..m()'); | |
| 4459 Expression expression = parser.parseCascadeSection(); | |
| 4460 expect(expression, isNotNull); | |
| 4461 assertNoErrors(); | |
| 4462 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 4463 AssignmentExpression section = expression; | |
| 4464 expect(section.leftHandSide, isNotNull); | |
| 4465 expect(section.operator, isNotNull); | |
| 4466 Expression rhs = section.rightHandSide; | |
| 4467 EngineTestCase.assertInstanceOf( | |
| 4468 (obj) => obj is IntegerLiteral, IntegerLiteral, rhs); | |
| 4469 } | |
| 4470 | |
| 4471 void test_parseCascadeSection_p_assign_withCascade_typeArgumentComments() { | |
| 4472 enableGenericMethodComments = true; | |
| 4473 createParser('..a = 3..m/*<E>*/()'); | |
| 4474 Expression expression = parser.parseCascadeSection(); | |
| 4475 expect(expression, isNotNull); | |
| 4476 assertNoErrors(); | |
| 4477 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 4478 AssignmentExpression section = expression; | |
| 4479 expect(section.leftHandSide, isNotNull); | |
| 4480 expect(section.operator, isNotNull); | |
| 4481 Expression rhs = section.rightHandSide; | |
| 4482 EngineTestCase.assertInstanceOf( | |
| 4483 (obj) => obj is IntegerLiteral, IntegerLiteral, rhs); | |
| 4484 } | |
| 4485 | |
| 4486 void test_parseCascadeSection_p_assign_withCascade_typeArguments() { | |
| 4487 createParser('..a = 3..m<E>()'); | |
| 4488 Expression expression = parser.parseCascadeSection(); | |
| 4489 expect(expression, isNotNull); | |
| 4490 assertNoErrors(); | |
| 4491 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 4492 AssignmentExpression section = expression; | |
| 4493 expect(section.leftHandSide, isNotNull); | |
| 4494 expect(section.operator, isNotNull); | |
| 4495 Expression rhs = section.rightHandSide; | |
| 4496 EngineTestCase.assertInstanceOf( | |
| 4497 (obj) => obj is IntegerLiteral, IntegerLiteral, rhs); | |
| 4498 } | |
| 4499 | |
| 4500 void test_parseCascadeSection_p_builtIn() { | |
| 4501 createParser('..as'); | |
| 4502 Expression expression = parser.parseCascadeSection(); | |
| 4503 expect(expression, isNotNull); | |
| 4504 assertNoErrors(); | |
| 4505 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4506 PropertyAccess section = expression; | |
| 4507 expect(section.target, isNull); | |
| 4508 expect(section.operator, isNotNull); | |
| 4509 expect(section.propertyName, isNotNull); | |
| 4510 } | |
| 4511 | |
| 4512 void test_parseCascadeSection_pa() { | |
| 4513 createParser('..a(b)'); | |
| 4514 Expression expression = parser.parseCascadeSection(); | |
| 4515 expect(expression, isNotNull); | |
| 4516 assertNoErrors(); | |
| 4517 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4518 MethodInvocation section = expression; | |
| 4519 expect(section.target, isNull); | |
| 4520 expect(section.operator, isNotNull); | |
| 4521 expect(section.methodName, isNotNull); | |
| 4522 expect(section.typeArguments, isNull); | |
| 4523 expect(section.argumentList, isNotNull); | |
| 4524 expect(section.argumentList.arguments, hasLength(1)); | |
| 4525 } | |
| 4526 | |
| 4527 void test_parseCascadeSection_pa_typeArgumentComments() { | |
| 4528 enableGenericMethodComments = true; | |
| 4529 createParser('..a/*<E>*/(b)'); | |
| 4530 Expression expression = parser.parseCascadeSection(); | |
| 4531 expect(expression, isNotNull); | |
| 4532 assertNoErrors(); | |
| 4533 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4534 MethodInvocation section = expression; | |
| 4535 expect(section.target, isNull); | |
| 4536 expect(section.operator, isNotNull); | |
| 4537 expect(section.methodName, isNotNull); | |
| 4538 expect(section.typeArguments, isNotNull); | |
| 4539 expect(section.argumentList, isNotNull); | |
| 4540 expect(section.argumentList.arguments, hasLength(1)); | |
| 4541 } | |
| 4542 | |
| 4543 void test_parseCascadeSection_pa_typeArguments() { | |
| 4544 createParser('..a<E>(b)'); | |
| 4545 Expression expression = parser.parseCascadeSection(); | |
| 4546 expect(expression, isNotNull); | |
| 4547 assertNoErrors(); | |
| 4548 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4549 MethodInvocation section = expression; | |
| 4550 expect(section.target, isNull); | |
| 4551 expect(section.operator, isNotNull); | |
| 4552 expect(section.methodName, isNotNull); | |
| 4553 expect(section.typeArguments, isNotNull); | |
| 4554 expect(section.argumentList, isNotNull); | |
| 4555 expect(section.argumentList.arguments, hasLength(1)); | |
| 4556 } | |
| 4557 | |
| 4558 void test_parseCascadeSection_paa() { | |
| 4559 createParser('..a(b)(c)'); | |
| 4560 Expression expression = parser.parseCascadeSection(); | |
| 4561 expect(expression, isNotNull); | |
| 4562 assertNoErrors(); | |
| 4563 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4564 FunctionExpressionInvocation section = expression; | |
| 4565 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 4566 expect(section.typeArguments, isNull); | |
| 4567 expect(section.argumentList, isNotNull); | |
| 4568 expect(section.argumentList.arguments, hasLength(1)); | |
| 4569 } | |
| 4570 | |
| 4571 void test_parseCascadeSection_paa_typeArgumentComments() { | |
| 4572 enableGenericMethodComments = true; | |
| 4573 createParser('..a/*<E>*/(b)/*<F>*/(c)'); | |
| 4574 Expression expression = parser.parseCascadeSection(); | |
| 4575 expect(expression, isNotNull); | |
| 4576 assertNoErrors(); | |
| 4577 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4578 FunctionExpressionInvocation section = expression; | |
| 4579 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 4580 expect(section.typeArguments, isNotNull); | |
| 4581 expect(section.argumentList, isNotNull); | |
| 4582 expect(section.argumentList.arguments, hasLength(1)); | |
| 4583 } | |
| 4584 | |
| 4585 void test_parseCascadeSection_paa_typeArguments() { | |
| 4586 createParser('..a<E>(b)<F>(c)'); | |
| 4587 Expression expression = parser.parseCascadeSection(); | |
| 4588 expect(expression, isNotNull); | |
| 4589 assertNoErrors(); | |
| 4590 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4591 FunctionExpressionInvocation section = expression; | |
| 4592 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 4593 expect(section.typeArguments, isNotNull); | |
| 4594 expect(section.argumentList, isNotNull); | |
| 4595 expect(section.argumentList.arguments, hasLength(1)); | |
| 4596 } | |
| 4597 | |
| 4598 void test_parseCascadeSection_paapaa() { | |
| 4599 createParser('..a(b)(c).d(e)(f)'); | |
| 4600 Expression expression = parser.parseCascadeSection(); | |
| 4601 expect(expression, isNotNull); | |
| 4602 assertNoErrors(); | |
| 4603 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4604 FunctionExpressionInvocation section = expression; | |
| 4605 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 4606 expect(section.typeArguments, isNull); | |
| 4607 expect(section.argumentList, isNotNull); | |
| 4608 expect(section.argumentList.arguments, hasLength(1)); | |
| 4609 } | |
| 4610 | |
| 4611 void test_parseCascadeSection_paapaa_typeArgumentComments() { | |
| 4612 enableGenericMethodComments = true; | |
| 4613 createParser('..a/*<E>*/(b)/*<F>*/(c).d/*<G>*/(e)/*<H>*/(f)'); | |
| 4614 Expression expression = parser.parseCascadeSection(); | |
| 4615 expect(expression, isNotNull); | |
| 4616 assertNoErrors(); | |
| 4617 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4618 FunctionExpressionInvocation section = expression; | |
| 4619 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 4620 expect(section.typeArguments, isNotNull); | |
| 4621 expect(section.argumentList, isNotNull); | |
| 4622 expect(section.argumentList.arguments, hasLength(1)); | |
| 4623 } | |
| 4624 | |
| 4625 void test_parseCascadeSection_paapaa_typeArguments() { | |
| 4626 createParser('..a<E>(b)<F>(c).d<G>(e)<H>(f)'); | |
| 4627 Expression expression = parser.parseCascadeSection(); | |
| 4628 expect(expression, isNotNull); | |
| 4629 assertNoErrors(); | |
| 4630 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4631 FunctionExpressionInvocation section = expression; | |
| 4632 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 4633 expect(section.typeArguments, isNotNull); | |
| 4634 expect(section.argumentList, isNotNull); | |
| 4635 expect(section.argumentList.arguments, hasLength(1)); | |
| 4636 } | |
| 4637 | |
| 4638 void test_parseCascadeSection_pap() { | |
| 4639 createParser('..a(b).c'); | |
| 4640 Expression expression = parser.parseCascadeSection(); | |
| 4641 expect(expression, isNotNull); | |
| 4642 assertNoErrors(); | |
| 4643 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4644 PropertyAccess section = expression; | |
| 4645 expect(section.target, isNotNull); | |
| 4646 expect(section.operator, isNotNull); | |
| 4647 expect(section.propertyName, isNotNull); | |
| 4648 } | |
| 4649 | |
| 4650 void test_parseCascadeSection_pap_typeArgumentComments() { | |
| 4651 enableGenericMethodComments = true; | |
| 4652 createParser('..a/*<E>*/(b).c'); | |
| 4653 Expression expression = parser.parseCascadeSection(); | |
| 4654 expect(expression, isNotNull); | |
| 4655 assertNoErrors(); | |
| 4656 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4657 PropertyAccess section = expression; | |
| 4658 expect(section.target, isNotNull); | |
| 4659 expect(section.operator, isNotNull); | |
| 4660 expect(section.propertyName, isNotNull); | |
| 4661 } | |
| 4662 | |
| 4663 void test_parseCascadeSection_pap_typeArguments() { | |
| 4664 createParser('..a<E>(b).c'); | |
| 4665 Expression expression = parser.parseCascadeSection(); | |
| 4666 expect(expression, isNotNull); | |
| 4667 assertNoErrors(); | |
| 4668 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 4669 PropertyAccess section = expression; | |
| 4670 expect(section.target, isNotNull); | |
| 4671 expect(section.operator, isNotNull); | |
| 4672 expect(section.propertyName, isNotNull); | |
| 4673 } | |
| 4674 | |
| 4675 void test_parseConditionalExpression() { | |
| 4676 createParser('x ? y : z'); | |
| 4677 ConditionalExpression expression = parser.parseConditionalExpression(); | |
| 4678 expect(expression, isNotNull); | |
| 4679 assertNoErrors(); | |
| 4680 expect(expression.condition, isNotNull); | |
| 4681 expect(expression.question, isNotNull); | |
| 4682 expect(expression.thenExpression, isNotNull); | |
| 4683 expect(expression.colon, isNotNull); | |
| 4684 expect(expression.elseExpression, isNotNull); | |
| 4685 } | |
| 4686 | |
| 4687 void test_parseConstExpression_instanceCreation() { | |
| 4688 createParser('const A()'); | |
| 4689 Expression expression = parser.parseConstExpression(); | |
| 4690 expect(expression, isNotNull); | |
| 4691 assertNoErrors(); | |
| 4692 expect(expression, new isInstanceOf<InstanceCreationExpression>()); | |
| 4693 InstanceCreationExpression instanceCreation = expression; | |
| 4694 expect(instanceCreation.keyword, isNotNull); | |
| 4695 ConstructorName name = instanceCreation.constructorName; | |
| 4696 expect(name, isNotNull); | |
| 4697 expect(name.type, isNotNull); | |
| 4698 expect(name.period, isNull); | |
| 4699 expect(name.name, isNull); | |
| 4700 expect(instanceCreation.argumentList, isNotNull); | |
| 4701 } | |
| 4702 | |
| 4703 void test_parseConstExpression_listLiteral_typed() { | |
| 4704 createParser('const <A> []'); | |
| 4705 Expression expression = parser.parseConstExpression(); | |
| 4706 expect(expression, isNotNull); | |
| 4707 assertNoErrors(); | |
| 4708 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 4709 ListLiteral literal = expression; | |
| 4710 expect(literal.constKeyword, isNotNull); | |
| 4711 expect(literal.typeArguments, isNotNull); | |
| 4712 expect(literal.leftBracket, isNotNull); | |
| 4713 expect(literal.elements, hasLength(0)); | |
| 4714 expect(literal.rightBracket, isNotNull); | |
| 4715 } | |
| 4716 | |
| 4717 void test_parseConstExpression_listLiteral_typed_genericComment() { | |
| 4718 enableGenericMethodComments = true; | |
| 4719 createParser('const /*<A>*/ []'); | |
| 4720 Expression expression = parser.parseConstExpression(); | |
| 4721 expect(expression, isNotNull); | |
| 4722 assertNoErrors(); | |
| 4723 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 4724 ListLiteral literal = expression; | |
| 4725 expect(literal.constKeyword, isNotNull); | |
| 4726 expect(literal.typeArguments, isNotNull); | |
| 4727 expect(literal.leftBracket, isNotNull); | |
| 4728 expect(literal.elements, hasLength(0)); | |
| 4729 expect(literal.rightBracket, isNotNull); | |
| 4730 } | |
| 4731 | |
| 4732 void test_parseConstExpression_listLiteral_untyped() { | |
| 4733 createParser('const []'); | |
| 4734 Expression expression = parser.parseConstExpression(); | |
| 4735 expect(expression, isNotNull); | |
| 4736 assertNoErrors(); | |
| 4737 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 4738 ListLiteral literal = expression; | |
| 4739 expect(literal.constKeyword, isNotNull); | |
| 4740 expect(literal.typeArguments, isNull); | |
| 4741 expect(literal.leftBracket, isNotNull); | |
| 4742 expect(literal.elements, hasLength(0)); | |
| 4743 expect(literal.rightBracket, isNotNull); | |
| 4744 } | |
| 4745 | |
| 4746 void test_parseConstExpression_mapLiteral_typed() { | |
| 4747 createParser('const <A, B> {}'); | |
| 4748 Expression expression = parser.parseConstExpression(); | |
| 4749 expect(expression, isNotNull); | |
| 4750 assertNoErrors(); | |
| 4751 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 4752 MapLiteral literal = expression; | |
| 4753 expect(literal.leftBracket, isNotNull); | |
| 4754 expect(literal.entries, hasLength(0)); | |
| 4755 expect(literal.rightBracket, isNotNull); | |
| 4756 expect(literal.typeArguments, isNotNull); | |
| 4757 } | |
| 4758 | |
| 4759 void test_parseConstExpression_mapLiteral_typed_genericComment() { | |
| 4760 enableGenericMethodComments = true; | |
| 4761 createParser('const /*<A, B>*/ {}'); | |
| 4762 Expression expression = parser.parseConstExpression(); | |
| 4763 expect(expression, isNotNull); | |
| 4764 assertNoErrors(); | |
| 4765 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 4766 MapLiteral literal = expression; | |
| 4767 expect(literal.leftBracket, isNotNull); | |
| 4768 expect(literal.entries, hasLength(0)); | |
| 4769 expect(literal.rightBracket, isNotNull); | |
| 4770 expect(literal.typeArguments, isNotNull); | |
| 4771 } | |
| 4772 | |
| 4773 void test_parseConstExpression_mapLiteral_untyped() { | |
| 4774 createParser('const {}'); | |
| 4775 Expression expression = parser.parseConstExpression(); | |
| 4776 expect(expression, isNotNull); | |
| 4777 assertNoErrors(); | |
| 4778 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 4779 MapLiteral literal = expression; | |
| 4780 expect(literal.leftBracket, isNotNull); | |
| 4781 expect(literal.entries, hasLength(0)); | |
| 4782 expect(literal.rightBracket, isNotNull); | |
| 4783 expect(literal.typeArguments, isNull); | |
| 4784 } | |
| 4785 | |
| 4786 void test_parseEqualityExpression_normal() { | |
| 4787 createParser('x == y'); | |
| 4788 BinaryExpression expression = parser.parseEqualityExpression(); | |
| 4789 expect(expression, isNotNull); | |
| 4790 assertNoErrors(); | |
| 4791 expect(expression.leftOperand, isNotNull); | |
| 4792 expect(expression.operator, isNotNull); | |
| 4793 expect(expression.operator.type, TokenType.EQ_EQ); | |
| 4794 expect(expression.rightOperand, isNotNull); | |
| 4795 } | |
| 4796 | |
| 4797 void test_parseEqualityExpression_super() { | |
| 4798 createParser('super == y'); | |
| 4799 BinaryExpression expression = parser.parseEqualityExpression(); | |
| 4800 expect(expression, isNotNull); | |
| 4801 assertNoErrors(); | |
| 4802 expect(expression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 4803 expect(expression.operator, isNotNull); | |
| 4804 expect(expression.operator.type, TokenType.EQ_EQ); | |
| 4805 expect(expression.rightOperand, isNotNull); | |
| 4806 } | |
| 4807 | |
| 4808 void test_parseExpression_assign() { | |
| 4809 // TODO(brianwilkerson) Implement more tests for this method. | |
| 4810 Expression expression = parseExpression('x = y'); | |
| 4811 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 4812 AssignmentExpression assignmentExpression = expression; | |
| 4813 expect(assignmentExpression.leftHandSide, isNotNull); | |
| 4814 expect(assignmentExpression.operator, isNotNull); | |
| 4815 expect(assignmentExpression.operator.type, TokenType.EQ); | |
| 4816 expect(assignmentExpression.rightHandSide, isNotNull); | |
| 4817 } | |
| 4818 | |
| 4819 void test_parseExpression_assign_compound() { | |
| 4820 enableLazyAssignmentOperators = true; | |
| 4821 Expression expression = parseExpression('x ||= y'); | |
| 4822 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 4823 AssignmentExpression assignmentExpression = expression; | |
| 4824 expect(assignmentExpression.leftHandSide, isNotNull); | |
| 4825 expect(assignmentExpression.operator, isNotNull); | |
| 4826 expect(assignmentExpression.operator.type, TokenType.BAR_BAR_EQ); | |
| 4827 expect(assignmentExpression.rightHandSide, isNotNull); | |
| 4828 } | |
| 4829 | |
| 4830 void test_parseExpression_comparison() { | |
| 4831 Expression expression = parseExpression('--a.b == c'); | |
| 4832 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4833 BinaryExpression binaryExpression = expression; | |
| 4834 expect(binaryExpression.leftOperand, isNotNull); | |
| 4835 expect(binaryExpression.operator, isNotNull); | |
| 4836 expect(binaryExpression.operator.type, TokenType.EQ_EQ); | |
| 4837 expect(binaryExpression.rightOperand, isNotNull); | |
| 4838 } | |
| 4839 | |
| 4840 void test_parseExpression_function_async() { | |
| 4841 Expression expression = parseExpression('() async {}'); | |
| 4842 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 4843 FunctionExpression functionExpression = expression; | |
| 4844 expect(functionExpression.body, isNotNull); | |
| 4845 expect(functionExpression.body.isAsynchronous, isTrue); | |
| 4846 expect(functionExpression.body.isGenerator, isFalse); | |
| 4847 expect(functionExpression.parameters, isNotNull); | |
| 4848 } | |
| 4849 | |
| 4850 void test_parseExpression_function_asyncStar() { | |
| 4851 Expression expression = parseExpression('() async* {}'); | |
| 4852 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 4853 FunctionExpression functionExpression = expression; | |
| 4854 expect(functionExpression.body, isNotNull); | |
| 4855 expect(functionExpression.body.isAsynchronous, isTrue); | |
| 4856 expect(functionExpression.body.isGenerator, isTrue); | |
| 4857 expect(functionExpression.parameters, isNotNull); | |
| 4858 } | |
| 4859 | |
| 4860 void test_parseExpression_function_sync() { | |
| 4861 Expression expression = parseExpression('() {}'); | |
| 4862 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 4863 FunctionExpression functionExpression = expression; | |
| 4864 expect(functionExpression.body, isNotNull); | |
| 4865 expect(functionExpression.body.isAsynchronous, isFalse); | |
| 4866 expect(functionExpression.body.isGenerator, isFalse); | |
| 4867 expect(functionExpression.parameters, isNotNull); | |
| 4868 } | |
| 4869 | |
| 4870 void test_parseExpression_function_syncStar() { | |
| 4871 Expression expression = parseExpression('() sync* {}'); | |
| 4872 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 4873 FunctionExpression functionExpression = expression; | |
| 4874 expect(functionExpression.body, isNotNull); | |
| 4875 expect(functionExpression.body.isAsynchronous, isFalse); | |
| 4876 expect(functionExpression.body.isGenerator, isTrue); | |
| 4877 expect(functionExpression.parameters, isNotNull); | |
| 4878 } | |
| 4879 | |
| 4880 void test_parseExpression_invokeFunctionExpression() { | |
| 4881 Expression expression = parseExpression('(a) {return a + a;} (3)'); | |
| 4882 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 4883 FunctionExpressionInvocation invocation = expression; | |
| 4884 expect(invocation.function, new isInstanceOf<FunctionExpression>()); | |
| 4885 FunctionExpression functionExpression = | |
| 4886 invocation.function as FunctionExpression; | |
| 4887 expect(functionExpression.parameters, isNotNull); | |
| 4888 expect(functionExpression.body, isNotNull); | |
| 4889 expect(invocation.typeArguments, isNull); | |
| 4890 ArgumentList list = invocation.argumentList; | |
| 4891 expect(list, isNotNull); | |
| 4892 expect(list.arguments, hasLength(1)); | |
| 4893 } | |
| 4894 | |
| 4895 void test_parseExpression_nonAwait() { | |
| 4896 Expression expression = parseExpression('await()'); | |
| 4897 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4898 MethodInvocation invocation = expression; | |
| 4899 expect(invocation.methodName.name, 'await'); | |
| 4900 expect(invocation.typeArguments, isNull); | |
| 4901 expect(invocation.argumentList, isNotNull); | |
| 4902 } | |
| 4903 | |
| 4904 void test_parseExpression_superMethodInvocation() { | |
| 4905 Expression expression = parseExpression('super.m()'); | |
| 4906 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4907 MethodInvocation invocation = expression; | |
| 4908 expect(invocation.target, isNotNull); | |
| 4909 expect(invocation.methodName, isNotNull); | |
| 4910 expect(invocation.typeArguments, isNull); | |
| 4911 expect(invocation.argumentList, isNotNull); | |
| 4912 } | |
| 4913 | |
| 4914 void test_parseExpression_superMethodInvocation_typeArgumentComments() { | |
| 4915 enableGenericMethodComments = true; | |
| 4916 Expression expression = parseExpression('super.m/*<E>*/()'); | |
| 4917 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4918 MethodInvocation invocation = expression; | |
| 4919 expect(invocation.target, isNotNull); | |
| 4920 expect(invocation.methodName, isNotNull); | |
| 4921 expect(invocation.typeArguments, isNotNull); | |
| 4922 expect(invocation.argumentList, isNotNull); | |
| 4923 } | |
| 4924 | |
| 4925 void test_parseExpression_superMethodInvocation_typeArguments() { | |
| 4926 Expression expression = parseExpression('super.m<E>()'); | |
| 4927 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4928 MethodInvocation invocation = expression; | |
| 4929 expect(invocation.target, isNotNull); | |
| 4930 expect(invocation.methodName, isNotNull); | |
| 4931 expect(invocation.typeArguments, isNotNull); | |
| 4932 expect(invocation.argumentList, isNotNull); | |
| 4933 } | |
| 4934 | |
| 4935 void test_parseExpressionList_multiple() { | |
| 4936 createParser('1, 2, 3'); | |
| 4937 List<Expression> result = parser.parseExpressionList(); | |
| 4938 expect(result, isNotNull); | |
| 4939 assertNoErrors(); | |
| 4940 expect(result, hasLength(3)); | |
| 4941 } | |
| 4942 | |
| 4943 void test_parseExpressionList_single() { | |
| 4944 createParser('1'); | |
| 4945 List<Expression> result = parser.parseExpressionList(); | |
| 4946 expect(result, isNotNull); | |
| 4947 assertNoErrors(); | |
| 4948 expect(result, hasLength(1)); | |
| 4949 } | |
| 4950 | |
| 4951 void test_parseExpressionWithoutCascade_assign() { | |
| 4952 // TODO(brianwilkerson) Implement more tests for this method. | |
| 4953 createParser('x = y'); | |
| 4954 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 4955 expect(expression, isNotNull); | |
| 4956 assertNoErrors(); | |
| 4957 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 4958 AssignmentExpression assignmentExpression = expression; | |
| 4959 expect(assignmentExpression.leftHandSide, isNotNull); | |
| 4960 expect(assignmentExpression.operator, isNotNull); | |
| 4961 expect(assignmentExpression.operator.type, TokenType.EQ); | |
| 4962 expect(assignmentExpression.rightHandSide, isNotNull); | |
| 4963 } | |
| 4964 | |
| 4965 void test_parseExpressionWithoutCascade_comparison() { | |
| 4966 createParser('--a.b == c'); | |
| 4967 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 4968 expect(expression, isNotNull); | |
| 4969 assertNoErrors(); | |
| 4970 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 4971 BinaryExpression binaryExpression = expression; | |
| 4972 expect(binaryExpression.leftOperand, isNotNull); | |
| 4973 expect(binaryExpression.operator, isNotNull); | |
| 4974 expect(binaryExpression.operator.type, TokenType.EQ_EQ); | |
| 4975 expect(binaryExpression.rightOperand, isNotNull); | |
| 4976 } | |
| 4977 | |
| 4978 void test_parseExpressionWithoutCascade_superMethodInvocation() { | |
| 4979 createParser('super.m()'); | |
| 4980 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 4981 expect(expression, isNotNull); | |
| 4982 assertNoErrors(); | |
| 4983 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4984 MethodInvocation invocation = expression; | |
| 4985 expect(invocation.target, isNotNull); | |
| 4986 expect(invocation.methodName, isNotNull); | |
| 4987 expect(invocation.typeArguments, isNull); | |
| 4988 expect(invocation.argumentList, isNotNull); | |
| 4989 } | |
| 4990 | |
| 4991 void | |
| 4992 test_parseExpressionWithoutCascade_superMethodInvocation_typeArgumentComme nts() { | |
| 4993 enableGenericMethodComments = true; | |
| 4994 createParser('super.m/*<E>*/()'); | |
| 4995 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 4996 expect(expression, isNotNull); | |
| 4997 assertNoErrors(); | |
| 4998 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 4999 MethodInvocation invocation = expression; | |
| 5000 expect(invocation.target, isNotNull); | |
| 5001 expect(invocation.methodName, isNotNull); | |
| 5002 expect(invocation.typeArguments, isNotNull); | |
| 5003 expect(invocation.argumentList, isNotNull); | |
| 5004 } | |
| 5005 | |
| 5006 void | |
| 5007 test_parseExpressionWithoutCascade_superMethodInvocation_typeArguments() { | |
| 5008 createParser('super.m<E>()'); | |
| 5009 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 5010 expect(expression, isNotNull); | |
| 5011 assertNoErrors(); | |
| 5012 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 5013 MethodInvocation invocation = expression; | |
| 5014 expect(invocation.target, isNotNull); | |
| 5015 expect(invocation.methodName, isNotNull); | |
| 5016 expect(invocation.typeArguments, isNotNull); | |
| 5017 expect(invocation.argumentList, isNotNull); | |
| 5018 } | |
| 5019 | |
| 5020 void test_parseFunctionExpression_body_inExpression() { | |
| 5021 createParser('(int i) => i++'); | |
| 5022 FunctionExpression expression = parser.parseFunctionExpression(); | |
| 5023 expect(expression, isNotNull); | |
| 5024 assertNoErrors(); | |
| 5025 expect(expression.body, isNotNull); | |
| 5026 expect(expression.typeParameters, isNull); | |
| 5027 expect(expression.parameters, isNotNull); | |
| 5028 expect((expression.body as ExpressionFunctionBody).semicolon, isNull); | |
| 5029 } | |
| 5030 | |
| 5031 void test_parseFunctionExpression_typeParameterComments() { | |
| 5032 enableGenericMethodComments = true; | |
| 5033 createParser('/*<E>*/(/*=E*/ i) => i++'); | |
| 5034 FunctionExpression expression = parser.parseFunctionExpression(); | |
| 5035 expect(expression, isNotNull); | |
| 5036 assertNoErrors(); | |
| 5037 expect(expression.body, isNotNull); | |
| 5038 expect(expression.typeParameters, isNotNull); | |
| 5039 expect(expression.parameters, isNotNull); | |
| 5040 expect((expression.body as ExpressionFunctionBody).semicolon, isNull); | |
| 5041 SimpleFormalParameter p = expression.parameters.parameters[0]; | |
| 5042 expect(p.type, isNotNull); | |
| 5043 } | |
| 5044 | |
| 5045 void test_parseFunctionExpression_typeParameters() { | |
| 5046 createParser('<E>(E i) => i++'); | |
| 5047 FunctionExpression expression = parser.parseFunctionExpression(); | |
| 5048 expect(expression, isNotNull); | |
| 5049 assertNoErrors(); | |
| 5050 expect(expression.body, isNotNull); | |
| 5051 expect(expression.typeParameters, isNotNull); | |
| 5052 expect(expression.parameters, isNotNull); | |
| 5053 expect((expression.body as ExpressionFunctionBody).semicolon, isNull); | |
| 5054 } | |
| 5055 | |
| 5056 void test_parseInstanceCreationExpression_qualifiedType() { | |
| 5057 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5058 createParser('A.B()'); | |
| 5059 InstanceCreationExpression expression = | |
| 5060 parser.parseInstanceCreationExpression(token); | |
| 5061 expect(expression, isNotNull); | |
| 5062 assertNoErrors(); | |
| 5063 expect(expression.keyword, token); | |
| 5064 ConstructorName name = expression.constructorName; | |
| 5065 expect(name, isNotNull); | |
| 5066 TypeName type = name.type; | |
| 5067 expect(type, isNotNull); | |
| 5068 expect(type.typeArguments, isNull); | |
| 5069 expect(name.period, isNull); | |
| 5070 expect(name.name, isNull); | |
| 5071 expect(expression.argumentList, isNotNull); | |
| 5072 } | |
| 5073 | |
| 5074 void test_parseInstanceCreationExpression_qualifiedType_named() { | |
| 5075 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5076 createParser('A.B.c()'); | |
| 5077 InstanceCreationExpression expression = | |
| 5078 parser.parseInstanceCreationExpression(token); | |
| 5079 expect(expression, isNotNull); | |
| 5080 assertNoErrors(); | |
| 5081 expect(expression.keyword, token); | |
| 5082 ConstructorName name = expression.constructorName; | |
| 5083 expect(name, isNotNull); | |
| 5084 TypeName type = name.type; | |
| 5085 expect(type, isNotNull); | |
| 5086 expect(type.typeArguments, isNull); | |
| 5087 expect(name.period, isNotNull); | |
| 5088 expect(name.name, isNotNull); | |
| 5089 expect(expression.argumentList, isNotNull); | |
| 5090 } | |
| 5091 | |
| 5092 void | |
| 5093 test_parseInstanceCreationExpression_qualifiedType_named_typeParameterComm ent() { | |
| 5094 enableGenericMethodComments = true; | |
| 5095 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5096 createParser('A.B/*<E>*/.c()'); | |
| 5097 InstanceCreationExpression expression = | |
| 5098 parser.parseInstanceCreationExpression(token); | |
| 5099 expect(expression, isNotNull); | |
| 5100 assertNoErrors(); | |
| 5101 expect(expression.keyword, token); | |
| 5102 ConstructorName name = expression.constructorName; | |
| 5103 expect(name, isNotNull); | |
| 5104 TypeName type = name.type; | |
| 5105 expect(type, isNotNull); | |
| 5106 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5107 expect(name.period, isNotNull); | |
| 5108 expect(name.name, isNotNull); | |
| 5109 expect(expression.argumentList, isNotNull); | |
| 5110 } | |
| 5111 | |
| 5112 void | |
| 5113 test_parseInstanceCreationExpression_qualifiedType_named_typeParameters() { | |
| 5114 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5115 createParser('A.B<E>.c()'); | |
| 5116 InstanceCreationExpression expression = | |
| 5117 parser.parseInstanceCreationExpression(token); | |
| 5118 expect(expression, isNotNull); | |
| 5119 assertNoErrors(); | |
| 5120 expect(expression.keyword, token); | |
| 5121 ConstructorName name = expression.constructorName; | |
| 5122 expect(name, isNotNull); | |
| 5123 TypeName type = name.type; | |
| 5124 expect(type, isNotNull); | |
| 5125 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5126 expect(name.period, isNotNull); | |
| 5127 expect(name.name, isNotNull); | |
| 5128 expect(expression.argumentList, isNotNull); | |
| 5129 } | |
| 5130 | |
| 5131 void | |
| 5132 test_parseInstanceCreationExpression_qualifiedType_typeParameterComment() { | |
| 5133 enableGenericMethodComments = true; | |
| 5134 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5135 createParser('A.B/*<E>*/()'); | |
| 5136 InstanceCreationExpression expression = | |
| 5137 parser.parseInstanceCreationExpression(token); | |
| 5138 expect(expression, isNotNull); | |
| 5139 assertNoErrors(); | |
| 5140 expect(expression.keyword, token); | |
| 5141 ConstructorName name = expression.constructorName; | |
| 5142 expect(name, isNotNull); | |
| 5143 TypeName type = name.type; | |
| 5144 expect(type, isNotNull); | |
| 5145 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5146 expect(name.period, isNull); | |
| 5147 expect(name.name, isNull); | |
| 5148 expect(expression.argumentList, isNotNull); | |
| 5149 } | |
| 5150 | |
| 5151 void test_parseInstanceCreationExpression_qualifiedType_typeParameters() { | |
| 5152 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5153 createParser('A.B<E>()'); | |
| 5154 InstanceCreationExpression expression = | |
| 5155 parser.parseInstanceCreationExpression(token); | |
| 5156 expect(expression, isNotNull); | |
| 5157 assertNoErrors(); | |
| 5158 expect(expression.keyword, token); | |
| 5159 ConstructorName name = expression.constructorName; | |
| 5160 expect(name, isNotNull); | |
| 5161 TypeName type = name.type; | |
| 5162 expect(type, isNotNull); | |
| 5163 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5164 expect(name.period, isNull); | |
| 5165 expect(name.name, isNull); | |
| 5166 expect(expression.argumentList, isNotNull); | |
| 5167 } | |
| 5168 | |
| 5169 void test_parseInstanceCreationExpression_type() { | |
| 5170 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5171 createParser('A()'); | |
| 5172 InstanceCreationExpression expression = | |
| 5173 parser.parseInstanceCreationExpression(token); | |
| 5174 expect(expression, isNotNull); | |
| 5175 assertNoErrors(); | |
| 5176 expect(expression.keyword, token); | |
| 5177 ConstructorName name = expression.constructorName; | |
| 5178 expect(name, isNotNull); | |
| 5179 TypeName type = name.type; | |
| 5180 expect(type, isNotNull); | |
| 5181 expect(type.typeArguments, isNull); | |
| 5182 expect(name.period, isNull); | |
| 5183 expect(name.name, isNull); | |
| 5184 expect(expression.argumentList, isNotNull); | |
| 5185 } | |
| 5186 | |
| 5187 void test_parseInstanceCreationExpression_type_named() { | |
| 5188 enableGenericMethodComments = true; | |
| 5189 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5190 createParser('A.c()'); | |
| 5191 InstanceCreationExpression expression = | |
| 5192 parser.parseInstanceCreationExpression(token); | |
| 5193 expect(expression, isNotNull); | |
| 5194 assertNoErrors(); | |
| 5195 expect(expression.keyword, token); | |
| 5196 ConstructorName name = expression.constructorName; | |
| 5197 expect(name, isNotNull); | |
| 5198 TypeName type = name.type; | |
| 5199 expect(type, isNotNull); | |
| 5200 expect(type.typeArguments, isNull); | |
| 5201 expect(name.period, isNull); | |
| 5202 expect(name.name, isNull); | |
| 5203 expect(expression.argumentList, isNotNull); | |
| 5204 } | |
| 5205 | |
| 5206 void test_parseInstanceCreationExpression_type_named_typeParameterComment() { | |
| 5207 enableGenericMethodComments = true; | |
| 5208 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5209 createParser('A/*<B>*/.c()'); | |
| 5210 InstanceCreationExpression expression = | |
| 5211 parser.parseInstanceCreationExpression(token); | |
| 5212 expect(expression, isNotNull); | |
| 5213 assertNoErrors(); | |
| 5214 expect(expression.keyword, token); | |
| 5215 ConstructorName name = expression.constructorName; | |
| 5216 expect(name, isNotNull); | |
| 5217 TypeName type = name.type; | |
| 5218 expect(type, isNotNull); | |
| 5219 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5220 expect(name.period, isNotNull); | |
| 5221 expect(name.name, isNotNull); | |
| 5222 expect(expression.argumentList, isNotNull); | |
| 5223 } | |
| 5224 | |
| 5225 void test_parseInstanceCreationExpression_type_named_typeParameters() { | |
| 5226 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5227 createParser('A<B>.c()'); | |
| 5228 InstanceCreationExpression expression = | |
| 5229 parser.parseInstanceCreationExpression(token); | |
| 5230 expect(expression, isNotNull); | |
| 5231 assertNoErrors(); | |
| 5232 expect(expression.keyword, token); | |
| 5233 ConstructorName name = expression.constructorName; | |
| 5234 expect(name, isNotNull); | |
| 5235 TypeName type = name.type; | |
| 5236 expect(type, isNotNull); | |
| 5237 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5238 expect(name.period, isNotNull); | |
| 5239 expect(name.name, isNotNull); | |
| 5240 expect(expression.argumentList, isNotNull); | |
| 5241 } | |
| 5242 | |
| 5243 void test_parseInstanceCreationExpression_type_typeParameterComment() { | |
| 5244 enableGenericMethodComments = true; | |
| 5245 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5246 createParser('A/*<B>*/()'); | |
| 5247 InstanceCreationExpression expression = | |
| 5248 parser.parseInstanceCreationExpression(token); | |
| 5249 expect(expression, isNotNull); | |
| 5250 assertNoErrors(); | |
| 5251 expect(expression.keyword, token); | |
| 5252 ConstructorName name = expression.constructorName; | |
| 5253 expect(name, isNotNull); | |
| 5254 TypeName type = name.type; | |
| 5255 expect(type, isNotNull); | |
| 5256 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5257 expect(name.period, isNull); | |
| 5258 expect(name.name, isNull); | |
| 5259 expect(expression.argumentList, isNotNull); | |
| 5260 } | |
| 5261 | |
| 5262 void test_parseInstanceCreationExpression_type_typeParameters() { | |
| 5263 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5264 createParser('A<B>()'); | |
| 5265 InstanceCreationExpression expression = | |
| 5266 parser.parseInstanceCreationExpression(token); | |
| 5267 expect(expression, isNotNull); | |
| 5268 assertNoErrors(); | |
| 5269 expect(expression.keyword, token); | |
| 5270 ConstructorName name = expression.constructorName; | |
| 5271 expect(name, isNotNull); | |
| 5272 TypeName type = name.type; | |
| 5273 expect(type, isNotNull); | |
| 5274 expect(type.typeArguments.arguments, hasLength(1)); | |
| 5275 expect(name.period, isNull); | |
| 5276 expect(name.name, isNull); | |
| 5277 expect(expression.argumentList, isNotNull); | |
| 5278 } | |
| 5279 | |
| 5280 void test_parseInstanceCreationExpression_type_typeParameters_nullable() { | |
| 5281 enableNnbd = true; | |
| 5282 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 5283 createParser('A<B?>()'); | |
| 5284 InstanceCreationExpression expression = | |
| 5285 parser.parseInstanceCreationExpression(token); | |
| 5286 expect(expression, isNotNull); | |
| 5287 assertNoErrors(); | |
| 5288 expect(expression.keyword, token); | |
| 5289 ConstructorName name = expression.constructorName; | |
| 5290 expect(name, isNotNull); | |
| 5291 TypeName type = name.type; | |
| 5292 expect(type, isNotNull); | |
| 5293 expect(name.period, isNull); | |
| 5294 expect(name.name, isNull); | |
| 5295 expect(expression.argumentList, isNotNull); | |
| 5296 NodeList<TypeAnnotation> arguments = type.typeArguments.arguments; | |
| 5297 expect(arguments, hasLength(1)); | |
| 5298 expect((arguments[0] as TypeName).question, isNotNull); | |
| 5299 } | |
| 5300 | |
| 5301 void test_parseListLiteral_empty_oneToken() { | |
| 5302 Token token = TokenFactory.tokenFromKeyword(Keyword.CONST); | |
| 5303 TypeArgumentList typeArguments = null; | |
| 5304 createParser('[]'); | |
| 5305 ListLiteral literal = parser.parseListLiteral(token, typeArguments); | |
| 5306 expect(literal, isNotNull); | |
| 5307 assertNoErrors(); | |
| 5308 expect(literal.constKeyword, token); | |
| 5309 expect(literal.typeArguments, typeArguments); | |
| 5310 expect(literal.leftBracket, isNotNull); | |
| 5311 expect(literal.elements, hasLength(0)); | |
| 5312 expect(literal.rightBracket, isNotNull); | |
| 5313 } | |
| 5314 | |
| 5315 void test_parseListLiteral_empty_oneToken_withComment() { | |
| 5316 Token token = null; | |
| 5317 TypeArgumentList typeArguments = null; | |
| 5318 createParser('/* 0 */ []'); | |
| 5319 ListLiteral literal = parser.parseListLiteral(token, typeArguments); | |
| 5320 expect(literal, isNotNull); | |
| 5321 assertNoErrors(); | |
| 5322 expect(literal.constKeyword, token); | |
| 5323 expect(literal.typeArguments, typeArguments); | |
| 5324 Token leftBracket = literal.leftBracket; | |
| 5325 expect(leftBracket, isNotNull); | |
| 5326 expect(leftBracket.precedingComments, isNotNull); | |
| 5327 expect(literal.elements, hasLength(0)); | |
| 5328 expect(literal.rightBracket, isNotNull); | |
| 5329 } | |
| 5330 | |
| 5331 void test_parseListLiteral_empty_twoTokens() { | |
| 5332 Token token = TokenFactory.tokenFromKeyword(Keyword.CONST); | |
| 5333 TypeArgumentList typeArguments = null; | |
| 5334 createParser('[ ]'); | |
| 5335 ListLiteral literal = parser.parseListLiteral(token, typeArguments); | |
| 5336 expect(literal, isNotNull); | |
| 5337 assertNoErrors(); | |
| 5338 expect(literal.constKeyword, token); | |
| 5339 expect(literal.typeArguments, typeArguments); | |
| 5340 expect(literal.leftBracket, isNotNull); | |
| 5341 expect(literal.elements, hasLength(0)); | |
| 5342 expect(literal.rightBracket, isNotNull); | |
| 5343 } | |
| 5344 | |
| 5345 void test_parseListLiteral_multiple() { | |
| 5346 createParser('[1, 2, 3]'); | |
| 5347 ListLiteral literal = parser.parseListLiteral(null, null); | |
| 5348 expect(literal, isNotNull); | |
| 5349 assertNoErrors(); | |
| 5350 expect(literal.constKeyword, isNull); | |
| 5351 expect(literal.typeArguments, isNull); | |
| 5352 expect(literal.leftBracket, isNotNull); | |
| 5353 expect(literal.elements, hasLength(3)); | |
| 5354 expect(literal.rightBracket, isNotNull); | |
| 5355 } | |
| 5356 | |
| 5357 void test_parseListLiteral_single() { | |
| 5358 createParser('[1]'); | |
| 5359 ListLiteral literal = parser.parseListLiteral(null, null); | |
| 5360 expect(literal, isNotNull); | |
| 5361 assertNoErrors(); | |
| 5362 expect(literal.constKeyword, isNull); | |
| 5363 expect(literal.typeArguments, isNull); | |
| 5364 expect(literal.leftBracket, isNotNull); | |
| 5365 expect(literal.elements, hasLength(1)); | |
| 5366 expect(literal.rightBracket, isNotNull); | |
| 5367 } | |
| 5368 | |
| 5369 void test_parseListOrMapLiteral_list_noType() { | |
| 5370 createParser('[1]'); | |
| 5371 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 5372 expect(literal, isNotNull); | |
| 5373 assertNoErrors(); | |
| 5374 expect(literal, new isInstanceOf<ListLiteral>()); | |
| 5375 ListLiteral listLiteral = literal; | |
| 5376 expect(listLiteral.constKeyword, isNull); | |
| 5377 expect(listLiteral.typeArguments, isNull); | |
| 5378 expect(listLiteral.leftBracket, isNotNull); | |
| 5379 expect(listLiteral.elements, hasLength(1)); | |
| 5380 expect(listLiteral.rightBracket, isNotNull); | |
| 5381 } | |
| 5382 | |
| 5383 void test_parseListOrMapLiteral_list_type() { | |
| 5384 createParser('<int> [1]'); | |
| 5385 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 5386 expect(literal, isNotNull); | |
| 5387 assertNoErrors(); | |
| 5388 expect(literal, new isInstanceOf<ListLiteral>()); | |
| 5389 ListLiteral listLiteral = literal; | |
| 5390 expect(listLiteral.constKeyword, isNull); | |
| 5391 expect(listLiteral.typeArguments, isNotNull); | |
| 5392 expect(listLiteral.leftBracket, isNotNull); | |
| 5393 expect(listLiteral.elements, hasLength(1)); | |
| 5394 expect(listLiteral.rightBracket, isNotNull); | |
| 5395 } | |
| 5396 | |
| 5397 void test_parseListOrMapLiteral_map_noType() { | |
| 5398 createParser("{'1' : 1}"); | |
| 5399 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 5400 expect(literal, isNotNull); | |
| 5401 assertNoErrors(); | |
| 5402 expect(literal, new isInstanceOf<MapLiteral>()); | |
| 5403 MapLiteral mapLiteral = literal; | |
| 5404 expect(mapLiteral.constKeyword, isNull); | |
| 5405 expect(mapLiteral.typeArguments, isNull); | |
| 5406 expect(mapLiteral.leftBracket, isNotNull); | |
| 5407 expect(mapLiteral.entries, hasLength(1)); | |
| 5408 expect(mapLiteral.rightBracket, isNotNull); | |
| 5409 } | |
| 5410 | |
| 5411 void test_parseListOrMapLiteral_map_type() { | |
| 5412 createParser("<String, int> {'1' : 1}"); | |
| 5413 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 5414 expect(literal, isNotNull); | |
| 5415 assertNoErrors(); | |
| 5416 expect(literal, new isInstanceOf<MapLiteral>()); | |
| 5417 MapLiteral mapLiteral = literal; | |
| 5418 expect(mapLiteral.constKeyword, isNull); | |
| 5419 expect(mapLiteral.typeArguments, isNotNull); | |
| 5420 expect(mapLiteral.leftBracket, isNotNull); | |
| 5421 expect(mapLiteral.entries, hasLength(1)); | |
| 5422 expect(mapLiteral.rightBracket, isNotNull); | |
| 5423 } | |
| 5424 | |
| 5425 void test_parseLogicalAndExpression() { | |
| 5426 createParser('x && y'); | |
| 5427 Expression expression = parser.parseLogicalAndExpression(); | |
| 5428 expect(expression, isNotNull); | |
| 5429 assertNoErrors(); | |
| 5430 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 5431 BinaryExpression binaryExpression = expression; | |
| 5432 expect(binaryExpression.leftOperand, isNotNull); | |
| 5433 expect(binaryExpression.operator, isNotNull); | |
| 5434 expect(binaryExpression.operator.type, TokenType.AMPERSAND_AMPERSAND); | |
| 5435 expect(binaryExpression.rightOperand, isNotNull); | |
| 5436 } | |
| 5437 | |
| 5438 void test_parseLogicalOrExpression() { | |
| 5439 createParser('x || y'); | |
| 5440 Expression expression = parser.parseLogicalOrExpression(); | |
| 5441 expect(expression, isNotNull); | |
| 5442 assertNoErrors(); | |
| 5443 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 5444 BinaryExpression binaryExpression = expression; | |
| 5445 expect(binaryExpression.leftOperand, isNotNull); | |
| 5446 expect(binaryExpression.operator, isNotNull); | |
| 5447 expect(binaryExpression.operator.type, TokenType.BAR_BAR); | |
| 5448 expect(binaryExpression.rightOperand, isNotNull); | |
| 5449 } | |
| 5450 | |
| 5451 void test_parseMapLiteral_empty() { | |
| 5452 Token token = TokenFactory.tokenFromKeyword(Keyword.CONST); | |
| 5453 TypeArgumentList typeArguments = AstTestFactory.typeArgumentList( | |
| 5454 [AstTestFactory.typeName4("String"), AstTestFactory.typeName4("int")]); | |
| 5455 createParser('{}'); | |
| 5456 MapLiteral literal = parser.parseMapLiteral(token, typeArguments); | |
| 5457 expect(literal, isNotNull); | |
| 5458 assertNoErrors(); | |
| 5459 expect(literal.constKeyword, token); | |
| 5460 expect(literal.typeArguments, typeArguments); | |
| 5461 expect(literal.leftBracket, isNotNull); | |
| 5462 expect(literal.entries, hasLength(0)); | |
| 5463 expect(literal.rightBracket, isNotNull); | |
| 5464 } | |
| 5465 | |
| 5466 void test_parseMapLiteral_multiple() { | |
| 5467 createParser("{'a' : b, 'x' : y}"); | |
| 5468 MapLiteral literal = parser.parseMapLiteral(null, null); | |
| 5469 expect(literal, isNotNull); | |
| 5470 assertNoErrors(); | |
| 5471 expect(literal.leftBracket, isNotNull); | |
| 5472 expect(literal.entries, hasLength(2)); | |
| 5473 expect(literal.rightBracket, isNotNull); | |
| 5474 } | |
| 5475 | |
| 5476 void test_parseMapLiteral_single() { | |
| 5477 createParser("{'x' : y}"); | |
| 5478 MapLiteral literal = parser.parseMapLiteral(null, null); | |
| 5479 expect(literal, isNotNull); | |
| 5480 assertNoErrors(); | |
| 5481 expect(literal.leftBracket, isNotNull); | |
| 5482 expect(literal.entries, hasLength(1)); | |
| 5483 expect(literal.rightBracket, isNotNull); | |
| 5484 } | |
| 5485 | |
| 5486 void test_parseMapLiteralEntry_complex() { | |
| 5487 createParser('2 + 2 : y'); | |
| 5488 MapLiteralEntry entry = parser.parseMapLiteralEntry(); | |
| 5489 expect(entry, isNotNull); | |
| 5490 assertNoErrors(); | |
| 5491 expect(entry.key, isNotNull); | |
| 5492 expect(entry.separator, isNotNull); | |
| 5493 expect(entry.value, isNotNull); | |
| 5494 } | |
| 5495 | |
| 5496 void test_parseMapLiteralEntry_int() { | |
| 5497 createParser('0 : y'); | |
| 5498 MapLiteralEntry entry = parser.parseMapLiteralEntry(); | |
| 5499 expect(entry, isNotNull); | |
| 5500 assertNoErrors(); | |
| 5501 expect(entry.key, isNotNull); | |
| 5502 expect(entry.separator, isNotNull); | |
| 5503 expect(entry.value, isNotNull); | |
| 5504 } | |
| 5505 | |
| 5506 void test_parseMapLiteralEntry_string() { | |
| 5507 createParser("'x' : y"); | |
| 5508 MapLiteralEntry entry = parser.parseMapLiteralEntry(); | |
| 5509 expect(entry, isNotNull); | |
| 5510 assertNoErrors(); | |
| 5511 expect(entry.key, isNotNull); | |
| 5512 expect(entry.separator, isNotNull); | |
| 5513 expect(entry.value, isNotNull); | |
| 5514 } | |
| 5515 | |
| 5516 void test_parseMultiplicativeExpression_normal() { | |
| 5517 createParser('x * y'); | |
| 5518 Expression expression = parser.parseMultiplicativeExpression(); | |
| 5519 expect(expression, isNotNull); | |
| 5520 assertNoErrors(); | |
| 5521 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 5522 BinaryExpression binaryExpression = expression; | |
| 5523 expect(binaryExpression.leftOperand, isNotNull); | |
| 5524 expect(binaryExpression.operator, isNotNull); | |
| 5525 expect(binaryExpression.operator.type, TokenType.STAR); | |
| 5526 expect(binaryExpression.rightOperand, isNotNull); | |
| 5527 } | |
| 5528 | |
| 5529 void test_parseMultiplicativeExpression_super() { | |
| 5530 createParser('super * y'); | |
| 5531 Expression expression = parser.parseMultiplicativeExpression(); | |
| 5532 expect(expression, isNotNull); | |
| 5533 assertNoErrors(); | |
| 5534 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 5535 BinaryExpression binaryExpression = expression; | |
| 5536 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 5537 expect(binaryExpression.operator, isNotNull); | |
| 5538 expect(binaryExpression.operator.type, TokenType.STAR); | |
| 5539 expect(binaryExpression.rightOperand, isNotNull); | |
| 5540 } | |
| 5541 | |
| 5542 void test_parseNewExpression() { | |
| 5543 createParser('new A()'); | |
| 5544 InstanceCreationExpression expression = parser.parseNewExpression(); | |
| 5545 expect(expression, isNotNull); | |
| 5546 assertNoErrors(); | |
| 5547 expect(expression.keyword, isNotNull); | |
| 5548 ConstructorName name = expression.constructorName; | |
| 5549 expect(name, isNotNull); | |
| 5550 expect(name.type, isNotNull); | |
| 5551 expect(name.period, isNull); | |
| 5552 expect(name.name, isNull); | |
| 5553 expect(expression.argumentList, isNotNull); | |
| 5554 } | |
| 5555 | |
| 5556 void test_parsePostfixExpression_decrement() { | |
| 5557 createParser('i--'); | |
| 5558 Expression expression = parser.parsePostfixExpression(); | |
| 5559 expect(expression, isNotNull); | |
| 5560 assertNoErrors(); | |
| 5561 expect(expression, new isInstanceOf<PostfixExpression>()); | |
| 5562 PostfixExpression postfixExpression = expression; | |
| 5563 expect(postfixExpression.operand, isNotNull); | |
| 5564 expect(postfixExpression.operator, isNotNull); | |
| 5565 expect(postfixExpression.operator.type, TokenType.MINUS_MINUS); | |
| 5566 } | |
| 5567 | |
| 5568 void test_parsePostfixExpression_increment() { | |
| 5569 createParser('i++'); | |
| 5570 Expression expression = parser.parsePostfixExpression(); | |
| 5571 expect(expression, isNotNull); | |
| 5572 assertNoErrors(); | |
| 5573 expect(expression, new isInstanceOf<PostfixExpression>()); | |
| 5574 PostfixExpression postfixExpression = expression; | |
| 5575 expect(postfixExpression.operand, isNotNull); | |
| 5576 expect(postfixExpression.operator, isNotNull); | |
| 5577 expect(postfixExpression.operator.type, TokenType.PLUS_PLUS); | |
| 5578 } | |
| 5579 | |
| 5580 void test_parsePostfixExpression_none_indexExpression() { | |
| 5581 createParser('a[0]'); | |
| 5582 Expression expression = parser.parsePostfixExpression(); | |
| 5583 expect(expression, isNotNull); | |
| 5584 assertNoErrors(); | |
| 5585 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 5586 IndexExpression indexExpression = expression; | |
| 5587 expect(indexExpression.target, isNotNull); | |
| 5588 expect(indexExpression.index, isNotNull); | |
| 5589 } | |
| 5590 | |
| 5591 void test_parsePostfixExpression_none_methodInvocation() { | |
| 5592 createParser('a.m()'); | |
| 5593 Expression expression = parser.parsePostfixExpression(); | |
| 5594 expect(expression, isNotNull); | |
| 5595 assertNoErrors(); | |
| 5596 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 5597 MethodInvocation methodInvocation = expression; | |
| 5598 expect(methodInvocation.target, isNotNull); | |
| 5599 expect(methodInvocation.operator.type, TokenType.PERIOD); | |
| 5600 expect(methodInvocation.methodName, isNotNull); | |
| 5601 expect(methodInvocation.typeArguments, isNull); | |
| 5602 expect(methodInvocation.argumentList, isNotNull); | |
| 5603 } | |
| 5604 | |
| 5605 void test_parsePostfixExpression_none_methodInvocation_question_dot() { | |
| 5606 createParser('a?.m()'); | |
| 5607 Expression expression = parser.parsePostfixExpression(); | |
| 5608 expect(expression, isNotNull); | |
| 5609 assertNoErrors(); | |
| 5610 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 5611 MethodInvocation methodInvocation = expression; | |
| 5612 expect(methodInvocation.target, isNotNull); | |
| 5613 expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD); | |
| 5614 expect(methodInvocation.methodName, isNotNull); | |
| 5615 expect(methodInvocation.typeArguments, isNull); | |
| 5616 expect(methodInvocation.argumentList, isNotNull); | |
| 5617 } | |
| 5618 | |
| 5619 void | |
| 5620 test_parsePostfixExpression_none_methodInvocation_question_dot_typeArgumen tComments() { | |
| 5621 enableGenericMethodComments = true; | |
| 5622 createParser('a?.m/*<E>*/()'); | |
| 5623 Expression expression = parser.parsePostfixExpression(); | |
| 5624 expect(expression, isNotNull); | |
| 5625 assertNoErrors(); | |
| 5626 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 5627 MethodInvocation methodInvocation = expression; | |
| 5628 expect(methodInvocation.target, isNotNull); | |
| 5629 expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD); | |
| 5630 expect(methodInvocation.methodName, isNotNull); | |
| 5631 expect(methodInvocation.typeArguments, isNotNull); | |
| 5632 expect(methodInvocation.argumentList, isNotNull); | |
| 5633 } | |
| 5634 | |
| 5635 void | |
| 5636 test_parsePostfixExpression_none_methodInvocation_question_dot_typeArgumen ts() { | |
| 5637 createParser('a?.m<E>()'); | |
| 5638 Expression expression = parser.parsePostfixExpression(); | |
| 5639 expect(expression, isNotNull); | |
| 5640 assertNoErrors(); | |
| 5641 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 5642 MethodInvocation methodInvocation = expression; | |
| 5643 expect(methodInvocation.target, isNotNull); | |
| 5644 expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD); | |
| 5645 expect(methodInvocation.methodName, isNotNull); | |
| 5646 expect(methodInvocation.typeArguments, isNotNull); | |
| 5647 expect(methodInvocation.argumentList, isNotNull); | |
| 5648 } | |
| 5649 | |
| 5650 void | |
| 5651 test_parsePostfixExpression_none_methodInvocation_typeArgumentComments() { | |
| 5652 enableGenericMethodComments = true; | |
| 5653 createParser('a.m/*<E>*/()'); | |
| 5654 Expression expression = parser.parsePostfixExpression(); | |
| 5655 expect(expression, isNotNull); | |
| 5656 assertNoErrors(); | |
| 5657 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 5658 MethodInvocation methodInvocation = expression; | |
| 5659 expect(methodInvocation.target, isNotNull); | |
| 5660 expect(methodInvocation.operator.type, TokenType.PERIOD); | |
| 5661 expect(methodInvocation.methodName, isNotNull); | |
| 5662 expect(methodInvocation.typeArguments, isNotNull); | |
| 5663 expect(methodInvocation.argumentList, isNotNull); | |
| 5664 } | |
| 5665 | |
| 5666 void test_parsePostfixExpression_none_methodInvocation_typeArguments() { | |
| 5667 createParser('a.m<E>()'); | |
| 5668 Expression expression = parser.parsePostfixExpression(); | |
| 5669 expect(expression, isNotNull); | |
| 5670 assertNoErrors(); | |
| 5671 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 5672 MethodInvocation methodInvocation = expression; | |
| 5673 expect(methodInvocation.target, isNotNull); | |
| 5674 expect(methodInvocation.operator.type, TokenType.PERIOD); | |
| 5675 expect(methodInvocation.methodName, isNotNull); | |
| 5676 expect(methodInvocation.typeArguments, isNotNull); | |
| 5677 expect(methodInvocation.argumentList, isNotNull); | |
| 5678 } | |
| 5679 | |
| 5680 void test_parsePostfixExpression_none_propertyAccess() { | |
| 5681 createParser('a.b'); | |
| 5682 Expression expression = parser.parsePostfixExpression(); | |
| 5683 expect(expression, isNotNull); | |
| 5684 assertNoErrors(); | |
| 5685 expect(expression, new isInstanceOf<PrefixedIdentifier>()); | |
| 5686 PrefixedIdentifier identifier = expression; | |
| 5687 expect(identifier.prefix, isNotNull); | |
| 5688 expect(identifier.identifier, isNotNull); | |
| 5689 } | |
| 5690 | |
| 5691 void test_parsePrefixedIdentifier_noPrefix() { | |
| 5692 String lexeme = "bar"; | |
| 5693 createParser(lexeme); | |
| 5694 Identifier identifier = parser.parsePrefixedIdentifier(); | |
| 5695 expect(identifier, isNotNull); | |
| 5696 assertNoErrors(); | |
| 5697 expect(identifier, new isInstanceOf<SimpleIdentifier>()); | |
| 5698 SimpleIdentifier simpleIdentifier = identifier; | |
| 5699 expect(simpleIdentifier.token, isNotNull); | |
| 5700 expect(simpleIdentifier.name, lexeme); | |
| 5701 } | |
| 5702 | |
| 5703 void test_parsePrefixedIdentifier_prefix() { | |
| 5704 String lexeme = "foo.bar"; | |
| 5705 createParser(lexeme); | |
| 5706 Identifier identifier = parser.parsePrefixedIdentifier(); | |
| 5707 expect(identifier, isNotNull); | |
| 5708 assertNoErrors(); | |
| 5709 expect(identifier, new isInstanceOf<PrefixedIdentifier>()); | |
| 5710 PrefixedIdentifier prefixedIdentifier = identifier; | |
| 5711 expect(prefixedIdentifier.prefix.name, "foo"); | |
| 5712 expect(prefixedIdentifier.period, isNotNull); | |
| 5713 expect(prefixedIdentifier.identifier.name, "bar"); | |
| 5714 } | |
| 5715 | |
| 5716 void test_parsePrimaryExpression_const() { | |
| 5717 createParser('const A()'); | |
| 5718 Expression expression = parser.parsePrimaryExpression(); | |
| 5719 expect(expression, isNotNull); | |
| 5720 assertNoErrors(); | |
| 5721 expect(expression, isNotNull); | |
| 5722 } | |
| 5723 | |
| 5724 void test_parsePrimaryExpression_double() { | |
| 5725 String doubleLiteral = "3.2e4"; | |
| 5726 createParser(doubleLiteral); | |
| 5727 Expression expression = parser.parsePrimaryExpression(); | |
| 5728 expect(expression, isNotNull); | |
| 5729 assertNoErrors(); | |
| 5730 expect(expression, new isInstanceOf<DoubleLiteral>()); | |
| 5731 DoubleLiteral literal = expression; | |
| 5732 expect(literal.literal, isNotNull); | |
| 5733 expect(literal.value, double.parse(doubleLiteral)); | |
| 5734 } | |
| 5735 | |
| 5736 void test_parsePrimaryExpression_false() { | |
| 5737 createParser('false'); | |
| 5738 Expression expression = parser.parsePrimaryExpression(); | |
| 5739 expect(expression, isNotNull); | |
| 5740 assertNoErrors(); | |
| 5741 expect(expression, new isInstanceOf<BooleanLiteral>()); | |
| 5742 BooleanLiteral literal = expression; | |
| 5743 expect(literal.literal, isNotNull); | |
| 5744 expect(literal.value, isFalse); | |
| 5745 } | |
| 5746 | |
| 5747 void test_parsePrimaryExpression_function_arguments() { | |
| 5748 createParser('(int i) => i + 1'); | |
| 5749 Expression expression = parser.parsePrimaryExpression(); | |
| 5750 expect(expression, isNotNull); | |
| 5751 assertNoErrors(); | |
| 5752 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 5753 FunctionExpression functionExpression = expression; | |
| 5754 expect(functionExpression.parameters, isNotNull); | |
| 5755 expect(functionExpression.body, isNotNull); | |
| 5756 } | |
| 5757 | |
| 5758 void test_parsePrimaryExpression_function_noArguments() { | |
| 5759 createParser('() => 42'); | |
| 5760 Expression expression = parser.parsePrimaryExpression(); | |
| 5761 expect(expression, isNotNull); | |
| 5762 assertNoErrors(); | |
| 5763 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 5764 FunctionExpression functionExpression = expression; | |
| 5765 expect(functionExpression.parameters, isNotNull); | |
| 5766 expect(functionExpression.body, isNotNull); | |
| 5767 } | |
| 5768 | |
| 5769 void test_parsePrimaryExpression_genericFunctionExpression() { | |
| 5770 createParser('<X, Y>(Map<X, Y> m, X x) => m[x]'); | |
| 5771 Expression expression = parser.parsePrimaryExpression(); | |
| 5772 expect(expression, isNotNull); | |
| 5773 assertNoErrors(); | |
| 5774 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 5775 FunctionExpression function = expression; | |
| 5776 expect(function.typeParameters, isNotNull); | |
| 5777 } | |
| 5778 | |
| 5779 void test_parsePrimaryExpression_hex() { | |
| 5780 String hexLiteral = "3F"; | |
| 5781 createParser('0x$hexLiteral'); | |
| 5782 Expression expression = parser.parsePrimaryExpression(); | |
| 5783 expect(expression, isNotNull); | |
| 5784 assertNoErrors(); | |
| 5785 expect(expression, new isInstanceOf<IntegerLiteral>()); | |
| 5786 IntegerLiteral literal = expression; | |
| 5787 expect(literal.literal, isNotNull); | |
| 5788 expect(literal.value, int.parse(hexLiteral, radix: 16)); | |
| 5789 } | |
| 5790 | |
| 5791 void test_parsePrimaryExpression_identifier() { | |
| 5792 createParser('a'); | |
| 5793 Expression expression = parser.parsePrimaryExpression(); | |
| 5794 expect(expression, isNotNull); | |
| 5795 assertNoErrors(); | |
| 5796 expect(expression, new isInstanceOf<SimpleIdentifier>()); | |
| 5797 SimpleIdentifier identifier = expression; | |
| 5798 expect(identifier, isNotNull); | |
| 5799 } | |
| 5800 | |
| 5801 void test_parsePrimaryExpression_int() { | |
| 5802 String intLiteral = "472"; | |
| 5803 createParser(intLiteral); | |
| 5804 Expression expression = parser.parsePrimaryExpression(); | |
| 5805 expect(expression, isNotNull); | |
| 5806 assertNoErrors(); | |
| 5807 expect(expression, new isInstanceOf<IntegerLiteral>()); | |
| 5808 IntegerLiteral literal = expression; | |
| 5809 expect(literal.literal, isNotNull); | |
| 5810 expect(literal.value, int.parse(intLiteral)); | |
| 5811 } | |
| 5812 | |
| 5813 void test_parsePrimaryExpression_listLiteral() { | |
| 5814 createParser('[ ]'); | |
| 5815 Expression expression = parser.parsePrimaryExpression(); | |
| 5816 expect(expression, isNotNull); | |
| 5817 assertNoErrors(); | |
| 5818 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 5819 ListLiteral literal = expression; | |
| 5820 expect(literal, isNotNull); | |
| 5821 } | |
| 5822 | |
| 5823 void test_parsePrimaryExpression_listLiteral_index() { | |
| 5824 createParser('[]'); | |
| 5825 Expression expression = parser.parsePrimaryExpression(); | |
| 5826 expect(expression, isNotNull); | |
| 5827 assertNoErrors(); | |
| 5828 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 5829 ListLiteral literal = expression; | |
| 5830 expect(literal, isNotNull); | |
| 5831 } | |
| 5832 | |
| 5833 void test_parsePrimaryExpression_listLiteral_typed() { | |
| 5834 createParser('<A>[ ]'); | |
| 5835 Expression expression = parser.parsePrimaryExpression(); | |
| 5836 expect(expression, isNotNull); | |
| 5837 assertNoErrors(); | |
| 5838 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 5839 ListLiteral literal = expression; | |
| 5840 expect(literal.typeArguments, isNotNull); | |
| 5841 expect(literal.typeArguments.arguments, hasLength(1)); | |
| 5842 } | |
| 5843 | |
| 5844 void test_parsePrimaryExpression_listLiteral_typed_genericComment() { | |
| 5845 enableGenericMethodComments = true; | |
| 5846 createParser('/*<A>*/[ ]'); | |
| 5847 Expression expression = parser.parsePrimaryExpression(); | |
| 5848 expect(expression, isNotNull); | |
| 5849 assertNoErrors(); | |
| 5850 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 5851 ListLiteral literal = expression; | |
| 5852 expect(literal.typeArguments, isNotNull); | |
| 5853 expect(literal.typeArguments.arguments, hasLength(1)); | |
| 5854 } | |
| 5855 | |
| 5856 void test_parsePrimaryExpression_mapLiteral() { | |
| 5857 createParser('{}'); | |
| 5858 Expression expression = parser.parsePrimaryExpression(); | |
| 5859 expect(expression, isNotNull); | |
| 5860 assertNoErrors(); | |
| 5861 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 5862 MapLiteral literal = expression; | |
| 5863 expect(literal.typeArguments, isNull); | |
| 5864 expect(literal, isNotNull); | |
| 5865 } | |
| 5866 | |
| 5867 void test_parsePrimaryExpression_mapLiteral_typed() { | |
| 5868 createParser('<A, B>{}'); | |
| 5869 Expression expression = parser.parsePrimaryExpression(); | |
| 5870 expect(expression, isNotNull); | |
| 5871 assertNoErrors(); | |
| 5872 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 5873 MapLiteral literal = expression; | |
| 5874 expect(literal.typeArguments, isNotNull); | |
| 5875 expect(literal.typeArguments.arguments, hasLength(2)); | |
| 5876 } | |
| 5877 | |
| 5878 void test_parsePrimaryExpression_mapLiteral_typed_genericComment() { | |
| 5879 enableGenericMethodComments = true; | |
| 5880 createParser('/*<A, B>*/{}'); | |
| 5881 Expression expression = parser.parsePrimaryExpression(); | |
| 5882 expect(expression, isNotNull); | |
| 5883 assertNoErrors(); | |
| 5884 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 5885 MapLiteral literal = expression; | |
| 5886 expect(literal.typeArguments, isNotNull); | |
| 5887 expect(literal.typeArguments.arguments, hasLength(2)); | |
| 5888 } | |
| 5889 | |
| 5890 void test_parsePrimaryExpression_new() { | |
| 5891 createParser('new A()'); | |
| 5892 Expression expression = parser.parsePrimaryExpression(); | |
| 5893 expect(expression, isNotNull); | |
| 5894 assertNoErrors(); | |
| 5895 expect(expression, new isInstanceOf<InstanceCreationExpression>()); | |
| 5896 InstanceCreationExpression creation = expression; | |
| 5897 expect(creation, isNotNull); | |
| 5898 } | |
| 5899 | |
| 5900 void test_parsePrimaryExpression_null() { | |
| 5901 createParser('null'); | |
| 5902 Expression expression = parser.parsePrimaryExpression(); | |
| 5903 expect(expression, isNotNull); | |
| 5904 assertNoErrors(); | |
| 5905 expect(expression, new isInstanceOf<NullLiteral>()); | |
| 5906 NullLiteral literal = expression; | |
| 5907 expect(literal.literal, isNotNull); | |
| 5908 } | |
| 5909 | |
| 5910 void test_parsePrimaryExpression_parenthesized() { | |
| 5911 createParser('(x)'); | |
| 5912 Expression expression = parser.parsePrimaryExpression(); | |
| 5913 expect(expression, isNotNull); | |
| 5914 assertNoErrors(); | |
| 5915 expect(expression, new isInstanceOf<ParenthesizedExpression>()); | |
| 5916 ParenthesizedExpression parens = expression; | |
| 5917 expect(parens, isNotNull); | |
| 5918 } | |
| 5919 | |
| 5920 void test_parsePrimaryExpression_string() { | |
| 5921 createParser('"string"'); | |
| 5922 Expression expression = parser.parsePrimaryExpression(); | |
| 5923 expect(expression, isNotNull); | |
| 5924 assertNoErrors(); | |
| 5925 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 5926 SimpleStringLiteral literal = expression; | |
| 5927 expect(literal.isMultiline, isFalse); | |
| 5928 expect(literal.isRaw, isFalse); | |
| 5929 expect(literal.value, "string"); | |
| 5930 } | |
| 5931 | |
| 5932 void test_parsePrimaryExpression_string_multiline() { | |
| 5933 createParser("'''string'''"); | |
| 5934 Expression expression = parser.parsePrimaryExpression(); | |
| 5935 expect(expression, isNotNull); | |
| 5936 assertNoErrors(); | |
| 5937 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 5938 SimpleStringLiteral literal = expression; | |
| 5939 expect(literal.isMultiline, isTrue); | |
| 5940 expect(literal.isRaw, isFalse); | |
| 5941 expect(literal.value, "string"); | |
| 5942 } | |
| 5943 | |
| 5944 void test_parsePrimaryExpression_string_raw() { | |
| 5945 createParser("r'string'"); | |
| 5946 Expression expression = parser.parsePrimaryExpression(); | |
| 5947 expect(expression, isNotNull); | |
| 5948 assertNoErrors(); | |
| 5949 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 5950 SimpleStringLiteral literal = expression; | |
| 5951 expect(literal.isMultiline, isFalse); | |
| 5952 expect(literal.isRaw, isTrue); | |
| 5953 expect(literal.value, "string"); | |
| 5954 } | |
| 5955 | |
| 5956 void test_parsePrimaryExpression_super() { | |
| 5957 createParser('super.x'); | |
| 5958 Expression expression = parser.parsePrimaryExpression(); | |
| 5959 expect(expression, isNotNull); | |
| 5960 assertNoErrors(); | |
| 5961 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 5962 PropertyAccess propertyAccess = expression; | |
| 5963 expect(propertyAccess.target is SuperExpression, isTrue); | |
| 5964 expect(propertyAccess.operator, isNotNull); | |
| 5965 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 5966 expect(propertyAccess.propertyName, isNotNull); | |
| 5967 } | |
| 5968 | |
| 5969 void test_parsePrimaryExpression_this() { | |
| 5970 createParser('this'); | |
| 5971 Expression expression = parser.parsePrimaryExpression(); | |
| 5972 expect(expression, isNotNull); | |
| 5973 assertNoErrors(); | |
| 5974 expect(expression, new isInstanceOf<ThisExpression>()); | |
| 5975 ThisExpression thisExpression = expression; | |
| 5976 expect(thisExpression.thisKeyword, isNotNull); | |
| 5977 } | |
| 5978 | |
| 5979 void test_parsePrimaryExpression_true() { | |
| 5980 createParser('true'); | |
| 5981 Expression expression = parser.parsePrimaryExpression(); | |
| 5982 expect(expression, isNotNull); | |
| 5983 assertNoErrors(); | |
| 5984 expect(expression, new isInstanceOf<BooleanLiteral>()); | |
| 5985 BooleanLiteral literal = expression; | |
| 5986 expect(literal.literal, isNotNull); | |
| 5987 expect(literal.value, isTrue); | |
| 5988 } | |
| 5989 | |
| 5990 void test_parseRelationalExpression_as_functionType_noReturnType() { | |
| 5991 createParser('x as Function(int)'); | |
| 5992 Expression expression = parser.parseRelationalExpression(); | |
| 5993 expect(expression, isNotNull); | |
| 5994 assertNoErrors(); | |
| 5995 expect(expression, new isInstanceOf<AsExpression>()); | |
| 5996 AsExpression asExpression = expression; | |
| 5997 expect(asExpression.expression, isNotNull); | |
| 5998 expect(asExpression.asOperator, isNotNull); | |
| 5999 expect(asExpression.type, new isInstanceOf<GenericFunctionType>()); | |
| 6000 } | |
| 6001 | |
| 6002 void test_parseRelationalExpression_as_functionType_returnType() { | |
| 6003 createParser('x as String Function(int)'); | |
| 6004 Expression expression = parser.parseRelationalExpression(); | |
| 6005 expect(expression, isNotNull); | |
| 6006 assertNoErrors(); | |
| 6007 expect(expression, new isInstanceOf<AsExpression>()); | |
| 6008 AsExpression asExpression = expression; | |
| 6009 expect(asExpression.expression, isNotNull); | |
| 6010 expect(asExpression.asOperator, isNotNull); | |
| 6011 expect(asExpression.type, new isInstanceOf<GenericFunctionType>()); | |
| 6012 } | |
| 6013 | |
| 6014 void test_parseRelationalExpression_as_generic() { | |
| 6015 createParser('x as C<D>'); | |
| 6016 Expression expression = parser.parseRelationalExpression(); | |
| 6017 expect(expression, isNotNull); | |
| 6018 assertNoErrors(); | |
| 6019 expect(expression, new isInstanceOf<AsExpression>()); | |
| 6020 AsExpression asExpression = expression; | |
| 6021 expect(asExpression.expression, isNotNull); | |
| 6022 expect(asExpression.asOperator, isNotNull); | |
| 6023 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 6024 } | |
| 6025 | |
| 6026 void test_parseRelationalExpression_as_nullable() { | |
| 6027 enableNnbd = true; | |
| 6028 createParser('x as Y?)'); | |
| 6029 Expression expression = parser.parseRelationalExpression(); | |
| 6030 expect(expression, isNotNull); | |
| 6031 assertNoErrors(); | |
| 6032 expect(expression, new isInstanceOf<AsExpression>()); | |
| 6033 AsExpression asExpression = expression; | |
| 6034 expect(asExpression.expression, isNotNull); | |
| 6035 expect(asExpression.asOperator, isNotNull); | |
| 6036 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 6037 } | |
| 6038 | |
| 6039 void test_parseRelationalExpression_as_simple() { | |
| 6040 createParser('x as Y'); | |
| 6041 Expression expression = parser.parseRelationalExpression(); | |
| 6042 expect(expression, isNotNull); | |
| 6043 assertNoErrors(); | |
| 6044 expect(expression, new isInstanceOf<AsExpression>()); | |
| 6045 AsExpression asExpression = expression; | |
| 6046 expect(asExpression.expression, isNotNull); | |
| 6047 expect(asExpression.asOperator, isNotNull); | |
| 6048 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 6049 } | |
| 6050 | |
| 6051 void test_parseRelationalExpression_as_simple_function() { | |
| 6052 createParser('x as Function'); | |
| 6053 Expression expression = parser.parseRelationalExpression(); | |
| 6054 expect(expression, isNotNull); | |
| 6055 assertNoErrors(); | |
| 6056 expect(expression, new isInstanceOf<AsExpression>()); | |
| 6057 AsExpression asExpression = expression; | |
| 6058 expect(asExpression.expression, isNotNull); | |
| 6059 expect(asExpression.asOperator, isNotNull); | |
| 6060 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 6061 } | |
| 6062 | |
| 6063 void test_parseRelationalExpression_is() { | |
| 6064 createParser('x is y'); | |
| 6065 Expression expression = parser.parseRelationalExpression(); | |
| 6066 expect(expression, isNotNull); | |
| 6067 assertNoErrors(); | |
| 6068 expect(expression, new isInstanceOf<IsExpression>()); | |
| 6069 IsExpression isExpression = expression; | |
| 6070 expect(isExpression.expression, isNotNull); | |
| 6071 expect(isExpression.isOperator, isNotNull); | |
| 6072 expect(isExpression.notOperator, isNull); | |
| 6073 expect(isExpression.type, isNotNull); | |
| 6074 } | |
| 6075 | |
| 6076 void test_parseRelationalExpression_is_nullable() { | |
| 6077 enableNnbd = true; | |
| 6078 createParser('x is y?)'); | |
| 6079 Expression expression = parser.parseRelationalExpression(); | |
| 6080 expect(expression, isNotNull); | |
| 6081 assertNoErrors(); | |
| 6082 expect(expression, new isInstanceOf<IsExpression>()); | |
| 6083 IsExpression isExpression = expression; | |
| 6084 expect(isExpression.expression, isNotNull); | |
| 6085 expect(isExpression.isOperator, isNotNull); | |
| 6086 expect(isExpression.notOperator, isNull); | |
| 6087 expect(isExpression.type, isNotNull); | |
| 6088 } | |
| 6089 | |
| 6090 void test_parseRelationalExpression_isNot() { | |
| 6091 createParser('x is! y'); | |
| 6092 Expression expression = parser.parseRelationalExpression(); | |
| 6093 expect(expression, isNotNull); | |
| 6094 assertNoErrors(); | |
| 6095 expect(expression, new isInstanceOf<IsExpression>()); | |
| 6096 IsExpression isExpression = expression; | |
| 6097 expect(isExpression.expression, isNotNull); | |
| 6098 expect(isExpression.isOperator, isNotNull); | |
| 6099 expect(isExpression.notOperator, isNotNull); | |
| 6100 expect(isExpression.type, isNotNull); | |
| 6101 } | |
| 6102 | |
| 6103 void test_parseRelationalExpression_normal() { | |
| 6104 createParser('x < y'); | |
| 6105 Expression expression = parser.parseRelationalExpression(); | |
| 6106 expect(expression, isNotNull); | |
| 6107 assertNoErrors(); | |
| 6108 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 6109 BinaryExpression binaryExpression = expression; | |
| 6110 expect(binaryExpression.leftOperand, isNotNull); | |
| 6111 expect(binaryExpression.operator, isNotNull); | |
| 6112 expect(binaryExpression.operator.type, TokenType.LT); | |
| 6113 expect(binaryExpression.rightOperand, isNotNull); | |
| 6114 } | |
| 6115 | |
| 6116 void test_parseRelationalExpression_super() { | |
| 6117 createParser('super < y'); | |
| 6118 Expression expression = parser.parseRelationalExpression(); | |
| 6119 expect(expression, isNotNull); | |
| 6120 assertNoErrors(); | |
| 6121 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 6122 BinaryExpression binaryExpression = expression; | |
| 6123 expect(binaryExpression.leftOperand, isNotNull); | |
| 6124 expect(binaryExpression.operator, isNotNull); | |
| 6125 expect(binaryExpression.operator.type, TokenType.LT); | |
| 6126 expect(binaryExpression.rightOperand, isNotNull); | |
| 6127 } | |
| 6128 | |
| 6129 void test_parseRethrowExpression() { | |
| 6130 createParser('rethrow;'); | |
| 6131 RethrowExpression expression = parser.parseRethrowExpression(); | |
| 6132 expect(expression, isNotNull); | |
| 6133 assertNoErrors(); | |
| 6134 expect(expression.rethrowKeyword, isNotNull); | |
| 6135 } | |
| 6136 | |
| 6137 void test_parseShiftExpression_normal() { | |
| 6138 createParser('x << y'); | |
| 6139 BinaryExpression expression = parser.parseShiftExpression(); | |
| 6140 expect(expression, isNotNull); | |
| 6141 assertNoErrors(); | |
| 6142 expect(expression.leftOperand, isNotNull); | |
| 6143 expect(expression.operator, isNotNull); | |
| 6144 expect(expression.operator.type, TokenType.LT_LT); | |
| 6145 expect(expression.rightOperand, isNotNull); | |
| 6146 } | |
| 6147 | |
| 6148 void test_parseShiftExpression_super() { | |
| 6149 createParser('super << y'); | |
| 6150 BinaryExpression expression = parser.parseShiftExpression(); | |
| 6151 expect(expression, isNotNull); | |
| 6152 assertNoErrors(); | |
| 6153 expect(expression.leftOperand, isNotNull); | |
| 6154 expect(expression.operator, isNotNull); | |
| 6155 expect(expression.operator.type, TokenType.LT_LT); | |
| 6156 expect(expression.rightOperand, isNotNull); | |
| 6157 } | |
| 6158 | |
| 6159 void test_parseSimpleIdentifier1_normalIdentifier() { | |
| 6160 // TODO(brianwilkerson) Implement tests for this method. | |
| 6161 } | |
| 6162 | |
| 6163 void test_parseSimpleIdentifier_builtInIdentifier() { | |
| 6164 String lexeme = "as"; | |
| 6165 createParser(lexeme); | |
| 6166 SimpleIdentifier identifier = parser.parseSimpleIdentifier(); | |
| 6167 expect(identifier, isNotNull); | |
| 6168 assertNoErrors(); | |
| 6169 expect(identifier.token, isNotNull); | |
| 6170 expect(identifier.name, lexeme); | |
| 6171 } | |
| 6172 | |
| 6173 void test_parseSimpleIdentifier_normalIdentifier() { | |
| 6174 String lexeme = "foo"; | |
| 6175 createParser(lexeme); | |
| 6176 SimpleIdentifier identifier = parser.parseSimpleIdentifier(); | |
| 6177 expect(identifier, isNotNull); | |
| 6178 assertNoErrors(); | |
| 6179 expect(identifier.token, isNotNull); | |
| 6180 expect(identifier.name, lexeme); | |
| 6181 } | |
| 6182 | |
| 6183 void test_parseStringLiteral_adjacent() { | |
| 6184 createParser("'a' 'b'"); | |
| 6185 Expression expression = parser.parseStringLiteral(); | |
| 6186 expect(expression, isNotNull); | |
| 6187 assertNoErrors(); | |
| 6188 expect(expression, new isInstanceOf<AdjacentStrings>()); | |
| 6189 AdjacentStrings literal = expression; | |
| 6190 NodeList<StringLiteral> strings = literal.strings; | |
| 6191 expect(strings, hasLength(2)); | |
| 6192 StringLiteral firstString = strings[0]; | |
| 6193 StringLiteral secondString = strings[1]; | |
| 6194 expect((firstString as SimpleStringLiteral).value, "a"); | |
| 6195 expect((secondString as SimpleStringLiteral).value, "b"); | |
| 6196 } | |
| 6197 | |
| 6198 void test_parseStringLiteral_endsWithInterpolation() { | |
| 6199 createParser(r"'x$y'"); | |
| 6200 Expression expression = parser.parseStringLiteral(); | |
| 6201 expect(expression, isNotNull); | |
| 6202 assertNoErrors(); | |
| 6203 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 6204 StringInterpolation interpolation = expression; | |
| 6205 expect(interpolation.elements, hasLength(3)); | |
| 6206 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 6207 InterpolationString element0 = interpolation.elements[0]; | |
| 6208 expect(element0.value, 'x'); | |
| 6209 expect( | |
| 6210 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 6211 InterpolationExpression element1 = interpolation.elements[1]; | |
| 6212 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 6213 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 6214 InterpolationString element2 = interpolation.elements[2]; | |
| 6215 expect(element2.value, ''); | |
| 6216 } | |
| 6217 | |
| 6218 void test_parseStringLiteral_interpolated() { | |
| 6219 createParser("'a \${b} c \$this d'"); | |
| 6220 Expression expression = parser.parseStringLiteral(); | |
| 6221 expect(expression, isNotNull); | |
| 6222 assertNoErrors(); | |
| 6223 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 6224 StringInterpolation literal = expression; | |
| 6225 NodeList<InterpolationElement> elements = literal.elements; | |
| 6226 expect(elements, hasLength(5)); | |
| 6227 expect(elements[0] is InterpolationString, isTrue); | |
| 6228 expect(elements[1] is InterpolationExpression, isTrue); | |
| 6229 expect(elements[2] is InterpolationString, isTrue); | |
| 6230 expect(elements[3] is InterpolationExpression, isTrue); | |
| 6231 expect(elements[4] is InterpolationString, isTrue); | |
| 6232 } | |
| 6233 | |
| 6234 void test_parseStringLiteral_multiline_encodedSpace() { | |
| 6235 createParser("'''\\x20\na'''"); | |
| 6236 Expression expression = parser.parseStringLiteral(); | |
| 6237 expect(expression, isNotNull); | |
| 6238 assertNoErrors(); | |
| 6239 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6240 SimpleStringLiteral literal = expression; | |
| 6241 expect(literal.literal, isNotNull); | |
| 6242 expect(literal.value, " \na"); | |
| 6243 } | |
| 6244 | |
| 6245 void test_parseStringLiteral_multiline_endsWithInterpolation() { | |
| 6246 createParser(r"'''x$y'''"); | |
| 6247 Expression expression = parser.parseStringLiteral(); | |
| 6248 expect(expression, isNotNull); | |
| 6249 assertNoErrors(); | |
| 6250 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 6251 StringInterpolation interpolation = expression; | |
| 6252 expect(interpolation.elements, hasLength(3)); | |
| 6253 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 6254 InterpolationString element0 = interpolation.elements[0]; | |
| 6255 expect(element0.value, 'x'); | |
| 6256 expect( | |
| 6257 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 6258 InterpolationExpression element1 = interpolation.elements[1]; | |
| 6259 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 6260 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 6261 InterpolationString element2 = interpolation.elements[2]; | |
| 6262 expect(element2.value, ''); | |
| 6263 } | |
| 6264 | |
| 6265 void test_parseStringLiteral_multiline_escapedBackslash() { | |
| 6266 createParser("'''\\\\\na'''"); | |
| 6267 Expression expression = parser.parseStringLiteral(); | |
| 6268 expect(expression, isNotNull); | |
| 6269 assertNoErrors(); | |
| 6270 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6271 SimpleStringLiteral literal = expression; | |
| 6272 expect(literal.literal, isNotNull); | |
| 6273 expect(literal.value, "\\\na"); | |
| 6274 } | |
| 6275 | |
| 6276 void test_parseStringLiteral_multiline_escapedBackslash_raw() { | |
| 6277 createParser("r'''\\\\\na'''"); | |
| 6278 Expression expression = parser.parseStringLiteral(); | |
| 6279 expect(expression, isNotNull); | |
| 6280 assertNoErrors(); | |
| 6281 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6282 SimpleStringLiteral literal = expression; | |
| 6283 expect(literal.literal, isNotNull); | |
| 6284 expect(literal.value, "\\\\\na"); | |
| 6285 } | |
| 6286 | |
| 6287 void test_parseStringLiteral_multiline_escapedEolMarker() { | |
| 6288 createParser("'''\\\na'''"); | |
| 6289 Expression expression = parser.parseStringLiteral(); | |
| 6290 expect(expression, isNotNull); | |
| 6291 assertNoErrors(); | |
| 6292 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6293 SimpleStringLiteral literal = expression; | |
| 6294 expect(literal.literal, isNotNull); | |
| 6295 expect(literal.value, "a"); | |
| 6296 } | |
| 6297 | |
| 6298 void test_parseStringLiteral_multiline_escapedEolMarker_raw() { | |
| 6299 createParser("r'''\\\na'''"); | |
| 6300 Expression expression = parser.parseStringLiteral(); | |
| 6301 expect(expression, isNotNull); | |
| 6302 assertNoErrors(); | |
| 6303 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6304 SimpleStringLiteral literal = expression; | |
| 6305 expect(literal.literal, isNotNull); | |
| 6306 expect(literal.value, "a"); | |
| 6307 } | |
| 6308 | |
| 6309 void test_parseStringLiteral_multiline_escapedSpaceAndEolMarker() { | |
| 6310 createParser("'''\\ \\\na'''"); | |
| 6311 Expression expression = parser.parseStringLiteral(); | |
| 6312 expect(expression, isNotNull); | |
| 6313 assertNoErrors(); | |
| 6314 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6315 SimpleStringLiteral literal = expression; | |
| 6316 expect(literal.literal, isNotNull); | |
| 6317 expect(literal.value, "a"); | |
| 6318 } | |
| 6319 | |
| 6320 void test_parseStringLiteral_multiline_escapedSpaceAndEolMarker_raw() { | |
| 6321 createParser("r'''\\ \\\na'''"); | |
| 6322 Expression expression = parser.parseStringLiteral(); | |
| 6323 expect(expression, isNotNull); | |
| 6324 assertNoErrors(); | |
| 6325 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6326 SimpleStringLiteral literal = expression; | |
| 6327 expect(literal.literal, isNotNull); | |
| 6328 expect(literal.value, "a"); | |
| 6329 } | |
| 6330 | |
| 6331 void test_parseStringLiteral_multiline_escapedTab() { | |
| 6332 createParser("'''\\t\na'''"); | |
| 6333 Expression expression = parser.parseStringLiteral(); | |
| 6334 expect(expression, isNotNull); | |
| 6335 assertNoErrors(); | |
| 6336 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6337 SimpleStringLiteral literal = expression; | |
| 6338 expect(literal.literal, isNotNull); | |
| 6339 expect(literal.value, "\t\na"); | |
| 6340 } | |
| 6341 | |
| 6342 void test_parseStringLiteral_multiline_escapedTab_raw() { | |
| 6343 createParser("r'''\\t\na'''"); | |
| 6344 Expression expression = parser.parseStringLiteral(); | |
| 6345 expect(expression, isNotNull); | |
| 6346 assertNoErrors(); | |
| 6347 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6348 SimpleStringLiteral literal = expression; | |
| 6349 expect(literal.literal, isNotNull); | |
| 6350 expect(literal.value, "\\t\na"); | |
| 6351 } | |
| 6352 | |
| 6353 void test_parseStringLiteral_multiline_quoteAfterInterpolation() { | |
| 6354 createParser(r"""'''$x'y'''"""); | |
| 6355 Expression expression = parser.parseStringLiteral(); | |
| 6356 expect(expression, isNotNull); | |
| 6357 assertNoErrors(); | |
| 6358 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 6359 StringInterpolation interpolation = expression; | |
| 6360 expect(interpolation.elements, hasLength(3)); | |
| 6361 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 6362 InterpolationString element0 = interpolation.elements[0]; | |
| 6363 expect(element0.value, ''); | |
| 6364 expect( | |
| 6365 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 6366 InterpolationExpression element1 = interpolation.elements[1]; | |
| 6367 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 6368 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 6369 InterpolationString element2 = interpolation.elements[2]; | |
| 6370 expect(element2.value, "'y"); | |
| 6371 } | |
| 6372 | |
| 6373 void test_parseStringLiteral_multiline_startsWithInterpolation() { | |
| 6374 createParser(r"'''${x}y'''"); | |
| 6375 Expression expression = parser.parseStringLiteral(); | |
| 6376 expect(expression, isNotNull); | |
| 6377 assertNoErrors(); | |
| 6378 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 6379 StringInterpolation interpolation = expression; | |
| 6380 expect(interpolation.elements, hasLength(3)); | |
| 6381 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 6382 InterpolationString element0 = interpolation.elements[0]; | |
| 6383 expect(element0.value, ''); | |
| 6384 expect( | |
| 6385 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 6386 InterpolationExpression element1 = interpolation.elements[1]; | |
| 6387 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 6388 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 6389 InterpolationString element2 = interpolation.elements[2]; | |
| 6390 expect(element2.value, 'y'); | |
| 6391 } | |
| 6392 | |
| 6393 void test_parseStringLiteral_multiline_twoSpaces() { | |
| 6394 createParser("''' \na'''"); | |
| 6395 Expression expression = parser.parseStringLiteral(); | |
| 6396 expect(expression, isNotNull); | |
| 6397 assertNoErrors(); | |
| 6398 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6399 SimpleStringLiteral literal = expression; | |
| 6400 expect(literal.literal, isNotNull); | |
| 6401 expect(literal.value, "a"); | |
| 6402 } | |
| 6403 | |
| 6404 void test_parseStringLiteral_multiline_twoSpaces_raw() { | |
| 6405 createParser("r''' \na'''"); | |
| 6406 Expression expression = parser.parseStringLiteral(); | |
| 6407 expect(expression, isNotNull); | |
| 6408 assertNoErrors(); | |
| 6409 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6410 SimpleStringLiteral literal = expression; | |
| 6411 expect(literal.literal, isNotNull); | |
| 6412 expect(literal.value, "a"); | |
| 6413 } | |
| 6414 | |
| 6415 void test_parseStringLiteral_multiline_untrimmed() { | |
| 6416 createParser("''' a\nb'''"); | |
| 6417 Expression expression = parser.parseStringLiteral(); | |
| 6418 expect(expression, isNotNull); | |
| 6419 assertNoErrors(); | |
| 6420 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6421 SimpleStringLiteral literal = expression; | |
| 6422 expect(literal.literal, isNotNull); | |
| 6423 expect(literal.value, " a\nb"); | |
| 6424 } | |
| 6425 | |
| 6426 void test_parseStringLiteral_quoteAfterInterpolation() { | |
| 6427 createParser(r"""'$x"'"""); | |
| 6428 Expression expression = parser.parseStringLiteral(); | |
| 6429 expect(expression, isNotNull); | |
| 6430 assertNoErrors(); | |
| 6431 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 6432 StringInterpolation interpolation = expression; | |
| 6433 expect(interpolation.elements, hasLength(3)); | |
| 6434 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 6435 InterpolationString element0 = interpolation.elements[0]; | |
| 6436 expect(element0.value, ''); | |
| 6437 expect( | |
| 6438 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 6439 InterpolationExpression element1 = interpolation.elements[1]; | |
| 6440 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 6441 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 6442 InterpolationString element2 = interpolation.elements[2]; | |
| 6443 expect(element2.value, '"'); | |
| 6444 } | |
| 6445 | |
| 6446 void test_parseStringLiteral_single() { | |
| 6447 createParser("'a'"); | |
| 6448 Expression expression = parser.parseStringLiteral(); | |
| 6449 expect(expression, isNotNull); | |
| 6450 assertNoErrors(); | |
| 6451 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 6452 SimpleStringLiteral literal = expression; | |
| 6453 expect(literal.literal, isNotNull); | |
| 6454 expect(literal.value, "a"); | |
| 6455 } | |
| 6456 | |
| 6457 void test_parseStringLiteral_startsWithInterpolation() { | |
| 6458 createParser(r"'${x}y'"); | |
| 6459 Expression expression = parser.parseStringLiteral(); | |
| 6460 expect(expression, isNotNull); | |
| 6461 assertNoErrors(); | |
| 6462 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 6463 StringInterpolation interpolation = expression; | |
| 6464 expect(interpolation.elements, hasLength(3)); | |
| 6465 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 6466 InterpolationString element0 = interpolation.elements[0]; | |
| 6467 expect(element0.value, ''); | |
| 6468 expect( | |
| 6469 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 6470 InterpolationExpression element1 = interpolation.elements[1]; | |
| 6471 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 6472 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 6473 InterpolationString element2 = interpolation.elements[2]; | |
| 6474 expect(element2.value, 'y'); | |
| 6475 } | |
| 6476 | |
| 6477 void test_parseSuperConstructorInvocation_named() { | |
| 6478 createParser('super.a()'); | |
| 6479 SuperConstructorInvocation invocation = | |
| 6480 parser.parseSuperConstructorInvocation(); | |
| 6481 expect(invocation, isNotNull); | |
| 6482 assertNoErrors(); | |
| 6483 expect(invocation.argumentList, isNotNull); | |
| 6484 expect(invocation.constructorName, isNotNull); | |
| 6485 expect(invocation.superKeyword, isNotNull); | |
| 6486 expect(invocation.period, isNotNull); | |
| 6487 } | |
| 6488 | |
| 6489 void test_parseSuperConstructorInvocation_unnamed() { | |
| 6490 createParser('super()'); | |
| 6491 SuperConstructorInvocation invocation = | |
| 6492 parser.parseSuperConstructorInvocation(); | |
| 6493 expect(invocation, isNotNull); | |
| 6494 assertNoErrors(); | |
| 6495 expect(invocation.argumentList, isNotNull); | |
| 6496 expect(invocation.constructorName, isNull); | |
| 6497 expect(invocation.superKeyword, isNotNull); | |
| 6498 expect(invocation.period, isNull); | |
| 6499 } | |
| 6500 | |
| 6501 void test_parseSymbolLiteral_builtInIdentifier() { | |
| 6502 createParser('#dynamic.static.abstract'); | |
| 6503 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 6504 expect(literal, isNotNull); | |
| 6505 assertNoErrors(); | |
| 6506 expect(literal.poundSign, isNotNull); | |
| 6507 List<Token> components = literal.components; | |
| 6508 expect(components, hasLength(3)); | |
| 6509 expect(components[0].lexeme, "dynamic"); | |
| 6510 expect(components[1].lexeme, "static"); | |
| 6511 expect(components[2].lexeme, "abstract"); | |
| 6512 } | |
| 6513 | |
| 6514 void test_parseSymbolLiteral_multiple() { | |
| 6515 createParser('#a.b.c'); | |
| 6516 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 6517 expect(literal, isNotNull); | |
| 6518 assertNoErrors(); | |
| 6519 expect(literal.poundSign, isNotNull); | |
| 6520 List<Token> components = literal.components; | |
| 6521 expect(components, hasLength(3)); | |
| 6522 expect(components[0].lexeme, "a"); | |
| 6523 expect(components[1].lexeme, "b"); | |
| 6524 expect(components[2].lexeme, "c"); | |
| 6525 } | |
| 6526 | |
| 6527 void test_parseSymbolLiteral_operator() { | |
| 6528 createParser('#=='); | |
| 6529 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 6530 expect(literal, isNotNull); | |
| 6531 assertNoErrors(); | |
| 6532 expect(literal.poundSign, isNotNull); | |
| 6533 List<Token> components = literal.components; | |
| 6534 expect(components, hasLength(1)); | |
| 6535 expect(components[0].lexeme, "=="); | |
| 6536 } | |
| 6537 | |
| 6538 void test_parseSymbolLiteral_single() { | |
| 6539 createParser('#a'); | |
| 6540 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 6541 expect(literal, isNotNull); | |
| 6542 assertNoErrors(); | |
| 6543 expect(literal.poundSign, isNotNull); | |
| 6544 List<Token> components = literal.components; | |
| 6545 expect(components, hasLength(1)); | |
| 6546 expect(components[0].lexeme, "a"); | |
| 6547 } | |
| 6548 | |
| 6549 void test_parseSymbolLiteral_void() { | |
| 6550 createParser('#void'); | |
| 6551 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 6552 expect(literal, isNotNull); | |
| 6553 assertNoErrors(); | |
| 6554 expect(literal.poundSign, isNotNull); | |
| 6555 List<Token> components = literal.components; | |
| 6556 expect(components, hasLength(1)); | |
| 6557 expect(components[0].lexeme, "void"); | |
| 6558 } | |
| 6559 | |
| 6560 void test_parseThrowExpression() { | |
| 6561 createParser('throw x;'); | |
| 6562 Expression expression = parser.parseThrowExpression(); | |
| 6563 expect(expression, isNotNull); | |
| 6564 assertNoErrors(); | |
| 6565 expect(expression, new isInstanceOf<ThrowExpression>()); | |
| 6566 ThrowExpression throwExpression = expression; | |
| 6567 expect(throwExpression.throwKeyword, isNotNull); | |
| 6568 expect(throwExpression.expression, isNotNull); | |
| 6569 } | |
| 6570 | |
| 6571 void test_parseThrowExpressionWithoutCascade() { | |
| 6572 createParser('throw x;'); | |
| 6573 Expression expression = parser.parseThrowExpressionWithoutCascade(); | |
| 6574 expect(expression, isNotNull); | |
| 6575 assertNoErrors(); | |
| 6576 expect(expression, new isInstanceOf<ThrowExpression>()); | |
| 6577 ThrowExpression throwExpression = expression; | |
| 6578 expect(throwExpression.throwKeyword, isNotNull); | |
| 6579 expect(throwExpression.expression, isNotNull); | |
| 6580 } | |
| 6581 | |
| 6582 void test_parseUnaryExpression_decrement_normal() { | |
| 6583 createParser('--x'); | |
| 6584 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6585 expect(expression, isNotNull); | |
| 6586 assertNoErrors(); | |
| 6587 expect(expression.operator, isNotNull); | |
| 6588 expect(expression.operator.type, TokenType.MINUS_MINUS); | |
| 6589 expect(expression.operand, isNotNull); | |
| 6590 } | |
| 6591 | |
| 6592 void test_parseUnaryExpression_decrement_super() { | |
| 6593 createParser('--super'); | |
| 6594 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6595 expect(expression, isNotNull); | |
| 6596 assertNoErrors(); | |
| 6597 expect(expression.operator, isNotNull); | |
| 6598 expect(expression.operator.type, TokenType.MINUS); | |
| 6599 Expression innerExpression = expression.operand; | |
| 6600 expect(innerExpression, isNotNull); | |
| 6601 expect(innerExpression is PrefixExpression, isTrue); | |
| 6602 PrefixExpression operand = innerExpression as PrefixExpression; | |
| 6603 expect(operand.operator, isNotNull); | |
| 6604 expect(operand.operator.type, TokenType.MINUS); | |
| 6605 expect(operand.operand, isNotNull); | |
| 6606 } | |
| 6607 | |
| 6608 void test_parseUnaryExpression_decrement_super_propertyAccess() { | |
| 6609 createParser('--super.x'); | |
| 6610 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6611 expect(expression, isNotNull); | |
| 6612 assertNoErrors(); | |
| 6613 expect(expression.operator, isNotNull); | |
| 6614 expect(expression.operator.type, TokenType.MINUS_MINUS); | |
| 6615 expect(expression.operand, isNotNull); | |
| 6616 PropertyAccess operand = expression.operand as PropertyAccess; | |
| 6617 expect(operand.target is SuperExpression, isTrue); | |
| 6618 expect(operand.propertyName.name, "x"); | |
| 6619 } | |
| 6620 | |
| 6621 void test_parseUnaryExpression_decrement_super_withComment() { | |
| 6622 createParser('/* 0 */ --super'); | |
| 6623 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6624 expect(expression, isNotNull); | |
| 6625 assertNoErrors(); | |
| 6626 expect(expression.operator, isNotNull); | |
| 6627 expect(expression.operator.type, TokenType.MINUS); | |
| 6628 expect(expression.operator.precedingComments, isNotNull); | |
| 6629 Expression innerExpression = expression.operand; | |
| 6630 expect(innerExpression, isNotNull); | |
| 6631 expect(innerExpression is PrefixExpression, isTrue); | |
| 6632 PrefixExpression operand = innerExpression as PrefixExpression; | |
| 6633 expect(operand.operator, isNotNull); | |
| 6634 expect(operand.operator.type, TokenType.MINUS); | |
| 6635 expect(operand.operand, isNotNull); | |
| 6636 } | |
| 6637 | |
| 6638 void test_parseUnaryExpression_increment_normal() { | |
| 6639 createParser('++x'); | |
| 6640 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6641 expect(expression, isNotNull); | |
| 6642 assertNoErrors(); | |
| 6643 expect(expression.operator, isNotNull); | |
| 6644 expect(expression.operator.type, TokenType.PLUS_PLUS); | |
| 6645 expect(expression.operand, isNotNull); | |
| 6646 } | |
| 6647 | |
| 6648 void test_parseUnaryExpression_increment_super_index() { | |
| 6649 createParser('++super[0]'); | |
| 6650 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6651 expect(expression, isNotNull); | |
| 6652 assertNoErrors(); | |
| 6653 expect(expression.operator, isNotNull); | |
| 6654 expect(expression.operator.type, TokenType.PLUS_PLUS); | |
| 6655 expect(expression.operand, isNotNull); | |
| 6656 IndexExpression operand = expression.operand as IndexExpression; | |
| 6657 expect(operand.realTarget is SuperExpression, isTrue); | |
| 6658 expect(operand.index is IntegerLiteral, isTrue); | |
| 6659 } | |
| 6660 | |
| 6661 void test_parseUnaryExpression_increment_super_propertyAccess() { | |
| 6662 createParser('++super.x'); | |
| 6663 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6664 expect(expression, isNotNull); | |
| 6665 assertNoErrors(); | |
| 6666 expect(expression.operator, isNotNull); | |
| 6667 expect(expression.operator.type, TokenType.PLUS_PLUS); | |
| 6668 expect(expression.operand, isNotNull); | |
| 6669 PropertyAccess operand = expression.operand as PropertyAccess; | |
| 6670 expect(operand.target is SuperExpression, isTrue); | |
| 6671 expect(operand.propertyName.name, "x"); | |
| 6672 } | |
| 6673 | |
| 6674 void test_parseUnaryExpression_minus_normal() { | |
| 6675 createParser('-x'); | |
| 6676 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6677 expect(expression, isNotNull); | |
| 6678 assertNoErrors(); | |
| 6679 expect(expression.operator, isNotNull); | |
| 6680 expect(expression.operator.type, TokenType.MINUS); | |
| 6681 expect(expression.operand, isNotNull); | |
| 6682 } | |
| 6683 | |
| 6684 void test_parseUnaryExpression_minus_super() { | |
| 6685 createParser('-super'); | |
| 6686 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6687 expect(expression, isNotNull); | |
| 6688 assertNoErrors(); | |
| 6689 expect(expression.operator, isNotNull); | |
| 6690 expect(expression.operator.type, TokenType.MINUS); | |
| 6691 expect(expression.operand, isNotNull); | |
| 6692 } | |
| 6693 | |
| 6694 void test_parseUnaryExpression_not_normal() { | |
| 6695 createParser('!x'); | |
| 6696 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6697 expect(expression, isNotNull); | |
| 6698 assertNoErrors(); | |
| 6699 expect(expression.operator, isNotNull); | |
| 6700 expect(expression.operator.type, TokenType.BANG); | |
| 6701 expect(expression.operand, isNotNull); | |
| 6702 } | |
| 6703 | |
| 6704 void test_parseUnaryExpression_not_super() { | |
| 6705 createParser('!super'); | |
| 6706 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6707 expect(expression, isNotNull); | |
| 6708 assertNoErrors(); | |
| 6709 expect(expression.operator, isNotNull); | |
| 6710 expect(expression.operator.type, TokenType.BANG); | |
| 6711 expect(expression.operand, isNotNull); | |
| 6712 } | |
| 6713 | |
| 6714 void test_parseUnaryExpression_tilda_normal() { | |
| 6715 createParser('~x'); | |
| 6716 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6717 expect(expression, isNotNull); | |
| 6718 assertNoErrors(); | |
| 6719 expect(expression.operator, isNotNull); | |
| 6720 expect(expression.operator.type, TokenType.TILDE); | |
| 6721 expect(expression.operand, isNotNull); | |
| 6722 } | |
| 6723 | |
| 6724 void test_parseUnaryExpression_tilda_super() { | |
| 6725 createParser('~super'); | |
| 6726 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 6727 expect(expression, isNotNull); | |
| 6728 assertNoErrors(); | |
| 6729 expect(expression.operator, isNotNull); | |
| 6730 expect(expression.operator.type, TokenType.TILDE); | |
| 6731 expect(expression.operand, isNotNull); | |
| 6732 } | |
| 6733 } | |
| 6734 | |
| 3950 /** | 6735 /** |
| 3951 * Tests of the analyzer parser based on [FormalParameterParserTestMixin]. | 6736 * Tests of the analyzer parser based on [FormalParameterParserTestMixin]. |
| 3952 */ | 6737 */ |
| 3953 @reflectiveTest | 6738 @reflectiveTest |
| 3954 class FormalParameterParserTest extends ParserTestCase | 6739 class FormalParameterParserTest extends ParserTestCase |
| 3955 with FormalParameterParserTestMixin {} | 6740 with FormalParameterParserTestMixin {} |
| 3956 | 6741 |
| 3957 /** | 6742 /** |
| 3958 * The class [FormalParameterParserTestMixin] defines parser tests that test | 6743 * The class [FormalParameterParserTestMixin] defines parser tests that test |
| 3959 * the parsing of formal parameters. | 6744 * the parsing of formal parameters. |
| (...skipping 2912 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6872 } | 9657 } |
| 6873 | 9658 |
| 6874 void test_isSwitchMember_default_unlabeled() { | 9659 void test_isSwitchMember_default_unlabeled() { |
| 6875 expect(_isSwitchMember("default"), isTrue); | 9660 expect(_isSwitchMember("default"), isTrue); |
| 6876 } | 9661 } |
| 6877 | 9662 |
| 6878 void test_isSwitchMember_false() { | 9663 void test_isSwitchMember_false() { |
| 6879 expect(_isSwitchMember("break;"), isFalse); | 9664 expect(_isSwitchMember("break;"), isFalse); |
| 6880 } | 9665 } |
| 6881 | 9666 |
| 6882 void test_parseAdditiveExpression_normal() { | |
| 6883 createParser('x + y'); | |
| 6884 Expression expression = parser.parseAdditiveExpression(); | |
| 6885 expectNotNullIfNoErrors(expression); | |
| 6886 listener.assertNoErrors(); | |
| 6887 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 6888 BinaryExpression binaryExpression = expression; | |
| 6889 expect(binaryExpression.leftOperand, isNotNull); | |
| 6890 expect(binaryExpression.operator, isNotNull); | |
| 6891 expect(binaryExpression.operator.type, TokenType.PLUS); | |
| 6892 expect(binaryExpression.rightOperand, isNotNull); | |
| 6893 } | |
| 6894 | |
| 6895 void test_parseAdditiveExpression_super() { | |
| 6896 createParser('super + y'); | |
| 6897 Expression expression = parser.parseAdditiveExpression(); | |
| 6898 expectNotNullIfNoErrors(expression); | |
| 6899 listener.assertNoErrors(); | |
| 6900 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 6901 BinaryExpression binaryExpression = expression; | |
| 6902 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 6903 expect(binaryExpression.operator, isNotNull); | |
| 6904 expect(binaryExpression.operator.type, TokenType.PLUS); | |
| 6905 expect(binaryExpression.rightOperand, isNotNull); | |
| 6906 } | |
| 6907 | |
| 6908 void test_parseAnnotation_n1() { | 9667 void test_parseAnnotation_n1() { |
| 6909 createParser('@A'); | 9668 createParser('@A'); |
| 6910 Annotation annotation = parser.parseAnnotation(); | 9669 Annotation annotation = parser.parseAnnotation(); |
| 6911 expectNotNullIfNoErrors(annotation); | 9670 expectNotNullIfNoErrors(annotation); |
| 6912 listener.assertNoErrors(); | 9671 listener.assertNoErrors(); |
| 6913 expect(annotation.atSign, isNotNull); | 9672 expect(annotation.atSign, isNotNull); |
| 6914 expect(annotation.name, isNotNull); | 9673 expect(annotation.name, isNotNull); |
| 6915 expect(annotation.period, isNull); | 9674 expect(annotation.period, isNull); |
| 6916 expect(annotation.constructorName, isNull); | 9675 expect(annotation.constructorName, isNull); |
| 6917 expect(annotation.arguments, isNull); | 9676 expect(annotation.arguments, isNull); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7086 listener.assertNoErrors(); | 9845 listener.assertNoErrors(); |
| 7087 expect(statement.assertKeyword, isNotNull); | 9846 expect(statement.assertKeyword, isNotNull); |
| 7088 expect(statement.leftParenthesis, isNotNull); | 9847 expect(statement.leftParenthesis, isNotNull); |
| 7089 expect(statement.condition, isNotNull); | 9848 expect(statement.condition, isNotNull); |
| 7090 expect(statement.comma, isNotNull); | 9849 expect(statement.comma, isNotNull); |
| 7091 expect(statement.message, isNotNull); | 9850 expect(statement.message, isNotNull); |
| 7092 expect(statement.rightParenthesis, isNotNull); | 9851 expect(statement.rightParenthesis, isNotNull); |
| 7093 expect(statement.semicolon, isNotNull); | 9852 expect(statement.semicolon, isNotNull); |
| 7094 } | 9853 } |
| 7095 | 9854 |
| 7096 void test_parseAssignableExpression_expression_args_dot() { | |
| 7097 createParser('(x)(y).z'); | |
| 7098 Expression expression = parser.parseAssignableExpression(false); | |
| 7099 expectNotNullIfNoErrors(expression); | |
| 7100 listener.assertNoErrors(); | |
| 7101 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7102 PropertyAccess propertyAccess = expression; | |
| 7103 FunctionExpressionInvocation invocation = | |
| 7104 propertyAccess.target as FunctionExpressionInvocation; | |
| 7105 expect(invocation.function, isNotNull); | |
| 7106 expect(invocation.typeArguments, isNull); | |
| 7107 ArgumentList argumentList = invocation.argumentList; | |
| 7108 expect(argumentList, isNotNull); | |
| 7109 expect(argumentList.arguments, hasLength(1)); | |
| 7110 expect(propertyAccess.operator, isNotNull); | |
| 7111 expect(propertyAccess.propertyName, isNotNull); | |
| 7112 } | |
| 7113 | |
| 7114 void | |
| 7115 test_parseAssignableExpression_expression_args_dot_typeParameterComments() { | |
| 7116 enableGenericMethodComments = true; | |
| 7117 createParser('(x)/*<F>*/(y).z'); | |
| 7118 Expression expression = parser.parseAssignableExpression(false); | |
| 7119 expectNotNullIfNoErrors(expression); | |
| 7120 listener.assertNoErrors(); | |
| 7121 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7122 PropertyAccess propertyAccess = expression; | |
| 7123 FunctionExpressionInvocation invocation = | |
| 7124 propertyAccess.target as FunctionExpressionInvocation; | |
| 7125 expect(invocation.function, isNotNull); | |
| 7126 expect(invocation.typeArguments, isNotNull); | |
| 7127 ArgumentList argumentList = invocation.argumentList; | |
| 7128 expect(argumentList, isNotNull); | |
| 7129 expect(argumentList.arguments, hasLength(1)); | |
| 7130 expect(propertyAccess.operator, isNotNull); | |
| 7131 expect(propertyAccess.propertyName, isNotNull); | |
| 7132 } | |
| 7133 | |
| 7134 void test_parseAssignableExpression_expression_args_dot_typeParameters() { | |
| 7135 createParser('(x)<F>(y).z'); | |
| 7136 Expression expression = parser.parseAssignableExpression(false); | |
| 7137 expectNotNullIfNoErrors(expression); | |
| 7138 listener.assertNoErrors(); | |
| 7139 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7140 PropertyAccess propertyAccess = expression; | |
| 7141 FunctionExpressionInvocation invocation = | |
| 7142 propertyAccess.target as FunctionExpressionInvocation; | |
| 7143 expect(invocation.function, isNotNull); | |
| 7144 expect(invocation.typeArguments, isNotNull); | |
| 7145 ArgumentList argumentList = invocation.argumentList; | |
| 7146 expect(argumentList, isNotNull); | |
| 7147 expect(argumentList.arguments, hasLength(1)); | |
| 7148 expect(propertyAccess.operator, isNotNull); | |
| 7149 expect(propertyAccess.propertyName, isNotNull); | |
| 7150 } | |
| 7151 | |
| 7152 void test_parseAssignableExpression_expression_dot() { | |
| 7153 createParser('(x).y'); | |
| 7154 Expression expression = parser.parseAssignableExpression(false); | |
| 7155 expectNotNullIfNoErrors(expression); | |
| 7156 listener.assertNoErrors(); | |
| 7157 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7158 PropertyAccess propertyAccess = expression; | |
| 7159 expect(propertyAccess.target, isNotNull); | |
| 7160 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 7161 expect(propertyAccess.propertyName, isNotNull); | |
| 7162 } | |
| 7163 | |
| 7164 void test_parseAssignableExpression_expression_index() { | |
| 7165 createParser('(x)[y]'); | |
| 7166 Expression expression = parser.parseAssignableExpression(false); | |
| 7167 expectNotNullIfNoErrors(expression); | |
| 7168 listener.assertNoErrors(); | |
| 7169 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 7170 IndexExpression indexExpression = expression; | |
| 7171 expect(indexExpression.target, isNotNull); | |
| 7172 expect(indexExpression.leftBracket, isNotNull); | |
| 7173 expect(indexExpression.index, isNotNull); | |
| 7174 expect(indexExpression.rightBracket, isNotNull); | |
| 7175 } | |
| 7176 | |
| 7177 void test_parseAssignableExpression_expression_question_dot() { | |
| 7178 createParser('(x)?.y'); | |
| 7179 Expression expression = parser.parseAssignableExpression(false); | |
| 7180 expectNotNullIfNoErrors(expression); | |
| 7181 listener.assertNoErrors(); | |
| 7182 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7183 PropertyAccess propertyAccess = expression; | |
| 7184 expect(propertyAccess.target, isNotNull); | |
| 7185 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | |
| 7186 expect(propertyAccess.propertyName, isNotNull); | |
| 7187 } | |
| 7188 | |
| 7189 void test_parseAssignableExpression_identifier() { | |
| 7190 createParser('x'); | |
| 7191 Expression expression = parser.parseAssignableExpression(false); | |
| 7192 expectNotNullIfNoErrors(expression); | |
| 7193 listener.assertNoErrors(); | |
| 7194 expect(expression, new isInstanceOf<SimpleIdentifier>()); | |
| 7195 SimpleIdentifier identifier = expression; | |
| 7196 expect(identifier, isNotNull); | |
| 7197 } | |
| 7198 | |
| 7199 void test_parseAssignableExpression_identifier_args_dot() { | |
| 7200 createParser('x(y).z'); | |
| 7201 Expression expression = parser.parseAssignableExpression(false); | |
| 7202 expectNotNullIfNoErrors(expression); | |
| 7203 listener.assertNoErrors(); | |
| 7204 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7205 PropertyAccess propertyAccess = expression; | |
| 7206 MethodInvocation invocation = propertyAccess.target as MethodInvocation; | |
| 7207 expect(invocation.methodName.name, "x"); | |
| 7208 expect(invocation.typeArguments, isNull); | |
| 7209 ArgumentList argumentList = invocation.argumentList; | |
| 7210 expect(argumentList, isNotNull); | |
| 7211 expect(argumentList.arguments, hasLength(1)); | |
| 7212 expect(propertyAccess.operator, isNotNull); | |
| 7213 expect(propertyAccess.propertyName, isNotNull); | |
| 7214 } | |
| 7215 | |
| 7216 void | |
| 7217 test_parseAssignableExpression_identifier_args_dot_typeParameterComments() { | |
| 7218 enableGenericMethodComments = true; | |
| 7219 createParser('x/*<E>*/(y).z'); | |
| 7220 Expression expression = parser.parseAssignableExpression(false); | |
| 7221 expectNotNullIfNoErrors(expression); | |
| 7222 listener.assertNoErrors(); | |
| 7223 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7224 PropertyAccess propertyAccess = expression; | |
| 7225 MethodInvocation invocation = propertyAccess.target as MethodInvocation; | |
| 7226 expect(invocation.methodName.name, "x"); | |
| 7227 expect(invocation.typeArguments, isNotNull); | |
| 7228 ArgumentList argumentList = invocation.argumentList; | |
| 7229 expect(argumentList, isNotNull); | |
| 7230 expect(argumentList.arguments, hasLength(1)); | |
| 7231 expect(propertyAccess.operator, isNotNull); | |
| 7232 expect(propertyAccess.propertyName, isNotNull); | |
| 7233 } | |
| 7234 | |
| 7235 void test_parseAssignableExpression_identifier_args_dot_typeParameters() { | |
| 7236 createParser('x<E>(y).z'); | |
| 7237 Expression expression = parser.parseAssignableExpression(false); | |
| 7238 expectNotNullIfNoErrors(expression); | |
| 7239 listener.assertNoErrors(); | |
| 7240 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7241 PropertyAccess propertyAccess = expression; | |
| 7242 MethodInvocation invocation = propertyAccess.target as MethodInvocation; | |
| 7243 expect(invocation.methodName.name, "x"); | |
| 7244 expect(invocation.typeArguments, isNotNull); | |
| 7245 ArgumentList argumentList = invocation.argumentList; | |
| 7246 expect(argumentList, isNotNull); | |
| 7247 expect(argumentList.arguments, hasLength(1)); | |
| 7248 expect(propertyAccess.operator, isNotNull); | |
| 7249 expect(propertyAccess.propertyName, isNotNull); | |
| 7250 } | |
| 7251 | |
| 7252 void test_parseAssignableExpression_identifier_dot() { | |
| 7253 createParser('x.y'); | |
| 7254 Expression expression = parser.parseAssignableExpression(false); | |
| 7255 expectNotNullIfNoErrors(expression); | |
| 7256 listener.assertNoErrors(); | |
| 7257 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7258 PropertyAccess propertyAccess = expression; | |
| 7259 expect(propertyAccess.target, isNotNull); | |
| 7260 expect(propertyAccess.operator, isNotNull); | |
| 7261 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 7262 expect(propertyAccess.propertyName, isNotNull); | |
| 7263 } | |
| 7264 | |
| 7265 void test_parseAssignableExpression_identifier_index() { | |
| 7266 createParser('x[y]'); | |
| 7267 Expression expression = parser.parseAssignableExpression(false); | |
| 7268 expectNotNullIfNoErrors(expression); | |
| 7269 listener.assertNoErrors(); | |
| 7270 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 7271 IndexExpression indexExpression = expression; | |
| 7272 expect(indexExpression.target, isNotNull); | |
| 7273 expect(indexExpression.leftBracket, isNotNull); | |
| 7274 expect(indexExpression.index, isNotNull); | |
| 7275 expect(indexExpression.rightBracket, isNotNull); | |
| 7276 } | |
| 7277 | |
| 7278 void test_parseAssignableExpression_identifier_question_dot() { | |
| 7279 createParser('x?.y'); | |
| 7280 Expression expression = parser.parseAssignableExpression(false); | |
| 7281 expectNotNullIfNoErrors(expression); | |
| 7282 listener.assertNoErrors(); | |
| 7283 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7284 PropertyAccess propertyAccess = expression; | |
| 7285 expect(propertyAccess.target, isNotNull); | |
| 7286 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | |
| 7287 expect(propertyAccess.propertyName, isNotNull); | |
| 7288 } | |
| 7289 | |
| 7290 void test_parseAssignableExpression_super_dot() { | |
| 7291 createParser('super.y'); | |
| 7292 Expression expression = parser.parseAssignableExpression(false); | |
| 7293 expectNotNullIfNoErrors(expression); | |
| 7294 listener.assertNoErrors(); | |
| 7295 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7296 PropertyAccess propertyAccess = expression; | |
| 7297 EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, | |
| 7298 SuperExpression, propertyAccess.target); | |
| 7299 expect(propertyAccess.operator, isNotNull); | |
| 7300 expect(propertyAccess.propertyName, isNotNull); | |
| 7301 } | |
| 7302 | |
| 7303 void test_parseAssignableExpression_super_index() { | |
| 7304 createParser('super[y]'); | |
| 7305 Expression expression = parser.parseAssignableExpression(false); | |
| 7306 expectNotNullIfNoErrors(expression); | |
| 7307 listener.assertNoErrors(); | |
| 7308 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 7309 IndexExpression indexExpression = expression; | |
| 7310 expect(indexExpression.target, new isInstanceOf<SuperExpression>()); | |
| 7311 expect(indexExpression.leftBracket, isNotNull); | |
| 7312 expect(indexExpression.index, isNotNull); | |
| 7313 expect(indexExpression.rightBracket, isNotNull); | |
| 7314 } | |
| 7315 | |
| 7316 void test_parseAssignableSelector_dot() { | |
| 7317 createParser('.x'); | |
| 7318 Expression expression = parser.parseAssignableSelector(null, true); | |
| 7319 expectNotNullIfNoErrors(expression); | |
| 7320 listener.assertNoErrors(); | |
| 7321 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7322 PropertyAccess propertyAccess = expression; | |
| 7323 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 7324 expect(propertyAccess.propertyName, isNotNull); | |
| 7325 } | |
| 7326 | |
| 7327 void test_parseAssignableSelector_index() { | |
| 7328 createParser('[x]'); | |
| 7329 Expression expression = parser.parseAssignableSelector(null, true); | |
| 7330 expectNotNullIfNoErrors(expression); | |
| 7331 listener.assertNoErrors(); | |
| 7332 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 7333 IndexExpression indexExpression = expression; | |
| 7334 expect(indexExpression.leftBracket, isNotNull); | |
| 7335 expect(indexExpression.index, isNotNull); | |
| 7336 expect(indexExpression.rightBracket, isNotNull); | |
| 7337 } | |
| 7338 | |
| 7339 void test_parseAssignableSelector_none() { | |
| 7340 createParser(';'); | |
| 7341 Expression expression = | |
| 7342 parser.parseAssignableSelector(astFactory.simpleIdentifier(null), true); | |
| 7343 expectNotNullIfNoErrors(expression); | |
| 7344 listener.assertNoErrors(); | |
| 7345 expect(expression, new isInstanceOf<SimpleIdentifier>()); | |
| 7346 SimpleIdentifier identifier = expression; | |
| 7347 expect(identifier, isNotNull); | |
| 7348 } | |
| 7349 | |
| 7350 void test_parseAssignableSelector_question_dot() { | |
| 7351 createParser('?.x'); | |
| 7352 Expression expression = parser.parseAssignableSelector(null, true); | |
| 7353 expectNotNullIfNoErrors(expression); | |
| 7354 listener.assertNoErrors(); | |
| 7355 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7356 PropertyAccess propertyAccess = expression; | |
| 7357 expect(propertyAccess.operator.type, TokenType.QUESTION_PERIOD); | |
| 7358 expect(propertyAccess.propertyName, isNotNull); | |
| 7359 } | |
| 7360 | |
| 7361 void test_parseAwaitExpression() { | |
| 7362 createParser('await x;'); | |
| 7363 AwaitExpression expression = parser.parseAwaitExpression(); | |
| 7364 expectNotNullIfNoErrors(expression); | |
| 7365 listener.assertNoErrors(); | |
| 7366 expect(expression.awaitKeyword, isNotNull); | |
| 7367 expect(expression.expression, isNotNull); | |
| 7368 } | |
| 7369 | |
| 7370 void test_parseBitwiseAndExpression_normal() { | |
| 7371 createParser('x & y'); | |
| 7372 Expression expression = parser.parseBitwiseAndExpression(); | |
| 7373 expectNotNullIfNoErrors(expression); | |
| 7374 listener.assertNoErrors(); | |
| 7375 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 7376 BinaryExpression binaryExpression = expression; | |
| 7377 expect(binaryExpression.leftOperand, isNotNull); | |
| 7378 expect(binaryExpression.operator, isNotNull); | |
| 7379 expect(binaryExpression.operator.type, TokenType.AMPERSAND); | |
| 7380 expect(binaryExpression.rightOperand, isNotNull); | |
| 7381 } | |
| 7382 | |
| 7383 void test_parseBitwiseAndExpression_super() { | |
| 7384 createParser('super & y'); | |
| 7385 Expression expression = parser.parseBitwiseAndExpression(); | |
| 7386 expectNotNullIfNoErrors(expression); | |
| 7387 listener.assertNoErrors(); | |
| 7388 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 7389 BinaryExpression binaryExpression = expression; | |
| 7390 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 7391 expect(binaryExpression.operator, isNotNull); | |
| 7392 expect(binaryExpression.operator.type, TokenType.AMPERSAND); | |
| 7393 expect(binaryExpression.rightOperand, isNotNull); | |
| 7394 } | |
| 7395 | |
| 7396 void test_parseBitwiseOrExpression_normal() { | |
| 7397 createParser('x | y'); | |
| 7398 Expression expression = parser.parseBitwiseOrExpression(); | |
| 7399 expectNotNullIfNoErrors(expression); | |
| 7400 listener.assertNoErrors(); | |
| 7401 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 7402 BinaryExpression binaryExpression = expression; | |
| 7403 expect(binaryExpression.leftOperand, isNotNull); | |
| 7404 expect(binaryExpression.operator, isNotNull); | |
| 7405 expect(binaryExpression.operator.type, TokenType.BAR); | |
| 7406 expect(binaryExpression.rightOperand, isNotNull); | |
| 7407 } | |
| 7408 | |
| 7409 void test_parseBitwiseOrExpression_super() { | |
| 7410 createParser('super | y'); | |
| 7411 Expression expression = parser.parseBitwiseOrExpression(); | |
| 7412 expectNotNullIfNoErrors(expression); | |
| 7413 listener.assertNoErrors(); | |
| 7414 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 7415 BinaryExpression binaryExpression = expression; | |
| 7416 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 7417 expect(binaryExpression.operator, isNotNull); | |
| 7418 expect(binaryExpression.operator.type, TokenType.BAR); | |
| 7419 expect(binaryExpression.rightOperand, isNotNull); | |
| 7420 } | |
| 7421 | |
| 7422 void test_parseBitwiseXorExpression_normal() { | |
| 7423 createParser('x ^ y'); | |
| 7424 Expression expression = parser.parseBitwiseXorExpression(); | |
| 7425 expectNotNullIfNoErrors(expression); | |
| 7426 listener.assertNoErrors(); | |
| 7427 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 7428 BinaryExpression binaryExpression = expression; | |
| 7429 expect(binaryExpression.leftOperand, isNotNull); | |
| 7430 expect(binaryExpression.operator, isNotNull); | |
| 7431 expect(binaryExpression.operator.type, TokenType.CARET); | |
| 7432 expect(binaryExpression.rightOperand, isNotNull); | |
| 7433 } | |
| 7434 | |
| 7435 void test_parseBitwiseXorExpression_super() { | |
| 7436 createParser('super ^ y'); | |
| 7437 Expression expression = parser.parseBitwiseXorExpression(); | |
| 7438 expectNotNullIfNoErrors(expression); | |
| 7439 listener.assertNoErrors(); | |
| 7440 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 7441 BinaryExpression binaryExpression = expression; | |
| 7442 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 7443 expect(binaryExpression.operator, isNotNull); | |
| 7444 expect(binaryExpression.operator.type, TokenType.CARET); | |
| 7445 expect(binaryExpression.rightOperand, isNotNull); | |
| 7446 } | |
| 7447 | |
| 7448 void test_parseBlock_empty() { | 9855 void test_parseBlock_empty() { |
| 7449 createParser('{}'); | 9856 createParser('{}'); |
| 7450 Block block = parser.parseBlock(); | 9857 Block block = parser.parseBlock(); |
| 7451 expectNotNullIfNoErrors(block); | 9858 expectNotNullIfNoErrors(block); |
| 7452 listener.assertNoErrors(); | 9859 listener.assertNoErrors(); |
| 7453 expect(block.leftBracket, isNotNull); | 9860 expect(block.leftBracket, isNotNull); |
| 7454 expect(block.statements, hasLength(0)); | 9861 expect(block.statements, hasLength(0)); |
| 7455 expect(block.rightBracket, isNotNull); | 9862 expect(block.rightBracket, isNotNull); |
| 7456 } | 9863 } |
| 7457 | 9864 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 7478 void test_parseBreakStatement_noLabel() { | 9885 void test_parseBreakStatement_noLabel() { |
| 7479 createParser('break;'); | 9886 createParser('break;'); |
| 7480 BreakStatement statement = parser.parseBreakStatement(); | 9887 BreakStatement statement = parser.parseBreakStatement(); |
| 7481 expectNotNullIfNoErrors(statement); | 9888 expectNotNullIfNoErrors(statement); |
| 7482 listener.assertErrorsWithCodes([ParserErrorCode.BREAK_OUTSIDE_OF_LOOP]); | 9889 listener.assertErrorsWithCodes([ParserErrorCode.BREAK_OUTSIDE_OF_LOOP]); |
| 7483 expect(statement.breakKeyword, isNotNull); | 9890 expect(statement.breakKeyword, isNotNull); |
| 7484 expect(statement.label, isNull); | 9891 expect(statement.label, isNull); |
| 7485 expect(statement.semicolon, isNotNull); | 9892 expect(statement.semicolon, isNotNull); |
| 7486 } | 9893 } |
| 7487 | 9894 |
| 7488 void test_parseCascadeSection_i() { | |
| 7489 createParser('..[i]'); | |
| 7490 Expression expression = parser.parseCascadeSection(); | |
| 7491 expectNotNullIfNoErrors(expression); | |
| 7492 listener.assertNoErrors(); | |
| 7493 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 7494 IndexExpression section = expression; | |
| 7495 expect(section.target, isNull); | |
| 7496 expect(section.leftBracket, isNotNull); | |
| 7497 expect(section.index, isNotNull); | |
| 7498 expect(section.rightBracket, isNotNull); | |
| 7499 } | |
| 7500 | |
| 7501 void test_parseCascadeSection_ia() { | |
| 7502 createParser('..[i](b)'); | |
| 7503 Expression expression = parser.parseCascadeSection(); | |
| 7504 expectNotNullIfNoErrors(expression); | |
| 7505 listener.assertNoErrors(); | |
| 7506 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7507 FunctionExpressionInvocation section = expression; | |
| 7508 expect(section.function, new isInstanceOf<IndexExpression>()); | |
| 7509 expect(section.typeArguments, isNull); | |
| 7510 expect(section.argumentList, isNotNull); | |
| 7511 } | |
| 7512 | |
| 7513 void test_parseCascadeSection_ia_typeArgumentComments() { | |
| 7514 enableGenericMethodComments = true; | |
| 7515 createParser('..[i]/*<E>*/(b)'); | |
| 7516 Expression expression = parser.parseCascadeSection(); | |
| 7517 expectNotNullIfNoErrors(expression); | |
| 7518 listener.assertNoErrors(); | |
| 7519 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7520 FunctionExpressionInvocation section = expression; | |
| 7521 expect(section.function, new isInstanceOf<IndexExpression>()); | |
| 7522 expect(section.typeArguments, isNotNull); | |
| 7523 expect(section.argumentList, isNotNull); | |
| 7524 } | |
| 7525 | |
| 7526 void test_parseCascadeSection_ia_typeArguments() { | |
| 7527 createParser('..[i]<E>(b)'); | |
| 7528 Expression expression = parser.parseCascadeSection(); | |
| 7529 expectNotNullIfNoErrors(expression); | |
| 7530 listener.assertNoErrors(); | |
| 7531 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7532 FunctionExpressionInvocation section = expression; | |
| 7533 expect(section.function, new isInstanceOf<IndexExpression>()); | |
| 7534 expect(section.typeArguments, isNotNull); | |
| 7535 expect(section.argumentList, isNotNull); | |
| 7536 } | |
| 7537 | |
| 7538 void test_parseCascadeSection_ii() { | |
| 7539 createParser('..a(b).c(d)'); | |
| 7540 Expression expression = parser.parseCascadeSection(); | |
| 7541 expectNotNullIfNoErrors(expression); | |
| 7542 listener.assertNoErrors(); | |
| 7543 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 7544 MethodInvocation section = expression; | |
| 7545 expect(section.target, new isInstanceOf<MethodInvocation>()); | |
| 7546 expect(section.operator, isNotNull); | |
| 7547 expect(section.methodName, isNotNull); | |
| 7548 expect(section.typeArguments, isNull); | |
| 7549 expect(section.argumentList, isNotNull); | |
| 7550 expect(section.argumentList.arguments, hasLength(1)); | |
| 7551 } | |
| 7552 | |
| 7553 void test_parseCascadeSection_ii_typeArgumentComments() { | |
| 7554 enableGenericMethodComments = true; | |
| 7555 createParser('..a/*<E>*/(b).c/*<F>*/(d)'); | |
| 7556 Expression expression = parser.parseCascadeSection(); | |
| 7557 expectNotNullIfNoErrors(expression); | |
| 7558 listener.assertNoErrors(); | |
| 7559 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 7560 MethodInvocation section = expression; | |
| 7561 expect(section.target, new isInstanceOf<MethodInvocation>()); | |
| 7562 expect(section.operator, isNotNull); | |
| 7563 expect(section.methodName, isNotNull); | |
| 7564 expect(section.typeArguments, isNotNull); | |
| 7565 expect(section.argumentList, isNotNull); | |
| 7566 expect(section.argumentList.arguments, hasLength(1)); | |
| 7567 } | |
| 7568 | |
| 7569 void test_parseCascadeSection_ii_typeArguments() { | |
| 7570 createParser('..a<E>(b).c<F>(d)'); | |
| 7571 Expression expression = parser.parseCascadeSection(); | |
| 7572 expectNotNullIfNoErrors(expression); | |
| 7573 listener.assertNoErrors(); | |
| 7574 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 7575 MethodInvocation section = expression; | |
| 7576 expect(section.target, new isInstanceOf<MethodInvocation>()); | |
| 7577 expect(section.operator, isNotNull); | |
| 7578 expect(section.methodName, isNotNull); | |
| 7579 expect(section.typeArguments, isNotNull); | |
| 7580 expect(section.argumentList, isNotNull); | |
| 7581 expect(section.argumentList.arguments, hasLength(1)); | |
| 7582 } | |
| 7583 | |
| 7584 void test_parseCascadeSection_p() { | |
| 7585 createParser('..a'); | |
| 7586 Expression expression = parser.parseCascadeSection(); | |
| 7587 expectNotNullIfNoErrors(expression); | |
| 7588 listener.assertNoErrors(); | |
| 7589 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7590 PropertyAccess section = expression; | |
| 7591 expect(section.target, isNull); | |
| 7592 expect(section.operator, isNotNull); | |
| 7593 expect(section.propertyName, isNotNull); | |
| 7594 } | |
| 7595 | |
| 7596 void test_parseCascadeSection_p_assign() { | |
| 7597 createParser('..a = 3'); | |
| 7598 Expression expression = parser.parseCascadeSection(); | |
| 7599 expectNotNullIfNoErrors(expression); | |
| 7600 listener.assertNoErrors(); | |
| 7601 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 7602 AssignmentExpression section = expression; | |
| 7603 expect(section.leftHandSide, isNotNull); | |
| 7604 expect(section.operator, isNotNull); | |
| 7605 Expression rhs = section.rightHandSide; | |
| 7606 expect(rhs, isNotNull); | |
| 7607 } | |
| 7608 | |
| 7609 void test_parseCascadeSection_p_assign_withCascade() { | |
| 7610 createParser('..a = 3..m()'); | |
| 7611 Expression expression = parser.parseCascadeSection(); | |
| 7612 expectNotNullIfNoErrors(expression); | |
| 7613 listener.assertNoErrors(); | |
| 7614 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 7615 AssignmentExpression section = expression; | |
| 7616 expect(section.leftHandSide, isNotNull); | |
| 7617 expect(section.operator, isNotNull); | |
| 7618 Expression rhs = section.rightHandSide; | |
| 7619 EngineTestCase.assertInstanceOf( | |
| 7620 (obj) => obj is IntegerLiteral, IntegerLiteral, rhs); | |
| 7621 } | |
| 7622 | |
| 7623 void test_parseCascadeSection_p_assign_withCascade_typeArgumentComments() { | |
| 7624 enableGenericMethodComments = true; | |
| 7625 createParser('..a = 3..m/*<E>*/()'); | |
| 7626 Expression expression = parser.parseCascadeSection(); | |
| 7627 expectNotNullIfNoErrors(expression); | |
| 7628 listener.assertNoErrors(); | |
| 7629 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 7630 AssignmentExpression section = expression; | |
| 7631 expect(section.leftHandSide, isNotNull); | |
| 7632 expect(section.operator, isNotNull); | |
| 7633 Expression rhs = section.rightHandSide; | |
| 7634 EngineTestCase.assertInstanceOf( | |
| 7635 (obj) => obj is IntegerLiteral, IntegerLiteral, rhs); | |
| 7636 } | |
| 7637 | |
| 7638 void test_parseCascadeSection_p_assign_withCascade_typeArguments() { | |
| 7639 createParser('..a = 3..m<E>()'); | |
| 7640 Expression expression = parser.parseCascadeSection(); | |
| 7641 expectNotNullIfNoErrors(expression); | |
| 7642 listener.assertNoErrors(); | |
| 7643 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 7644 AssignmentExpression section = expression; | |
| 7645 expect(section.leftHandSide, isNotNull); | |
| 7646 expect(section.operator, isNotNull); | |
| 7647 Expression rhs = section.rightHandSide; | |
| 7648 EngineTestCase.assertInstanceOf( | |
| 7649 (obj) => obj is IntegerLiteral, IntegerLiteral, rhs); | |
| 7650 } | |
| 7651 | |
| 7652 void test_parseCascadeSection_p_builtIn() { | |
| 7653 createParser('..as'); | |
| 7654 Expression expression = parser.parseCascadeSection(); | |
| 7655 expectNotNullIfNoErrors(expression); | |
| 7656 listener.assertNoErrors(); | |
| 7657 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7658 PropertyAccess section = expression; | |
| 7659 expect(section.target, isNull); | |
| 7660 expect(section.operator, isNotNull); | |
| 7661 expect(section.propertyName, isNotNull); | |
| 7662 } | |
| 7663 | |
| 7664 void test_parseCascadeSection_pa() { | |
| 7665 createParser('..a(b)'); | |
| 7666 Expression expression = parser.parseCascadeSection(); | |
| 7667 expectNotNullIfNoErrors(expression); | |
| 7668 listener.assertNoErrors(); | |
| 7669 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 7670 MethodInvocation section = expression; | |
| 7671 expect(section.target, isNull); | |
| 7672 expect(section.operator, isNotNull); | |
| 7673 expect(section.methodName, isNotNull); | |
| 7674 expect(section.typeArguments, isNull); | |
| 7675 expect(section.argumentList, isNotNull); | |
| 7676 expect(section.argumentList.arguments, hasLength(1)); | |
| 7677 } | |
| 7678 | |
| 7679 void test_parseCascadeSection_pa_typeArgumentComments() { | |
| 7680 enableGenericMethodComments = true; | |
| 7681 createParser('..a/*<E>*/(b)'); | |
| 7682 Expression expression = parser.parseCascadeSection(); | |
| 7683 expectNotNullIfNoErrors(expression); | |
| 7684 listener.assertNoErrors(); | |
| 7685 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 7686 MethodInvocation section = expression; | |
| 7687 expect(section.target, isNull); | |
| 7688 expect(section.operator, isNotNull); | |
| 7689 expect(section.methodName, isNotNull); | |
| 7690 expect(section.typeArguments, isNotNull); | |
| 7691 expect(section.argumentList, isNotNull); | |
| 7692 expect(section.argumentList.arguments, hasLength(1)); | |
| 7693 } | |
| 7694 | |
| 7695 void test_parseCascadeSection_pa_typeArguments() { | |
| 7696 createParser('..a<E>(b)'); | |
| 7697 Expression expression = parser.parseCascadeSection(); | |
| 7698 expectNotNullIfNoErrors(expression); | |
| 7699 listener.assertNoErrors(); | |
| 7700 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 7701 MethodInvocation section = expression; | |
| 7702 expect(section.target, isNull); | |
| 7703 expect(section.operator, isNotNull); | |
| 7704 expect(section.methodName, isNotNull); | |
| 7705 expect(section.typeArguments, isNotNull); | |
| 7706 expect(section.argumentList, isNotNull); | |
| 7707 expect(section.argumentList.arguments, hasLength(1)); | |
| 7708 } | |
| 7709 | |
| 7710 void test_parseCascadeSection_paa() { | |
| 7711 createParser('..a(b)(c)'); | |
| 7712 Expression expression = parser.parseCascadeSection(); | |
| 7713 expectNotNullIfNoErrors(expression); | |
| 7714 listener.assertNoErrors(); | |
| 7715 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7716 FunctionExpressionInvocation section = expression; | |
| 7717 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 7718 expect(section.typeArguments, isNull); | |
| 7719 expect(section.argumentList, isNotNull); | |
| 7720 expect(section.argumentList.arguments, hasLength(1)); | |
| 7721 } | |
| 7722 | |
| 7723 void test_parseCascadeSection_paa_typeArgumentComments() { | |
| 7724 enableGenericMethodComments = true; | |
| 7725 createParser('..a/*<E>*/(b)/*<F>*/(c)'); | |
| 7726 Expression expression = parser.parseCascadeSection(); | |
| 7727 expectNotNullIfNoErrors(expression); | |
| 7728 listener.assertNoErrors(); | |
| 7729 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7730 FunctionExpressionInvocation section = expression; | |
| 7731 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 7732 expect(section.typeArguments, isNotNull); | |
| 7733 expect(section.argumentList, isNotNull); | |
| 7734 expect(section.argumentList.arguments, hasLength(1)); | |
| 7735 } | |
| 7736 | |
| 7737 void test_parseCascadeSection_paa_typeArguments() { | |
| 7738 createParser('..a<E>(b)<F>(c)'); | |
| 7739 Expression expression = parser.parseCascadeSection(); | |
| 7740 expectNotNullIfNoErrors(expression); | |
| 7741 listener.assertNoErrors(); | |
| 7742 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7743 FunctionExpressionInvocation section = expression; | |
| 7744 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 7745 expect(section.typeArguments, isNotNull); | |
| 7746 expect(section.argumentList, isNotNull); | |
| 7747 expect(section.argumentList.arguments, hasLength(1)); | |
| 7748 } | |
| 7749 | |
| 7750 void test_parseCascadeSection_paapaa() { | |
| 7751 createParser('..a(b)(c).d(e)(f)'); | |
| 7752 Expression expression = parser.parseCascadeSection(); | |
| 7753 expectNotNullIfNoErrors(expression); | |
| 7754 listener.assertNoErrors(); | |
| 7755 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7756 FunctionExpressionInvocation section = expression; | |
| 7757 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 7758 expect(section.typeArguments, isNull); | |
| 7759 expect(section.argumentList, isNotNull); | |
| 7760 expect(section.argumentList.arguments, hasLength(1)); | |
| 7761 } | |
| 7762 | |
| 7763 void test_parseCascadeSection_paapaa_typeArgumentComments() { | |
| 7764 enableGenericMethodComments = true; | |
| 7765 createParser('..a/*<E>*/(b)/*<F>*/(c).d/*<G>*/(e)/*<H>*/(f)'); | |
| 7766 Expression expression = parser.parseCascadeSection(); | |
| 7767 expectNotNullIfNoErrors(expression); | |
| 7768 listener.assertNoErrors(); | |
| 7769 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7770 FunctionExpressionInvocation section = expression; | |
| 7771 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 7772 expect(section.typeArguments, isNotNull); | |
| 7773 expect(section.argumentList, isNotNull); | |
| 7774 expect(section.argumentList.arguments, hasLength(1)); | |
| 7775 } | |
| 7776 | |
| 7777 void test_parseCascadeSection_paapaa_typeArguments() { | |
| 7778 createParser('..a<E>(b)<F>(c).d<G>(e)<H>(f)'); | |
| 7779 Expression expression = parser.parseCascadeSection(); | |
| 7780 expectNotNullIfNoErrors(expression); | |
| 7781 listener.assertNoErrors(); | |
| 7782 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 7783 FunctionExpressionInvocation section = expression; | |
| 7784 expect(section.function, new isInstanceOf<MethodInvocation>()); | |
| 7785 expect(section.typeArguments, isNotNull); | |
| 7786 expect(section.argumentList, isNotNull); | |
| 7787 expect(section.argumentList.arguments, hasLength(1)); | |
| 7788 } | |
| 7789 | |
| 7790 void test_parseCascadeSection_pap() { | |
| 7791 createParser('..a(b).c'); | |
| 7792 Expression expression = parser.parseCascadeSection(); | |
| 7793 expectNotNullIfNoErrors(expression); | |
| 7794 listener.assertNoErrors(); | |
| 7795 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7796 PropertyAccess section = expression; | |
| 7797 expect(section.target, isNotNull); | |
| 7798 expect(section.operator, isNotNull); | |
| 7799 expect(section.propertyName, isNotNull); | |
| 7800 } | |
| 7801 | |
| 7802 void test_parseCascadeSection_pap_typeArgumentComments() { | |
| 7803 enableGenericMethodComments = true; | |
| 7804 createParser('..a/*<E>*/(b).c'); | |
| 7805 Expression expression = parser.parseCascadeSection(); | |
| 7806 expectNotNullIfNoErrors(expression); | |
| 7807 listener.assertNoErrors(); | |
| 7808 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7809 PropertyAccess section = expression; | |
| 7810 expect(section.target, isNotNull); | |
| 7811 expect(section.operator, isNotNull); | |
| 7812 expect(section.propertyName, isNotNull); | |
| 7813 } | |
| 7814 | |
| 7815 void test_parseCascadeSection_pap_typeArguments() { | |
| 7816 createParser('..a<E>(b).c'); | |
| 7817 Expression expression = parser.parseCascadeSection(); | |
| 7818 expectNotNullIfNoErrors(expression); | |
| 7819 listener.assertNoErrors(); | |
| 7820 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 7821 PropertyAccess section = expression; | |
| 7822 expect(section.target, isNotNull); | |
| 7823 expect(section.operator, isNotNull); | |
| 7824 expect(section.propertyName, isNotNull); | |
| 7825 } | |
| 7826 | |
| 7827 void test_parseCombinator_hide() { | 9895 void test_parseCombinator_hide() { |
| 7828 createParser('hide a;'); | 9896 createParser('hide a;'); |
| 7829 Combinator combinator = parser.parseCombinator(); | 9897 Combinator combinator = parser.parseCombinator(); |
| 7830 expectNotNullIfNoErrors(combinator); | 9898 expectNotNullIfNoErrors(combinator); |
| 7831 listener.assertNoErrors(); | 9899 listener.assertNoErrors(); |
| 7832 expect(combinator, new isInstanceOf<HideCombinator>()); | 9900 expect(combinator, new isInstanceOf<HideCombinator>()); |
| 7833 HideCombinator hideCombinator = combinator; | 9901 HideCombinator hideCombinator = combinator; |
| 7834 expect(hideCombinator.keyword, isNotNull); | 9902 expect(hideCombinator.keyword, isNotNull); |
| 7835 expect(hideCombinator.hiddenNames, hasLength(1)); | 9903 expect(hideCombinator.hiddenNames, hasLength(1)); |
| 7836 } | 9904 } |
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8417 List<CommentReference> references = parser.parseCommentReferences(tokens); | 10485 List<CommentReference> references = parser.parseCommentReferences(tokens); |
| 8418 expectNotNullIfNoErrors(references); | 10486 expectNotNullIfNoErrors(references); |
| 8419 listener.assertNoErrors(); | 10487 listener.assertNoErrors(); |
| 8420 expect(references, hasLength(1)); | 10488 expect(references, hasLength(1)); |
| 8421 CommentReference reference = references[0]; | 10489 CommentReference reference = references[0]; |
| 8422 expect(reference, isNotNull); | 10490 expect(reference, isNotNull); |
| 8423 expect(reference.identifier, isNotNull); | 10491 expect(reference.identifier, isNotNull); |
| 8424 expect(reference.offset, 15); | 10492 expect(reference.offset, 15); |
| 8425 } | 10493 } |
| 8426 | 10494 |
| 8427 void test_parseConditionalExpression() { | |
| 8428 createParser('x ? y : z'); | |
| 8429 ConditionalExpression expression = parser.parseConditionalExpression(); | |
| 8430 expectNotNullIfNoErrors(expression); | |
| 8431 listener.assertNoErrors(); | |
| 8432 expect(expression.condition, isNotNull); | |
| 8433 expect(expression.question, isNotNull); | |
| 8434 expect(expression.thenExpression, isNotNull); | |
| 8435 expect(expression.colon, isNotNull); | |
| 8436 expect(expression.elseExpression, isNotNull); | |
| 8437 } | |
| 8438 | |
| 8439 void test_parseConfiguration_noOperator_dottedIdentifier() { | 10495 void test_parseConfiguration_noOperator_dottedIdentifier() { |
| 8440 createParser("if (a.b) 'c.dart'"); | 10496 createParser("if (a.b) 'c.dart'"); |
| 8441 Configuration configuration = parser.parseConfiguration(); | 10497 Configuration configuration = parser.parseConfiguration(); |
| 8442 expectNotNullIfNoErrors(configuration); | 10498 expectNotNullIfNoErrors(configuration); |
| 8443 listener.assertNoErrors(); | 10499 listener.assertNoErrors(); |
| 8444 expect(configuration.ifKeyword, isNotNull); | 10500 expect(configuration.ifKeyword, isNotNull); |
| 8445 expect(configuration.leftParenthesis, isNotNull); | 10501 expect(configuration.leftParenthesis, isNotNull); |
| 8446 expectDottedName(configuration.name, ["a", "b"]); | 10502 expectDottedName(configuration.name, ["a", "b"]); |
| 8447 expect(configuration.equalToken, isNull); | 10503 expect(configuration.equalToken, isNull); |
| 8448 expect(configuration.value, isNull); | 10504 expect(configuration.value, isNull); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8485 listener.assertNoErrors(); | 10541 listener.assertNoErrors(); |
| 8486 expect(configuration.ifKeyword, isNotNull); | 10542 expect(configuration.ifKeyword, isNotNull); |
| 8487 expect(configuration.leftParenthesis, isNotNull); | 10543 expect(configuration.leftParenthesis, isNotNull); |
| 8488 expectDottedName(configuration.name, ["a"]); | 10544 expectDottedName(configuration.name, ["a"]); |
| 8489 expect(configuration.equalToken, isNotNull); | 10545 expect(configuration.equalToken, isNotNull); |
| 8490 expect(configuration.value, isNotNull); | 10546 expect(configuration.value, isNotNull); |
| 8491 expect(configuration.rightParenthesis, isNotNull); | 10547 expect(configuration.rightParenthesis, isNotNull); |
| 8492 expect(configuration.uri, isNotNull); | 10548 expect(configuration.uri, isNotNull); |
| 8493 } | 10549 } |
| 8494 | 10550 |
| 8495 void test_parseConstExpression_instanceCreation() { | |
| 8496 createParser('const A()'); | |
| 8497 Expression expression = parser.parseConstExpression(); | |
| 8498 expectNotNullIfNoErrors(expression); | |
| 8499 listener.assertNoErrors(); | |
| 8500 expect(expression, new isInstanceOf<InstanceCreationExpression>()); | |
| 8501 InstanceCreationExpression instanceCreation = expression; | |
| 8502 expect(instanceCreation.keyword, isNotNull); | |
| 8503 ConstructorName name = instanceCreation.constructorName; | |
| 8504 expect(name, isNotNull); | |
| 8505 expect(name.type, isNotNull); | |
| 8506 expect(name.period, isNull); | |
| 8507 expect(name.name, isNull); | |
| 8508 expect(instanceCreation.argumentList, isNotNull); | |
| 8509 } | |
| 8510 | |
| 8511 void test_parseConstExpression_listLiteral_typed() { | |
| 8512 createParser('const <A> []'); | |
| 8513 Expression expression = parser.parseConstExpression(); | |
| 8514 expectNotNullIfNoErrors(expression); | |
| 8515 listener.assertNoErrors(); | |
| 8516 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 8517 ListLiteral literal = expression; | |
| 8518 expect(literal.constKeyword, isNotNull); | |
| 8519 expect(literal.typeArguments, isNotNull); | |
| 8520 expect(literal.leftBracket, isNotNull); | |
| 8521 expect(literal.elements, hasLength(0)); | |
| 8522 expect(literal.rightBracket, isNotNull); | |
| 8523 } | |
| 8524 | |
| 8525 void test_parseConstExpression_listLiteral_typed_genericComment() { | |
| 8526 enableGenericMethodComments = true; | |
| 8527 createParser('const /*<A>*/ []'); | |
| 8528 Expression expression = parser.parseConstExpression(); | |
| 8529 expectNotNullIfNoErrors(expression); | |
| 8530 listener.assertNoErrors(); | |
| 8531 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 8532 ListLiteral literal = expression; | |
| 8533 expect(literal.constKeyword, isNotNull); | |
| 8534 expect(literal.typeArguments, isNotNull); | |
| 8535 expect(literal.leftBracket, isNotNull); | |
| 8536 expect(literal.elements, hasLength(0)); | |
| 8537 expect(literal.rightBracket, isNotNull); | |
| 8538 } | |
| 8539 | |
| 8540 void test_parseConstExpression_listLiteral_untyped() { | |
| 8541 createParser('const []'); | |
| 8542 Expression expression = parser.parseConstExpression(); | |
| 8543 expectNotNullIfNoErrors(expression); | |
| 8544 listener.assertNoErrors(); | |
| 8545 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 8546 ListLiteral literal = expression; | |
| 8547 expect(literal.constKeyword, isNotNull); | |
| 8548 expect(literal.typeArguments, isNull); | |
| 8549 expect(literal.leftBracket, isNotNull); | |
| 8550 expect(literal.elements, hasLength(0)); | |
| 8551 expect(literal.rightBracket, isNotNull); | |
| 8552 } | |
| 8553 | |
| 8554 void test_parseConstExpression_mapLiteral_typed() { | |
| 8555 createParser('const <A, B> {}'); | |
| 8556 Expression expression = parser.parseConstExpression(); | |
| 8557 expectNotNullIfNoErrors(expression); | |
| 8558 listener.assertNoErrors(); | |
| 8559 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 8560 MapLiteral literal = expression; | |
| 8561 expect(literal.leftBracket, isNotNull); | |
| 8562 expect(literal.entries, hasLength(0)); | |
| 8563 expect(literal.rightBracket, isNotNull); | |
| 8564 expect(literal.typeArguments, isNotNull); | |
| 8565 } | |
| 8566 | |
| 8567 void test_parseConstExpression_mapLiteral_typed_genericComment() { | |
| 8568 enableGenericMethodComments = true; | |
| 8569 createParser('const /*<A, B>*/ {}'); | |
| 8570 Expression expression = parser.parseConstExpression(); | |
| 8571 expectNotNullIfNoErrors(expression); | |
| 8572 listener.assertNoErrors(); | |
| 8573 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 8574 MapLiteral literal = expression; | |
| 8575 expect(literal.leftBracket, isNotNull); | |
| 8576 expect(literal.entries, hasLength(0)); | |
| 8577 expect(literal.rightBracket, isNotNull); | |
| 8578 expect(literal.typeArguments, isNotNull); | |
| 8579 } | |
| 8580 | |
| 8581 void test_parseConstExpression_mapLiteral_untyped() { | |
| 8582 createParser('const {}'); | |
| 8583 Expression expression = parser.parseConstExpression(); | |
| 8584 expectNotNullIfNoErrors(expression); | |
| 8585 listener.assertNoErrors(); | |
| 8586 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 8587 MapLiteral literal = expression; | |
| 8588 expect(literal.leftBracket, isNotNull); | |
| 8589 expect(literal.entries, hasLength(0)); | |
| 8590 expect(literal.rightBracket, isNotNull); | |
| 8591 expect(literal.typeArguments, isNull); | |
| 8592 } | |
| 8593 | |
| 8594 void test_parseConstructor() { | 10551 void test_parseConstructor() { |
| 8595 // TODO(brianwilkerson) Implement tests for this method. | 10552 // TODO(brianwilkerson) Implement tests for this method. |
| 8596 } | 10553 } |
| 8597 | 10554 |
| 8598 void test_parseConstructorName_named_noPrefix() { | 10555 void test_parseConstructorName_named_noPrefix() { |
| 8599 createParser('A.n;'); | 10556 createParser('A.n;'); |
| 8600 ConstructorName name = parser.parseConstructorName(); | 10557 ConstructorName name = parser.parseConstructorName(); |
| 8601 expectNotNullIfNoErrors(name); | 10558 expectNotNullIfNoErrors(name); |
| 8602 listener.assertNoErrors(); | 10559 listener.assertNoErrors(); |
| 8603 expect(name.type, isNotNull); | 10560 expect(name.type, isNotNull); |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8724 } | 10681 } |
| 8725 | 10682 |
| 8726 void test_parseEmptyStatement() { | 10683 void test_parseEmptyStatement() { |
| 8727 createParser(';'); | 10684 createParser(';'); |
| 8728 EmptyStatement statement = parser.parseEmptyStatement(); | 10685 EmptyStatement statement = parser.parseEmptyStatement(); |
| 8729 expectNotNullIfNoErrors(statement); | 10686 expectNotNullIfNoErrors(statement); |
| 8730 listener.assertNoErrors(); | 10687 listener.assertNoErrors(); |
| 8731 expect(statement.semicolon, isNotNull); | 10688 expect(statement.semicolon, isNotNull); |
| 8732 } | 10689 } |
| 8733 | 10690 |
| 8734 void test_parseEqualityExpression_normal() { | |
| 8735 createParser('x == y'); | |
| 8736 BinaryExpression expression = parser.parseEqualityExpression(); | |
| 8737 expectNotNullIfNoErrors(expression); | |
| 8738 listener.assertNoErrors(); | |
| 8739 expect(expression.leftOperand, isNotNull); | |
| 8740 expect(expression.operator, isNotNull); | |
| 8741 expect(expression.operator.type, TokenType.EQ_EQ); | |
| 8742 expect(expression.rightOperand, isNotNull); | |
| 8743 } | |
| 8744 | |
| 8745 void test_parseEqualityExpression_super() { | |
| 8746 createParser('super == y'); | |
| 8747 BinaryExpression expression = parser.parseEqualityExpression(); | |
| 8748 expectNotNullIfNoErrors(expression); | |
| 8749 listener.assertNoErrors(); | |
| 8750 expect(expression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 8751 expect(expression.operator, isNotNull); | |
| 8752 expect(expression.operator.type, TokenType.EQ_EQ); | |
| 8753 expect(expression.rightOperand, isNotNull); | |
| 8754 } | |
| 8755 | |
| 8756 void test_parseExpression_assign() { | |
| 8757 // TODO(brianwilkerson) Implement more tests for this method. | |
| 8758 Expression expression = parseExpression('x = y'); | |
| 8759 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 8760 AssignmentExpression assignmentExpression = expression; | |
| 8761 expect(assignmentExpression.leftHandSide, isNotNull); | |
| 8762 expect(assignmentExpression.operator, isNotNull); | |
| 8763 expect(assignmentExpression.operator.type, TokenType.EQ); | |
| 8764 expect(assignmentExpression.rightHandSide, isNotNull); | |
| 8765 } | |
| 8766 | |
| 8767 void test_parseExpression_assign_compound() { | |
| 8768 enableLazyAssignmentOperators = true; | |
| 8769 Expression expression = parseExpression('x ||= y'); | |
| 8770 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 8771 AssignmentExpression assignmentExpression = expression; | |
| 8772 expect(assignmentExpression.leftHandSide, isNotNull); | |
| 8773 expect(assignmentExpression.operator, isNotNull); | |
| 8774 expect(assignmentExpression.operator.type, TokenType.BAR_BAR_EQ); | |
| 8775 expect(assignmentExpression.rightHandSide, isNotNull); | |
| 8776 } | |
| 8777 | |
| 8778 void test_parseExpression_comparison() { | |
| 8779 Expression expression = parseExpression('--a.b == c'); | |
| 8780 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 8781 BinaryExpression binaryExpression = expression; | |
| 8782 expect(binaryExpression.leftOperand, isNotNull); | |
| 8783 expect(binaryExpression.operator, isNotNull); | |
| 8784 expect(binaryExpression.operator.type, TokenType.EQ_EQ); | |
| 8785 expect(binaryExpression.rightOperand, isNotNull); | |
| 8786 } | |
| 8787 | |
| 8788 void test_parseExpression_function_async() { | |
| 8789 Expression expression = parseExpression('() async {}'); | |
| 8790 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 8791 FunctionExpression functionExpression = expression; | |
| 8792 expect(functionExpression.body, isNotNull); | |
| 8793 expect(functionExpression.body.isAsynchronous, isTrue); | |
| 8794 expect(functionExpression.body.isGenerator, isFalse); | |
| 8795 expect(functionExpression.parameters, isNotNull); | |
| 8796 } | |
| 8797 | |
| 8798 void test_parseExpression_function_asyncStar() { | |
| 8799 Expression expression = parseExpression('() async* {}'); | |
| 8800 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 8801 FunctionExpression functionExpression = expression; | |
| 8802 expect(functionExpression.body, isNotNull); | |
| 8803 expect(functionExpression.body.isAsynchronous, isTrue); | |
| 8804 expect(functionExpression.body.isGenerator, isTrue); | |
| 8805 expect(functionExpression.parameters, isNotNull); | |
| 8806 } | |
| 8807 | |
| 8808 void test_parseExpression_function_sync() { | |
| 8809 Expression expression = parseExpression('() {}'); | |
| 8810 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 8811 FunctionExpression functionExpression = expression; | |
| 8812 expect(functionExpression.body, isNotNull); | |
| 8813 expect(functionExpression.body.isAsynchronous, isFalse); | |
| 8814 expect(functionExpression.body.isGenerator, isFalse); | |
| 8815 expect(functionExpression.parameters, isNotNull); | |
| 8816 } | |
| 8817 | |
| 8818 void test_parseExpression_function_syncStar() { | |
| 8819 Expression expression = parseExpression('() sync* {}'); | |
| 8820 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 8821 FunctionExpression functionExpression = expression; | |
| 8822 expect(functionExpression.body, isNotNull); | |
| 8823 expect(functionExpression.body.isAsynchronous, isFalse); | |
| 8824 expect(functionExpression.body.isGenerator, isTrue); | |
| 8825 expect(functionExpression.parameters, isNotNull); | |
| 8826 } | |
| 8827 | |
| 8828 void test_parseExpression_invokeFunctionExpression() { | |
| 8829 Expression expression = parseExpression('(a) {return a + a;} (3)'); | |
| 8830 expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); | |
| 8831 FunctionExpressionInvocation invocation = expression; | |
| 8832 expect(invocation.function, new isInstanceOf<FunctionExpression>()); | |
| 8833 FunctionExpression functionExpression = | |
| 8834 invocation.function as FunctionExpression; | |
| 8835 expect(functionExpression.parameters, isNotNull); | |
| 8836 expect(functionExpression.body, isNotNull); | |
| 8837 expect(invocation.typeArguments, isNull); | |
| 8838 ArgumentList list = invocation.argumentList; | |
| 8839 expect(list, isNotNull); | |
| 8840 expect(list.arguments, hasLength(1)); | |
| 8841 } | |
| 8842 | |
| 8843 void test_parseExpression_nonAwait() { | |
| 8844 Expression expression = parseExpression('await()'); | |
| 8845 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 8846 MethodInvocation invocation = expression; | |
| 8847 expect(invocation.methodName.name, 'await'); | |
| 8848 expect(invocation.typeArguments, isNull); | |
| 8849 expect(invocation.argumentList, isNotNull); | |
| 8850 } | |
| 8851 | |
| 8852 void test_parseExpression_superMethodInvocation() { | |
| 8853 Expression expression = parseExpression('super.m()'); | |
| 8854 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 8855 MethodInvocation invocation = expression; | |
| 8856 expect(invocation.target, isNotNull); | |
| 8857 expect(invocation.methodName, isNotNull); | |
| 8858 expect(invocation.typeArguments, isNull); | |
| 8859 expect(invocation.argumentList, isNotNull); | |
| 8860 } | |
| 8861 | |
| 8862 void test_parseExpression_superMethodInvocation_typeArgumentComments() { | |
| 8863 enableGenericMethodComments = true; | |
| 8864 Expression expression = parseExpression('super.m/*<E>*/()'); | |
| 8865 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 8866 MethodInvocation invocation = expression; | |
| 8867 expect(invocation.target, isNotNull); | |
| 8868 expect(invocation.methodName, isNotNull); | |
| 8869 expect(invocation.typeArguments, isNotNull); | |
| 8870 expect(invocation.argumentList, isNotNull); | |
| 8871 } | |
| 8872 | |
| 8873 void test_parseExpression_superMethodInvocation_typeArguments() { | |
| 8874 Expression expression = parseExpression('super.m<E>()'); | |
| 8875 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 8876 MethodInvocation invocation = expression; | |
| 8877 expect(invocation.target, isNotNull); | |
| 8878 expect(invocation.methodName, isNotNull); | |
| 8879 expect(invocation.typeArguments, isNotNull); | |
| 8880 expect(invocation.argumentList, isNotNull); | |
| 8881 } | |
| 8882 | |
| 8883 void test_parseExpressionList_multiple() { | |
| 8884 createParser('1, 2, 3'); | |
| 8885 List<Expression> result = parser.parseExpressionList(); | |
| 8886 expectNotNullIfNoErrors(result); | |
| 8887 listener.assertNoErrors(); | |
| 8888 expect(result, hasLength(3)); | |
| 8889 } | |
| 8890 | |
| 8891 void test_parseExpressionList_single() { | |
| 8892 createParser('1'); | |
| 8893 List<Expression> result = parser.parseExpressionList(); | |
| 8894 expectNotNullIfNoErrors(result); | |
| 8895 listener.assertNoErrors(); | |
| 8896 expect(result, hasLength(1)); | |
| 8897 } | |
| 8898 | |
| 8899 void test_parseExpressionWithoutCascade_assign() { | |
| 8900 // TODO(brianwilkerson) Implement more tests for this method. | |
| 8901 createParser('x = y'); | |
| 8902 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 8903 expectNotNullIfNoErrors(expression); | |
| 8904 listener.assertNoErrors(); | |
| 8905 expect(expression, new isInstanceOf<AssignmentExpression>()); | |
| 8906 AssignmentExpression assignmentExpression = expression; | |
| 8907 expect(assignmentExpression.leftHandSide, isNotNull); | |
| 8908 expect(assignmentExpression.operator, isNotNull); | |
| 8909 expect(assignmentExpression.operator.type, TokenType.EQ); | |
| 8910 expect(assignmentExpression.rightHandSide, isNotNull); | |
| 8911 } | |
| 8912 | |
| 8913 void test_parseExpressionWithoutCascade_comparison() { | |
| 8914 createParser('--a.b == c'); | |
| 8915 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 8916 expectNotNullIfNoErrors(expression); | |
| 8917 listener.assertNoErrors(); | |
| 8918 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 8919 BinaryExpression binaryExpression = expression; | |
| 8920 expect(binaryExpression.leftOperand, isNotNull); | |
| 8921 expect(binaryExpression.operator, isNotNull); | |
| 8922 expect(binaryExpression.operator.type, TokenType.EQ_EQ); | |
| 8923 expect(binaryExpression.rightOperand, isNotNull); | |
| 8924 } | |
| 8925 | |
| 8926 void test_parseExpressionWithoutCascade_superMethodInvocation() { | |
| 8927 createParser('super.m()'); | |
| 8928 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 8929 expectNotNullIfNoErrors(expression); | |
| 8930 listener.assertNoErrors(); | |
| 8931 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 8932 MethodInvocation invocation = expression; | |
| 8933 expect(invocation.target, isNotNull); | |
| 8934 expect(invocation.methodName, isNotNull); | |
| 8935 expect(invocation.typeArguments, isNull); | |
| 8936 expect(invocation.argumentList, isNotNull); | |
| 8937 } | |
| 8938 | |
| 8939 void | |
| 8940 test_parseExpressionWithoutCascade_superMethodInvocation_typeArgumentComme nts() { | |
| 8941 enableGenericMethodComments = true; | |
| 8942 createParser('super.m/*<E>*/()'); | |
| 8943 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 8944 expectNotNullIfNoErrors(expression); | |
| 8945 listener.assertNoErrors(); | |
| 8946 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 8947 MethodInvocation invocation = expression; | |
| 8948 expect(invocation.target, isNotNull); | |
| 8949 expect(invocation.methodName, isNotNull); | |
| 8950 expect(invocation.typeArguments, isNotNull); | |
| 8951 expect(invocation.argumentList, isNotNull); | |
| 8952 } | |
| 8953 | |
| 8954 void | |
| 8955 test_parseExpressionWithoutCascade_superMethodInvocation_typeArguments() { | |
| 8956 createParser('super.m<E>()'); | |
| 8957 Expression expression = parser.parseExpressionWithoutCascade(); | |
| 8958 expectNotNullIfNoErrors(expression); | |
| 8959 listener.assertNoErrors(); | |
| 8960 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 8961 MethodInvocation invocation = expression; | |
| 8962 expect(invocation.target, isNotNull); | |
| 8963 expect(invocation.methodName, isNotNull); | |
| 8964 expect(invocation.typeArguments, isNotNull); | |
| 8965 expect(invocation.argumentList, isNotNull); | |
| 8966 } | |
| 8967 | |
| 8968 void test_parseExtendsClause() { | 10691 void test_parseExtendsClause() { |
| 8969 createParser('extends B'); | 10692 createParser('extends B'); |
| 8970 ExtendsClause clause = parser.parseExtendsClause(); | 10693 ExtendsClause clause = parser.parseExtendsClause(); |
| 8971 expectNotNullIfNoErrors(clause); | 10694 expectNotNullIfNoErrors(clause); |
| 8972 listener.assertNoErrors(); | 10695 listener.assertNoErrors(); |
| 8973 expect(clause.extendsKeyword, isNotNull); | 10696 expect(clause.extendsKeyword, isNotNull); |
| 8974 expect(clause.superclass, isNotNull); | 10697 expect(clause.superclass, isNotNull); |
| 8975 expect(clause.superclass, new isInstanceOf<TypeName>()); | 10698 expect(clause.superclass, new isInstanceOf<TypeName>()); |
| 8976 } | 10699 } |
| 8977 | 10700 |
| (...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 9641 createParser('f<E>(E p) => p * 2;'); | 11364 createParser('f<E>(E p) => p * 2;'); |
| 9642 FunctionDeclarationStatement statement = | 11365 FunctionDeclarationStatement statement = |
| 9643 parser.parseFunctionDeclarationStatement(); | 11366 parser.parseFunctionDeclarationStatement(); |
| 9644 expectNotNullIfNoErrors(statement); | 11367 expectNotNullIfNoErrors(statement); |
| 9645 listener.assertNoErrors(); | 11368 listener.assertNoErrors(); |
| 9646 expect(statement.functionDeclaration, isNotNull); | 11369 expect(statement.functionDeclaration, isNotNull); |
| 9647 expect(statement.functionDeclaration.functionExpression.typeParameters, | 11370 expect(statement.functionDeclaration.functionExpression.typeParameters, |
| 9648 isNotNull); | 11371 isNotNull); |
| 9649 } | 11372 } |
| 9650 | 11373 |
| 9651 void test_parseFunctionExpression_body_inExpression() { | |
| 9652 createParser('(int i) => i++'); | |
| 9653 FunctionExpression expression = parser.parseFunctionExpression(); | |
| 9654 expectNotNullIfNoErrors(expression); | |
| 9655 listener.assertNoErrors(); | |
| 9656 expect(expression.body, isNotNull); | |
| 9657 expect(expression.typeParameters, isNull); | |
| 9658 expect(expression.parameters, isNotNull); | |
| 9659 expect((expression.body as ExpressionFunctionBody).semicolon, isNull); | |
| 9660 } | |
| 9661 | |
| 9662 void test_parseFunctionExpression_typeParameterComments() { | |
| 9663 enableGenericMethodComments = true; | |
| 9664 createParser('/*<E>*/(/*=E*/ i) => i++'); | |
| 9665 FunctionExpression expression = parser.parseFunctionExpression(); | |
| 9666 expectNotNullIfNoErrors(expression); | |
| 9667 listener.assertNoErrors(); | |
| 9668 expect(expression.body, isNotNull); | |
| 9669 expect(expression.typeParameters, isNotNull); | |
| 9670 expect(expression.parameters, isNotNull); | |
| 9671 expect((expression.body as ExpressionFunctionBody).semicolon, isNull); | |
| 9672 SimpleFormalParameter p = expression.parameters.parameters[0]; | |
| 9673 expect(p.type, isNotNull); | |
| 9674 } | |
| 9675 | |
| 9676 void test_parseFunctionExpression_typeParameters() { | |
| 9677 createParser('<E>(E i) => i++'); | |
| 9678 FunctionExpression expression = parser.parseFunctionExpression(); | |
| 9679 expectNotNullIfNoErrors(expression); | |
| 9680 listener.assertNoErrors(); | |
| 9681 expect(expression.body, isNotNull); | |
| 9682 expect(expression.typeParameters, isNotNull); | |
| 9683 expect(expression.parameters, isNotNull); | |
| 9684 expect((expression.body as ExpressionFunctionBody).semicolon, isNull); | |
| 9685 } | |
| 9686 | |
| 9687 void test_parseIdentifierList_multiple() { | 11374 void test_parseIdentifierList_multiple() { |
| 9688 createParser('a, b, c'); | 11375 createParser('a, b, c'); |
| 9689 List<SimpleIdentifier> list = parser.parseIdentifierList(); | 11376 List<SimpleIdentifier> list = parser.parseIdentifierList(); |
| 9690 expectNotNullIfNoErrors(list); | 11377 expectNotNullIfNoErrors(list); |
| 9691 listener.assertNoErrors(); | 11378 listener.assertNoErrors(); |
| 9692 expect(list, hasLength(3)); | 11379 expect(list, hasLength(3)); |
| 9693 } | 11380 } |
| 9694 | 11381 |
| 9695 void test_parseIdentifierList_single() { | 11382 void test_parseIdentifierList_single() { |
| 9696 createParser('a'); | 11383 createParser('a'); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 9767 | 11454 |
| 9768 void test_parseImplementsClause_single() { | 11455 void test_parseImplementsClause_single() { |
| 9769 createParser('implements A'); | 11456 createParser('implements A'); |
| 9770 ImplementsClause clause = parser.parseImplementsClause(); | 11457 ImplementsClause clause = parser.parseImplementsClause(); |
| 9771 expectNotNullIfNoErrors(clause); | 11458 expectNotNullIfNoErrors(clause); |
| 9772 listener.assertNoErrors(); | 11459 listener.assertNoErrors(); |
| 9773 expect(clause.interfaces, hasLength(1)); | 11460 expect(clause.interfaces, hasLength(1)); |
| 9774 expect(clause.implementsKeyword, isNotNull); | 11461 expect(clause.implementsKeyword, isNotNull); |
| 9775 } | 11462 } |
| 9776 | 11463 |
| 9777 void test_parseInstanceCreationExpression_qualifiedType() { | |
| 9778 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9779 createParser('A.B()'); | |
| 9780 InstanceCreationExpression expression = | |
| 9781 parser.parseInstanceCreationExpression(token); | |
| 9782 expectNotNullIfNoErrors(expression); | |
| 9783 listener.assertNoErrors(); | |
| 9784 expect(expression.keyword, token); | |
| 9785 ConstructorName name = expression.constructorName; | |
| 9786 expect(name, isNotNull); | |
| 9787 TypeName type = name.type; | |
| 9788 expect(type, isNotNull); | |
| 9789 expect(type.typeArguments, isNull); | |
| 9790 expect(name.period, isNull); | |
| 9791 expect(name.name, isNull); | |
| 9792 expect(expression.argumentList, isNotNull); | |
| 9793 } | |
| 9794 | |
| 9795 void test_parseInstanceCreationExpression_qualifiedType_named() { | |
| 9796 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9797 createParser('A.B.c()'); | |
| 9798 InstanceCreationExpression expression = | |
| 9799 parser.parseInstanceCreationExpression(token); | |
| 9800 expectNotNullIfNoErrors(expression); | |
| 9801 listener.assertNoErrors(); | |
| 9802 expect(expression.keyword, token); | |
| 9803 ConstructorName name = expression.constructorName; | |
| 9804 expect(name, isNotNull); | |
| 9805 TypeName type = name.type; | |
| 9806 expect(type, isNotNull); | |
| 9807 expect(type.typeArguments, isNull); | |
| 9808 expect(name.period, isNotNull); | |
| 9809 expect(name.name, isNotNull); | |
| 9810 expect(expression.argumentList, isNotNull); | |
| 9811 } | |
| 9812 | |
| 9813 void | |
| 9814 test_parseInstanceCreationExpression_qualifiedType_named_typeParameterComm ent() { | |
| 9815 enableGenericMethodComments = true; | |
| 9816 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9817 createParser('A.B/*<E>*/.c()'); | |
| 9818 InstanceCreationExpression expression = | |
| 9819 parser.parseInstanceCreationExpression(token); | |
| 9820 expectNotNullIfNoErrors(expression); | |
| 9821 listener.assertNoErrors(); | |
| 9822 expect(expression.keyword, token); | |
| 9823 ConstructorName name = expression.constructorName; | |
| 9824 expect(name, isNotNull); | |
| 9825 TypeName type = name.type; | |
| 9826 expect(type, isNotNull); | |
| 9827 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9828 expect(name.period, isNotNull); | |
| 9829 expect(name.name, isNotNull); | |
| 9830 expect(expression.argumentList, isNotNull); | |
| 9831 } | |
| 9832 | |
| 9833 void | |
| 9834 test_parseInstanceCreationExpression_qualifiedType_named_typeParameters() { | |
| 9835 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9836 createParser('A.B<E>.c()'); | |
| 9837 InstanceCreationExpression expression = | |
| 9838 parser.parseInstanceCreationExpression(token); | |
| 9839 expectNotNullIfNoErrors(expression); | |
| 9840 listener.assertNoErrors(); | |
| 9841 expect(expression.keyword, token); | |
| 9842 ConstructorName name = expression.constructorName; | |
| 9843 expect(name, isNotNull); | |
| 9844 TypeName type = name.type; | |
| 9845 expect(type, isNotNull); | |
| 9846 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9847 expect(name.period, isNotNull); | |
| 9848 expect(name.name, isNotNull); | |
| 9849 expect(expression.argumentList, isNotNull); | |
| 9850 } | |
| 9851 | |
| 9852 void | |
| 9853 test_parseInstanceCreationExpression_qualifiedType_typeParameterComment() { | |
| 9854 enableGenericMethodComments = true; | |
| 9855 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9856 createParser('A.B/*<E>*/()'); | |
| 9857 InstanceCreationExpression expression = | |
| 9858 parser.parseInstanceCreationExpression(token); | |
| 9859 expectNotNullIfNoErrors(expression); | |
| 9860 listener.assertNoErrors(); | |
| 9861 expect(expression.keyword, token); | |
| 9862 ConstructorName name = expression.constructorName; | |
| 9863 expect(name, isNotNull); | |
| 9864 TypeName type = name.type; | |
| 9865 expect(type, isNotNull); | |
| 9866 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9867 expect(name.period, isNull); | |
| 9868 expect(name.name, isNull); | |
| 9869 expect(expression.argumentList, isNotNull); | |
| 9870 } | |
| 9871 | |
| 9872 void test_parseInstanceCreationExpression_qualifiedType_typeParameters() { | |
| 9873 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9874 createParser('A.B<E>()'); | |
| 9875 InstanceCreationExpression expression = | |
| 9876 parser.parseInstanceCreationExpression(token); | |
| 9877 expectNotNullIfNoErrors(expression); | |
| 9878 listener.assertNoErrors(); | |
| 9879 expect(expression.keyword, token); | |
| 9880 ConstructorName name = expression.constructorName; | |
| 9881 expect(name, isNotNull); | |
| 9882 TypeName type = name.type; | |
| 9883 expect(type, isNotNull); | |
| 9884 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9885 expect(name.period, isNull); | |
| 9886 expect(name.name, isNull); | |
| 9887 expect(expression.argumentList, isNotNull); | |
| 9888 } | |
| 9889 | |
| 9890 void test_parseInstanceCreationExpression_type() { | |
| 9891 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9892 createParser('A()'); | |
| 9893 InstanceCreationExpression expression = | |
| 9894 parser.parseInstanceCreationExpression(token); | |
| 9895 expectNotNullIfNoErrors(expression); | |
| 9896 listener.assertNoErrors(); | |
| 9897 expect(expression.keyword, token); | |
| 9898 ConstructorName name = expression.constructorName; | |
| 9899 expect(name, isNotNull); | |
| 9900 TypeName type = name.type; | |
| 9901 expect(type, isNotNull); | |
| 9902 expect(type.typeArguments, isNull); | |
| 9903 expect(name.period, isNull); | |
| 9904 expect(name.name, isNull); | |
| 9905 expect(expression.argumentList, isNotNull); | |
| 9906 } | |
| 9907 | |
| 9908 void test_parseInstanceCreationExpression_type_named() { | |
| 9909 enableGenericMethodComments = true; | |
| 9910 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9911 createParser('A.c()'); | |
| 9912 InstanceCreationExpression expression = | |
| 9913 parser.parseInstanceCreationExpression(token); | |
| 9914 expectNotNullIfNoErrors(expression); | |
| 9915 listener.assertNoErrors(); | |
| 9916 expect(expression.keyword, token); | |
| 9917 ConstructorName name = expression.constructorName; | |
| 9918 expect(name, isNotNull); | |
| 9919 TypeName type = name.type; | |
| 9920 expect(type, isNotNull); | |
| 9921 expect(type.typeArguments, isNull); | |
| 9922 expect(name.period, isNull); | |
| 9923 expect(name.name, isNull); | |
| 9924 expect(expression.argumentList, isNotNull); | |
| 9925 } | |
| 9926 | |
| 9927 void test_parseInstanceCreationExpression_type_named_typeParameterComment() { | |
| 9928 enableGenericMethodComments = true; | |
| 9929 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9930 createParser('A/*<B>*/.c()'); | |
| 9931 InstanceCreationExpression expression = | |
| 9932 parser.parseInstanceCreationExpression(token); | |
| 9933 expectNotNullIfNoErrors(expression); | |
| 9934 listener.assertNoErrors(); | |
| 9935 expect(expression.keyword, token); | |
| 9936 ConstructorName name = expression.constructorName; | |
| 9937 expect(name, isNotNull); | |
| 9938 TypeName type = name.type; | |
| 9939 expect(type, isNotNull); | |
| 9940 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9941 expect(name.period, isNotNull); | |
| 9942 expect(name.name, isNotNull); | |
| 9943 expect(expression.argumentList, isNotNull); | |
| 9944 } | |
| 9945 | |
| 9946 void test_parseInstanceCreationExpression_type_named_typeParameters() { | |
| 9947 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9948 createParser('A<B>.c()'); | |
| 9949 InstanceCreationExpression expression = | |
| 9950 parser.parseInstanceCreationExpression(token); | |
| 9951 expectNotNullIfNoErrors(expression); | |
| 9952 listener.assertNoErrors(); | |
| 9953 expect(expression.keyword, token); | |
| 9954 ConstructorName name = expression.constructorName; | |
| 9955 expect(name, isNotNull); | |
| 9956 TypeName type = name.type; | |
| 9957 expect(type, isNotNull); | |
| 9958 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9959 expect(name.period, isNotNull); | |
| 9960 expect(name.name, isNotNull); | |
| 9961 expect(expression.argumentList, isNotNull); | |
| 9962 } | |
| 9963 | |
| 9964 void test_parseInstanceCreationExpression_type_typeParameterComment() { | |
| 9965 enableGenericMethodComments = true; | |
| 9966 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9967 createParser('A/*<B>*/()'); | |
| 9968 InstanceCreationExpression expression = | |
| 9969 parser.parseInstanceCreationExpression(token); | |
| 9970 expectNotNullIfNoErrors(expression); | |
| 9971 listener.assertNoErrors(); | |
| 9972 expect(expression.keyword, token); | |
| 9973 ConstructorName name = expression.constructorName; | |
| 9974 expect(name, isNotNull); | |
| 9975 TypeName type = name.type; | |
| 9976 expect(type, isNotNull); | |
| 9977 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9978 expect(name.period, isNull); | |
| 9979 expect(name.name, isNull); | |
| 9980 expect(expression.argumentList, isNotNull); | |
| 9981 } | |
| 9982 | |
| 9983 void test_parseInstanceCreationExpression_type_typeParameters() { | |
| 9984 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 9985 createParser('A<B>()'); | |
| 9986 InstanceCreationExpression expression = | |
| 9987 parser.parseInstanceCreationExpression(token); | |
| 9988 expectNotNullIfNoErrors(expression); | |
| 9989 listener.assertNoErrors(); | |
| 9990 expect(expression.keyword, token); | |
| 9991 ConstructorName name = expression.constructorName; | |
| 9992 expect(name, isNotNull); | |
| 9993 TypeName type = name.type; | |
| 9994 expect(type, isNotNull); | |
| 9995 expect(type.typeArguments.arguments, hasLength(1)); | |
| 9996 expect(name.period, isNull); | |
| 9997 expect(name.name, isNull); | |
| 9998 expect(expression.argumentList, isNotNull); | |
| 9999 } | |
| 10000 | |
| 10001 void test_parseInstanceCreationExpression_type_typeParameters_nullable() { | |
| 10002 enableNnbd = true; | |
| 10003 Token token = TokenFactory.tokenFromKeyword(Keyword.NEW); | |
| 10004 createParser('A<B?>()'); | |
| 10005 InstanceCreationExpression expression = | |
| 10006 parser.parseInstanceCreationExpression(token); | |
| 10007 expectNotNullIfNoErrors(expression); | |
| 10008 listener.assertNoErrors(); | |
| 10009 expect(expression.keyword, token); | |
| 10010 ConstructorName name = expression.constructorName; | |
| 10011 expect(name, isNotNull); | |
| 10012 TypeName type = name.type; | |
| 10013 expect(type, isNotNull); | |
| 10014 expect(name.period, isNull); | |
| 10015 expect(name.name, isNull); | |
| 10016 expect(expression.argumentList, isNotNull); | |
| 10017 NodeList<TypeAnnotation> arguments = type.typeArguments.arguments; | |
| 10018 expect(arguments, hasLength(1)); | |
| 10019 expect((arguments[0] as TypeName).question, isNotNull); | |
| 10020 } | |
| 10021 | |
| 10022 void test_parseLibraryIdentifier_multiple() { | 11464 void test_parseLibraryIdentifier_multiple() { |
| 10023 String name = "a.b.c"; | 11465 String name = "a.b.c"; |
| 10024 createParser(name); | 11466 createParser(name); |
| 10025 LibraryIdentifier identifier = parser.parseLibraryIdentifier(); | 11467 LibraryIdentifier identifier = parser.parseLibraryIdentifier(); |
| 10026 expectNotNullIfNoErrors(identifier); | 11468 expectNotNullIfNoErrors(identifier); |
| 10027 listener.assertNoErrors(); | 11469 listener.assertNoErrors(); |
| 10028 expect(identifier.name, name); | 11470 expect(identifier.name, name); |
| 10029 } | 11471 } |
| 10030 | 11472 |
| 10031 void test_parseLibraryIdentifier_single() { | 11473 void test_parseLibraryIdentifier_single() { |
| 10032 String name = "a"; | 11474 String name = "a"; |
| 10033 createParser(name); | 11475 createParser(name); |
| 10034 LibraryIdentifier identifier = parser.parseLibraryIdentifier(); | 11476 LibraryIdentifier identifier = parser.parseLibraryIdentifier(); |
| 10035 expectNotNullIfNoErrors(identifier); | 11477 expectNotNullIfNoErrors(identifier); |
| 10036 listener.assertNoErrors(); | 11478 listener.assertNoErrors(); |
| 10037 expect(identifier.name, name); | 11479 expect(identifier.name, name); |
| 10038 } | 11480 } |
| 10039 | 11481 |
| 10040 void test_parseListLiteral_empty_oneToken() { | |
| 10041 Token token = TokenFactory.tokenFromKeyword(Keyword.CONST); | |
| 10042 TypeArgumentList typeArguments = null; | |
| 10043 createParser('[]'); | |
| 10044 ListLiteral literal = parser.parseListLiteral(token, typeArguments); | |
| 10045 expectNotNullIfNoErrors(literal); | |
| 10046 listener.assertNoErrors(); | |
| 10047 expect(literal.constKeyword, token); | |
| 10048 expect(literal.typeArguments, typeArguments); | |
| 10049 expect(literal.leftBracket, isNotNull); | |
| 10050 expect(literal.elements, hasLength(0)); | |
| 10051 expect(literal.rightBracket, isNotNull); | |
| 10052 } | |
| 10053 | |
| 10054 void test_parseListLiteral_empty_oneToken_withComment() { | |
| 10055 Token token = null; | |
| 10056 TypeArgumentList typeArguments = null; | |
| 10057 createParser('/* 0 */ []'); | |
| 10058 ListLiteral literal = parser.parseListLiteral(token, typeArguments); | |
| 10059 expectNotNullIfNoErrors(literal); | |
| 10060 listener.assertNoErrors(); | |
| 10061 expect(literal.constKeyword, token); | |
| 10062 expect(literal.typeArguments, typeArguments); | |
| 10063 Token leftBracket = literal.leftBracket; | |
| 10064 expect(leftBracket, isNotNull); | |
| 10065 expect(leftBracket.precedingComments, isNotNull); | |
| 10066 expect(literal.elements, hasLength(0)); | |
| 10067 expect(literal.rightBracket, isNotNull); | |
| 10068 } | |
| 10069 | |
| 10070 void test_parseListLiteral_empty_twoTokens() { | |
| 10071 Token token = TokenFactory.tokenFromKeyword(Keyword.CONST); | |
| 10072 TypeArgumentList typeArguments = null; | |
| 10073 createParser('[ ]'); | |
| 10074 ListLiteral literal = parser.parseListLiteral(token, typeArguments); | |
| 10075 expectNotNullIfNoErrors(literal); | |
| 10076 listener.assertNoErrors(); | |
| 10077 expect(literal.constKeyword, token); | |
| 10078 expect(literal.typeArguments, typeArguments); | |
| 10079 expect(literal.leftBracket, isNotNull); | |
| 10080 expect(literal.elements, hasLength(0)); | |
| 10081 expect(literal.rightBracket, isNotNull); | |
| 10082 } | |
| 10083 | |
| 10084 void test_parseListLiteral_multiple() { | |
| 10085 createParser('[1, 2, 3]'); | |
| 10086 ListLiteral literal = parser.parseListLiteral(null, null); | |
| 10087 expectNotNullIfNoErrors(literal); | |
| 10088 listener.assertNoErrors(); | |
| 10089 expect(literal.constKeyword, isNull); | |
| 10090 expect(literal.typeArguments, isNull); | |
| 10091 expect(literal.leftBracket, isNotNull); | |
| 10092 expect(literal.elements, hasLength(3)); | |
| 10093 expect(literal.rightBracket, isNotNull); | |
| 10094 } | |
| 10095 | |
| 10096 void test_parseListLiteral_single() { | |
| 10097 createParser('[1]'); | |
| 10098 ListLiteral literal = parser.parseListLiteral(null, null); | |
| 10099 expectNotNullIfNoErrors(literal); | |
| 10100 listener.assertNoErrors(); | |
| 10101 expect(literal.constKeyword, isNull); | |
| 10102 expect(literal.typeArguments, isNull); | |
| 10103 expect(literal.leftBracket, isNotNull); | |
| 10104 expect(literal.elements, hasLength(1)); | |
| 10105 expect(literal.rightBracket, isNotNull); | |
| 10106 } | |
| 10107 | |
| 10108 void test_parseListOrMapLiteral_list_noType() { | |
| 10109 createParser('[1]'); | |
| 10110 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 10111 expectNotNullIfNoErrors(literal); | |
| 10112 listener.assertNoErrors(); | |
| 10113 expect(literal, new isInstanceOf<ListLiteral>()); | |
| 10114 ListLiteral listLiteral = literal; | |
| 10115 expect(listLiteral.constKeyword, isNull); | |
| 10116 expect(listLiteral.typeArguments, isNull); | |
| 10117 expect(listLiteral.leftBracket, isNotNull); | |
| 10118 expect(listLiteral.elements, hasLength(1)); | |
| 10119 expect(listLiteral.rightBracket, isNotNull); | |
| 10120 } | |
| 10121 | |
| 10122 void test_parseListOrMapLiteral_list_type() { | |
| 10123 createParser('<int> [1]'); | |
| 10124 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 10125 expectNotNullIfNoErrors(literal); | |
| 10126 listener.assertNoErrors(); | |
| 10127 expect(literal, new isInstanceOf<ListLiteral>()); | |
| 10128 ListLiteral listLiteral = literal; | |
| 10129 expect(listLiteral.constKeyword, isNull); | |
| 10130 expect(listLiteral.typeArguments, isNotNull); | |
| 10131 expect(listLiteral.leftBracket, isNotNull); | |
| 10132 expect(listLiteral.elements, hasLength(1)); | |
| 10133 expect(listLiteral.rightBracket, isNotNull); | |
| 10134 } | |
| 10135 | |
| 10136 void test_parseListOrMapLiteral_map_noType() { | |
| 10137 createParser("{'1' : 1}"); | |
| 10138 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 10139 expectNotNullIfNoErrors(literal); | |
| 10140 listener.assertNoErrors(); | |
| 10141 expect(literal, new isInstanceOf<MapLiteral>()); | |
| 10142 MapLiteral mapLiteral = literal; | |
| 10143 expect(mapLiteral.constKeyword, isNull); | |
| 10144 expect(mapLiteral.typeArguments, isNull); | |
| 10145 expect(mapLiteral.leftBracket, isNotNull); | |
| 10146 expect(mapLiteral.entries, hasLength(1)); | |
| 10147 expect(mapLiteral.rightBracket, isNotNull); | |
| 10148 } | |
| 10149 | |
| 10150 void test_parseListOrMapLiteral_map_type() { | |
| 10151 createParser("<String, int> {'1' : 1}"); | |
| 10152 TypedLiteral literal = parser.parseListOrMapLiteral(null); | |
| 10153 expectNotNullIfNoErrors(literal); | |
| 10154 listener.assertNoErrors(); | |
| 10155 expect(literal, new isInstanceOf<MapLiteral>()); | |
| 10156 MapLiteral mapLiteral = literal; | |
| 10157 expect(mapLiteral.constKeyword, isNull); | |
| 10158 expect(mapLiteral.typeArguments, isNotNull); | |
| 10159 expect(mapLiteral.leftBracket, isNotNull); | |
| 10160 expect(mapLiteral.entries, hasLength(1)); | |
| 10161 expect(mapLiteral.rightBracket, isNotNull); | |
| 10162 } | |
| 10163 | |
| 10164 void test_parseLogicalAndExpression() { | |
| 10165 createParser('x && y'); | |
| 10166 Expression expression = parser.parseLogicalAndExpression(); | |
| 10167 expectNotNullIfNoErrors(expression); | |
| 10168 listener.assertNoErrors(); | |
| 10169 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 10170 BinaryExpression binaryExpression = expression; | |
| 10171 expect(binaryExpression.leftOperand, isNotNull); | |
| 10172 expect(binaryExpression.operator, isNotNull); | |
| 10173 expect(binaryExpression.operator.type, TokenType.AMPERSAND_AMPERSAND); | |
| 10174 expect(binaryExpression.rightOperand, isNotNull); | |
| 10175 } | |
| 10176 | |
| 10177 void test_parseLogicalOrExpression() { | |
| 10178 createParser('x || y'); | |
| 10179 Expression expression = parser.parseLogicalOrExpression(); | |
| 10180 expectNotNullIfNoErrors(expression); | |
| 10181 listener.assertNoErrors(); | |
| 10182 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 10183 BinaryExpression binaryExpression = expression; | |
| 10184 expect(binaryExpression.leftOperand, isNotNull); | |
| 10185 expect(binaryExpression.operator, isNotNull); | |
| 10186 expect(binaryExpression.operator.type, TokenType.BAR_BAR); | |
| 10187 expect(binaryExpression.rightOperand, isNotNull); | |
| 10188 } | |
| 10189 | |
| 10190 void test_parseMapLiteral_empty() { | |
| 10191 Token token = TokenFactory.tokenFromKeyword(Keyword.CONST); | |
| 10192 TypeArgumentList typeArguments = AstTestFactory.typeArgumentList( | |
| 10193 [AstTestFactory.typeName4("String"), AstTestFactory.typeName4("int")]); | |
| 10194 createParser('{}'); | |
| 10195 MapLiteral literal = parser.parseMapLiteral(token, typeArguments); | |
| 10196 expectNotNullIfNoErrors(literal); | |
| 10197 listener.assertNoErrors(); | |
| 10198 expect(literal.constKeyword, token); | |
| 10199 expect(literal.typeArguments, typeArguments); | |
| 10200 expect(literal.leftBracket, isNotNull); | |
| 10201 expect(literal.entries, hasLength(0)); | |
| 10202 expect(literal.rightBracket, isNotNull); | |
| 10203 } | |
| 10204 | |
| 10205 void test_parseMapLiteral_multiple() { | |
| 10206 createParser("{'a' : b, 'x' : y}"); | |
| 10207 MapLiteral literal = parser.parseMapLiteral(null, null); | |
| 10208 expectNotNullIfNoErrors(literal); | |
| 10209 listener.assertNoErrors(); | |
| 10210 expect(literal.leftBracket, isNotNull); | |
| 10211 expect(literal.entries, hasLength(2)); | |
| 10212 expect(literal.rightBracket, isNotNull); | |
| 10213 } | |
| 10214 | |
| 10215 void test_parseMapLiteral_single() { | |
| 10216 createParser("{'x' : y}"); | |
| 10217 MapLiteral literal = parser.parseMapLiteral(null, null); | |
| 10218 expectNotNullIfNoErrors(literal); | |
| 10219 listener.assertNoErrors(); | |
| 10220 expect(literal.leftBracket, isNotNull); | |
| 10221 expect(literal.entries, hasLength(1)); | |
| 10222 expect(literal.rightBracket, isNotNull); | |
| 10223 } | |
| 10224 | |
| 10225 void test_parseMapLiteralEntry_complex() { | |
| 10226 createParser('2 + 2 : y'); | |
| 10227 MapLiteralEntry entry = parser.parseMapLiteralEntry(); | |
| 10228 expectNotNullIfNoErrors(entry); | |
| 10229 listener.assertNoErrors(); | |
| 10230 expect(entry.key, isNotNull); | |
| 10231 expect(entry.separator, isNotNull); | |
| 10232 expect(entry.value, isNotNull); | |
| 10233 } | |
| 10234 | |
| 10235 void test_parseMapLiteralEntry_int() { | |
| 10236 createParser('0 : y'); | |
| 10237 MapLiteralEntry entry = parser.parseMapLiteralEntry(); | |
| 10238 expectNotNullIfNoErrors(entry); | |
| 10239 listener.assertNoErrors(); | |
| 10240 expect(entry.key, isNotNull); | |
| 10241 expect(entry.separator, isNotNull); | |
| 10242 expect(entry.value, isNotNull); | |
| 10243 } | |
| 10244 | |
| 10245 void test_parseMapLiteralEntry_string() { | |
| 10246 createParser("'x' : y"); | |
| 10247 MapLiteralEntry entry = parser.parseMapLiteralEntry(); | |
| 10248 expectNotNullIfNoErrors(entry); | |
| 10249 listener.assertNoErrors(); | |
| 10250 expect(entry.key, isNotNull); | |
| 10251 expect(entry.separator, isNotNull); | |
| 10252 expect(entry.value, isNotNull); | |
| 10253 } | |
| 10254 | |
| 10255 void test_parseModifiers_abstract() { | 11482 void test_parseModifiers_abstract() { |
| 10256 createParser('abstract A'); | 11483 createParser('abstract A'); |
| 10257 Modifiers modifiers = parser.parseModifiers(); | 11484 Modifiers modifiers = parser.parseModifiers(); |
| 10258 expectNotNullIfNoErrors(modifiers); | 11485 expectNotNullIfNoErrors(modifiers); |
| 10259 listener.assertNoErrors(); | 11486 listener.assertNoErrors(); |
| 10260 expect(modifiers.abstractKeyword, isNotNull); | 11487 expect(modifiers.abstractKeyword, isNotNull); |
| 10261 } | 11488 } |
| 10262 | 11489 |
| 10263 void test_parseModifiers_const() { | 11490 void test_parseModifiers_const() { |
| 10264 createParser('const A'); | 11491 createParser('const A'); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10309 } | 11536 } |
| 10310 | 11537 |
| 10311 void test_parseModifiers_var() { | 11538 void test_parseModifiers_var() { |
| 10312 createParser('var A'); | 11539 createParser('var A'); |
| 10313 Modifiers modifiers = parser.parseModifiers(); | 11540 Modifiers modifiers = parser.parseModifiers(); |
| 10314 expectNotNullIfNoErrors(modifiers); | 11541 expectNotNullIfNoErrors(modifiers); |
| 10315 listener.assertNoErrors(); | 11542 listener.assertNoErrors(); |
| 10316 expect(modifiers.varKeyword, isNotNull); | 11543 expect(modifiers.varKeyword, isNotNull); |
| 10317 } | 11544 } |
| 10318 | 11545 |
| 10319 void test_parseMultiplicativeExpression_normal() { | |
| 10320 createParser('x * y'); | |
| 10321 Expression expression = parser.parseMultiplicativeExpression(); | |
| 10322 expectNotNullIfNoErrors(expression); | |
| 10323 listener.assertNoErrors(); | |
| 10324 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 10325 BinaryExpression binaryExpression = expression; | |
| 10326 expect(binaryExpression.leftOperand, isNotNull); | |
| 10327 expect(binaryExpression.operator, isNotNull); | |
| 10328 expect(binaryExpression.operator.type, TokenType.STAR); | |
| 10329 expect(binaryExpression.rightOperand, isNotNull); | |
| 10330 } | |
| 10331 | |
| 10332 void test_parseMultiplicativeExpression_super() { | |
| 10333 createParser('super * y'); | |
| 10334 Expression expression = parser.parseMultiplicativeExpression(); | |
| 10335 expectNotNullIfNoErrors(expression); | |
| 10336 listener.assertNoErrors(); | |
| 10337 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 10338 BinaryExpression binaryExpression = expression; | |
| 10339 expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); | |
| 10340 expect(binaryExpression.operator, isNotNull); | |
| 10341 expect(binaryExpression.operator.type, TokenType.STAR); | |
| 10342 expect(binaryExpression.rightOperand, isNotNull); | |
| 10343 } | |
| 10344 | |
| 10345 void test_parseNewExpression() { | |
| 10346 createParser('new A()'); | |
| 10347 InstanceCreationExpression expression = parser.parseNewExpression(); | |
| 10348 expectNotNullIfNoErrors(expression); | |
| 10349 listener.assertNoErrors(); | |
| 10350 expect(expression.keyword, isNotNull); | |
| 10351 ConstructorName name = expression.constructorName; | |
| 10352 expect(name, isNotNull); | |
| 10353 expect(name.type, isNotNull); | |
| 10354 expect(name.period, isNull); | |
| 10355 expect(name.name, isNull); | |
| 10356 expect(expression.argumentList, isNotNull); | |
| 10357 } | |
| 10358 | |
| 10359 void test_parseNonLabeledStatement_const_list_empty() { | 11546 void test_parseNonLabeledStatement_const_list_empty() { |
| 10360 createParser('const [];'); | 11547 createParser('const [];'); |
| 10361 Statement statement = parser.parseNonLabeledStatement(); | 11548 Statement statement = parser.parseNonLabeledStatement(); |
| 10362 expectNotNullIfNoErrors(statement); | 11549 expectNotNullIfNoErrors(statement); |
| 10363 listener.assertNoErrors(); | 11550 listener.assertNoErrors(); |
| 10364 expect(statement, new isInstanceOf<ExpressionStatement>()); | 11551 expect(statement, new isInstanceOf<ExpressionStatement>()); |
| 10365 ExpressionStatement expressionStatement = statement; | 11552 ExpressionStatement expressionStatement = statement; |
| 10366 expect(expressionStatement.expression, isNotNull); | 11553 expect(expressionStatement.expression, isNotNull); |
| 10367 } | 11554 } |
| 10368 | 11555 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10536 createParser('final int Function = 0;'); | 11723 createParser('final int Function = 0;'); |
| 10537 Statement statement = parser.parseNonLabeledStatement(); | 11724 Statement statement = parser.parseNonLabeledStatement(); |
| 10538 expectNotNullIfNoErrors(statement); | 11725 expectNotNullIfNoErrors(statement); |
| 10539 listener.assertNoErrors(); | 11726 listener.assertNoErrors(); |
| 10540 } | 11727 } |
| 10541 | 11728 |
| 10542 void test_parseOptionalReturnType() { | 11729 void test_parseOptionalReturnType() { |
| 10543 // TODO(brianwilkerson) Implement tests for this method. | 11730 // TODO(brianwilkerson) Implement tests for this method. |
| 10544 } | 11731 } |
| 10545 | 11732 |
| 10546 void test_parsePostfixExpression_decrement() { | |
| 10547 createParser('i--'); | |
| 10548 Expression expression = parser.parsePostfixExpression(); | |
| 10549 expectNotNullIfNoErrors(expression); | |
| 10550 listener.assertNoErrors(); | |
| 10551 expect(expression, new isInstanceOf<PostfixExpression>()); | |
| 10552 PostfixExpression postfixExpression = expression; | |
| 10553 expect(postfixExpression.operand, isNotNull); | |
| 10554 expect(postfixExpression.operator, isNotNull); | |
| 10555 expect(postfixExpression.operator.type, TokenType.MINUS_MINUS); | |
| 10556 } | |
| 10557 | |
| 10558 void test_parsePostfixExpression_increment() { | |
| 10559 createParser('i++'); | |
| 10560 Expression expression = parser.parsePostfixExpression(); | |
| 10561 expectNotNullIfNoErrors(expression); | |
| 10562 listener.assertNoErrors(); | |
| 10563 expect(expression, new isInstanceOf<PostfixExpression>()); | |
| 10564 PostfixExpression postfixExpression = expression; | |
| 10565 expect(postfixExpression.operand, isNotNull); | |
| 10566 expect(postfixExpression.operator, isNotNull); | |
| 10567 expect(postfixExpression.operator.type, TokenType.PLUS_PLUS); | |
| 10568 } | |
| 10569 | |
| 10570 void test_parsePostfixExpression_none_indexExpression() { | |
| 10571 createParser('a[0]'); | |
| 10572 Expression expression = parser.parsePostfixExpression(); | |
| 10573 expectNotNullIfNoErrors(expression); | |
| 10574 listener.assertNoErrors(); | |
| 10575 expect(expression, new isInstanceOf<IndexExpression>()); | |
| 10576 IndexExpression indexExpression = expression; | |
| 10577 expect(indexExpression.target, isNotNull); | |
| 10578 expect(indexExpression.index, isNotNull); | |
| 10579 } | |
| 10580 | |
| 10581 void test_parsePostfixExpression_none_methodInvocation() { | |
| 10582 createParser('a.m()'); | |
| 10583 Expression expression = parser.parsePostfixExpression(); | |
| 10584 expectNotNullIfNoErrors(expression); | |
| 10585 listener.assertNoErrors(); | |
| 10586 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 10587 MethodInvocation methodInvocation = expression; | |
| 10588 expect(methodInvocation.target, isNotNull); | |
| 10589 expect(methodInvocation.operator.type, TokenType.PERIOD); | |
| 10590 expect(methodInvocation.methodName, isNotNull); | |
| 10591 expect(methodInvocation.typeArguments, isNull); | |
| 10592 expect(methodInvocation.argumentList, isNotNull); | |
| 10593 } | |
| 10594 | |
| 10595 void test_parsePostfixExpression_none_methodInvocation_question_dot() { | |
| 10596 createParser('a?.m()'); | |
| 10597 Expression expression = parser.parsePostfixExpression(); | |
| 10598 expectNotNullIfNoErrors(expression); | |
| 10599 listener.assertNoErrors(); | |
| 10600 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 10601 MethodInvocation methodInvocation = expression; | |
| 10602 expect(methodInvocation.target, isNotNull); | |
| 10603 expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD); | |
| 10604 expect(methodInvocation.methodName, isNotNull); | |
| 10605 expect(methodInvocation.typeArguments, isNull); | |
| 10606 expect(methodInvocation.argumentList, isNotNull); | |
| 10607 } | |
| 10608 | |
| 10609 void | |
| 10610 test_parsePostfixExpression_none_methodInvocation_question_dot_typeArgumen tComments() { | |
| 10611 enableGenericMethodComments = true; | |
| 10612 createParser('a?.m/*<E>*/()'); | |
| 10613 Expression expression = parser.parsePostfixExpression(); | |
| 10614 expectNotNullIfNoErrors(expression); | |
| 10615 listener.assertNoErrors(); | |
| 10616 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 10617 MethodInvocation methodInvocation = expression; | |
| 10618 expect(methodInvocation.target, isNotNull); | |
| 10619 expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD); | |
| 10620 expect(methodInvocation.methodName, isNotNull); | |
| 10621 expect(methodInvocation.typeArguments, isNotNull); | |
| 10622 expect(methodInvocation.argumentList, isNotNull); | |
| 10623 } | |
| 10624 | |
| 10625 void | |
| 10626 test_parsePostfixExpression_none_methodInvocation_question_dot_typeArgumen ts() { | |
| 10627 createParser('a?.m<E>()'); | |
| 10628 Expression expression = parser.parsePostfixExpression(); | |
| 10629 expectNotNullIfNoErrors(expression); | |
| 10630 listener.assertNoErrors(); | |
| 10631 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 10632 MethodInvocation methodInvocation = expression; | |
| 10633 expect(methodInvocation.target, isNotNull); | |
| 10634 expect(methodInvocation.operator.type, TokenType.QUESTION_PERIOD); | |
| 10635 expect(methodInvocation.methodName, isNotNull); | |
| 10636 expect(methodInvocation.typeArguments, isNotNull); | |
| 10637 expect(methodInvocation.argumentList, isNotNull); | |
| 10638 } | |
| 10639 | |
| 10640 void | |
| 10641 test_parsePostfixExpression_none_methodInvocation_typeArgumentComments() { | |
| 10642 enableGenericMethodComments = true; | |
| 10643 createParser('a.m/*<E>*/()'); | |
| 10644 Expression expression = parser.parsePostfixExpression(); | |
| 10645 expectNotNullIfNoErrors(expression); | |
| 10646 listener.assertNoErrors(); | |
| 10647 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 10648 MethodInvocation methodInvocation = expression; | |
| 10649 expect(methodInvocation.target, isNotNull); | |
| 10650 expect(methodInvocation.operator.type, TokenType.PERIOD); | |
| 10651 expect(methodInvocation.methodName, isNotNull); | |
| 10652 expect(methodInvocation.typeArguments, isNotNull); | |
| 10653 expect(methodInvocation.argumentList, isNotNull); | |
| 10654 } | |
| 10655 | |
| 10656 void test_parsePostfixExpression_none_methodInvocation_typeArguments() { | |
| 10657 createParser('a.m<E>()'); | |
| 10658 Expression expression = parser.parsePostfixExpression(); | |
| 10659 expectNotNullIfNoErrors(expression); | |
| 10660 listener.assertNoErrors(); | |
| 10661 expect(expression, new isInstanceOf<MethodInvocation>()); | |
| 10662 MethodInvocation methodInvocation = expression; | |
| 10663 expect(methodInvocation.target, isNotNull); | |
| 10664 expect(methodInvocation.operator.type, TokenType.PERIOD); | |
| 10665 expect(methodInvocation.methodName, isNotNull); | |
| 10666 expect(methodInvocation.typeArguments, isNotNull); | |
| 10667 expect(methodInvocation.argumentList, isNotNull); | |
| 10668 } | |
| 10669 | |
| 10670 void test_parsePostfixExpression_none_propertyAccess() { | |
| 10671 createParser('a.b'); | |
| 10672 Expression expression = parser.parsePostfixExpression(); | |
| 10673 expectNotNullIfNoErrors(expression); | |
| 10674 listener.assertNoErrors(); | |
| 10675 expect(expression, new isInstanceOf<PrefixedIdentifier>()); | |
| 10676 PrefixedIdentifier identifier = expression; | |
| 10677 expect(identifier.prefix, isNotNull); | |
| 10678 expect(identifier.identifier, isNotNull); | |
| 10679 } | |
| 10680 | |
| 10681 void test_parsePrefixedIdentifier_noPrefix() { | |
| 10682 String lexeme = "bar"; | |
| 10683 createParser(lexeme); | |
| 10684 Identifier identifier = parser.parsePrefixedIdentifier(); | |
| 10685 expectNotNullIfNoErrors(identifier); | |
| 10686 listener.assertNoErrors(); | |
| 10687 expect(identifier, new isInstanceOf<SimpleIdentifier>()); | |
| 10688 SimpleIdentifier simpleIdentifier = identifier; | |
| 10689 expect(simpleIdentifier.token, isNotNull); | |
| 10690 expect(simpleIdentifier.name, lexeme); | |
| 10691 } | |
| 10692 | |
| 10693 void test_parsePrefixedIdentifier_prefix() { | |
| 10694 String lexeme = "foo.bar"; | |
| 10695 createParser(lexeme); | |
| 10696 Identifier identifier = parser.parsePrefixedIdentifier(); | |
| 10697 expectNotNullIfNoErrors(identifier); | |
| 10698 listener.assertNoErrors(); | |
| 10699 expect(identifier, new isInstanceOf<PrefixedIdentifier>()); | |
| 10700 PrefixedIdentifier prefixedIdentifier = identifier; | |
| 10701 expect(prefixedIdentifier.prefix.name, "foo"); | |
| 10702 expect(prefixedIdentifier.period, isNotNull); | |
| 10703 expect(prefixedIdentifier.identifier.name, "bar"); | |
| 10704 } | |
| 10705 | |
| 10706 void test_parsePrimaryExpression_const() { | |
| 10707 createParser('const A()'); | |
| 10708 Expression expression = parser.parsePrimaryExpression(); | |
| 10709 expectNotNullIfNoErrors(expression); | |
| 10710 listener.assertNoErrors(); | |
| 10711 expect(expression, isNotNull); | |
| 10712 } | |
| 10713 | |
| 10714 void test_parsePrimaryExpression_double() { | |
| 10715 String doubleLiteral = "3.2e4"; | |
| 10716 createParser(doubleLiteral); | |
| 10717 Expression expression = parser.parsePrimaryExpression(); | |
| 10718 expectNotNullIfNoErrors(expression); | |
| 10719 listener.assertNoErrors(); | |
| 10720 expect(expression, new isInstanceOf<DoubleLiteral>()); | |
| 10721 DoubleLiteral literal = expression; | |
| 10722 expect(literal.literal, isNotNull); | |
| 10723 expect(literal.value, double.parse(doubleLiteral)); | |
| 10724 } | |
| 10725 | |
| 10726 void test_parsePrimaryExpression_false() { | |
| 10727 createParser('false'); | |
| 10728 Expression expression = parser.parsePrimaryExpression(); | |
| 10729 expectNotNullIfNoErrors(expression); | |
| 10730 listener.assertNoErrors(); | |
| 10731 expect(expression, new isInstanceOf<BooleanLiteral>()); | |
| 10732 BooleanLiteral literal = expression; | |
| 10733 expect(literal.literal, isNotNull); | |
| 10734 expect(literal.value, isFalse); | |
| 10735 } | |
| 10736 | |
| 10737 void test_parsePrimaryExpression_function_arguments() { | |
| 10738 createParser('(int i) => i + 1'); | |
| 10739 Expression expression = parser.parsePrimaryExpression(); | |
| 10740 expectNotNullIfNoErrors(expression); | |
| 10741 listener.assertNoErrors(); | |
| 10742 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 10743 FunctionExpression functionExpression = expression; | |
| 10744 expect(functionExpression.parameters, isNotNull); | |
| 10745 expect(functionExpression.body, isNotNull); | |
| 10746 } | |
| 10747 | |
| 10748 void test_parsePrimaryExpression_function_noArguments() { | |
| 10749 createParser('() => 42'); | |
| 10750 Expression expression = parser.parsePrimaryExpression(); | |
| 10751 expectNotNullIfNoErrors(expression); | |
| 10752 listener.assertNoErrors(); | |
| 10753 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 10754 FunctionExpression functionExpression = expression; | |
| 10755 expect(functionExpression.parameters, isNotNull); | |
| 10756 expect(functionExpression.body, isNotNull); | |
| 10757 } | |
| 10758 | |
| 10759 void test_parsePrimaryExpression_genericFunctionExpression() { | |
| 10760 createParser('<X, Y>(Map<X, Y> m, X x) => m[x]'); | |
| 10761 Expression expression = parser.parsePrimaryExpression(); | |
| 10762 expectNotNullIfNoErrors(expression); | |
| 10763 listener.assertNoErrors(); | |
| 10764 expect(expression, new isInstanceOf<FunctionExpression>()); | |
| 10765 FunctionExpression function = expression; | |
| 10766 expect(function.typeParameters, isNotNull); | |
| 10767 } | |
| 10768 | |
| 10769 void test_parsePrimaryExpression_hex() { | |
| 10770 String hexLiteral = "3F"; | |
| 10771 createParser('0x$hexLiteral'); | |
| 10772 Expression expression = parser.parsePrimaryExpression(); | |
| 10773 expectNotNullIfNoErrors(expression); | |
| 10774 listener.assertNoErrors(); | |
| 10775 expect(expression, new isInstanceOf<IntegerLiteral>()); | |
| 10776 IntegerLiteral literal = expression; | |
| 10777 expect(literal.literal, isNotNull); | |
| 10778 expect(literal.value, int.parse(hexLiteral, radix: 16)); | |
| 10779 } | |
| 10780 | |
| 10781 void test_parsePrimaryExpression_identifier() { | |
| 10782 createParser('a'); | |
| 10783 Expression expression = parser.parsePrimaryExpression(); | |
| 10784 expectNotNullIfNoErrors(expression); | |
| 10785 listener.assertNoErrors(); | |
| 10786 expect(expression, new isInstanceOf<SimpleIdentifier>()); | |
| 10787 SimpleIdentifier identifier = expression; | |
| 10788 expect(identifier, isNotNull); | |
| 10789 } | |
| 10790 | |
| 10791 void test_parsePrimaryExpression_int() { | |
| 10792 String intLiteral = "472"; | |
| 10793 createParser(intLiteral); | |
| 10794 Expression expression = parser.parsePrimaryExpression(); | |
| 10795 expectNotNullIfNoErrors(expression); | |
| 10796 listener.assertNoErrors(); | |
| 10797 expect(expression, new isInstanceOf<IntegerLiteral>()); | |
| 10798 IntegerLiteral literal = expression; | |
| 10799 expect(literal.literal, isNotNull); | |
| 10800 expect(literal.value, int.parse(intLiteral)); | |
| 10801 } | |
| 10802 | |
| 10803 void test_parsePrimaryExpression_listLiteral() { | |
| 10804 createParser('[ ]'); | |
| 10805 Expression expression = parser.parsePrimaryExpression(); | |
| 10806 expectNotNullIfNoErrors(expression); | |
| 10807 listener.assertNoErrors(); | |
| 10808 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 10809 ListLiteral literal = expression; | |
| 10810 expect(literal, isNotNull); | |
| 10811 } | |
| 10812 | |
| 10813 void test_parsePrimaryExpression_listLiteral_index() { | |
| 10814 createParser('[]'); | |
| 10815 Expression expression = parser.parsePrimaryExpression(); | |
| 10816 expectNotNullIfNoErrors(expression); | |
| 10817 listener.assertNoErrors(); | |
| 10818 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 10819 ListLiteral literal = expression; | |
| 10820 expect(literal, isNotNull); | |
| 10821 } | |
| 10822 | |
| 10823 void test_parsePrimaryExpression_listLiteral_typed() { | |
| 10824 createParser('<A>[ ]'); | |
| 10825 Expression expression = parser.parsePrimaryExpression(); | |
| 10826 expectNotNullIfNoErrors(expression); | |
| 10827 listener.assertNoErrors(); | |
| 10828 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 10829 ListLiteral literal = expression; | |
| 10830 expect(literal.typeArguments, isNotNull); | |
| 10831 expect(literal.typeArguments.arguments, hasLength(1)); | |
| 10832 } | |
| 10833 | |
| 10834 void test_parsePrimaryExpression_listLiteral_typed_genericComment() { | |
| 10835 enableGenericMethodComments = true; | |
| 10836 createParser('/*<A>*/[ ]'); | |
| 10837 Expression expression = parser.parsePrimaryExpression(); | |
| 10838 expectNotNullIfNoErrors(expression); | |
| 10839 listener.assertNoErrors(); | |
| 10840 expect(expression, new isInstanceOf<ListLiteral>()); | |
| 10841 ListLiteral literal = expression; | |
| 10842 expect(literal.typeArguments, isNotNull); | |
| 10843 expect(literal.typeArguments.arguments, hasLength(1)); | |
| 10844 } | |
| 10845 | |
| 10846 void test_parsePrimaryExpression_mapLiteral() { | |
| 10847 createParser('{}'); | |
| 10848 Expression expression = parser.parsePrimaryExpression(); | |
| 10849 expectNotNullIfNoErrors(expression); | |
| 10850 listener.assertNoErrors(); | |
| 10851 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 10852 MapLiteral literal = expression; | |
| 10853 expect(literal.typeArguments, isNull); | |
| 10854 expect(literal, isNotNull); | |
| 10855 } | |
| 10856 | |
| 10857 void test_parsePrimaryExpression_mapLiteral_typed() { | |
| 10858 createParser('<A, B>{}'); | |
| 10859 Expression expression = parser.parsePrimaryExpression(); | |
| 10860 expectNotNullIfNoErrors(expression); | |
| 10861 listener.assertNoErrors(); | |
| 10862 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 10863 MapLiteral literal = expression; | |
| 10864 expect(literal.typeArguments, isNotNull); | |
| 10865 expect(literal.typeArguments.arguments, hasLength(2)); | |
| 10866 } | |
| 10867 | |
| 10868 void test_parsePrimaryExpression_mapLiteral_typed_genericComment() { | |
| 10869 enableGenericMethodComments = true; | |
| 10870 createParser('/*<A, B>*/{}'); | |
| 10871 Expression expression = parser.parsePrimaryExpression(); | |
| 10872 expectNotNullIfNoErrors(expression); | |
| 10873 listener.assertNoErrors(); | |
| 10874 expect(expression, new isInstanceOf<MapLiteral>()); | |
| 10875 MapLiteral literal = expression; | |
| 10876 expect(literal.typeArguments, isNotNull); | |
| 10877 expect(literal.typeArguments.arguments, hasLength(2)); | |
| 10878 } | |
| 10879 | |
| 10880 void test_parsePrimaryExpression_new() { | |
| 10881 createParser('new A()'); | |
| 10882 Expression expression = parser.parsePrimaryExpression(); | |
| 10883 expectNotNullIfNoErrors(expression); | |
| 10884 listener.assertNoErrors(); | |
| 10885 expect(expression, new isInstanceOf<InstanceCreationExpression>()); | |
| 10886 InstanceCreationExpression creation = expression; | |
| 10887 expect(creation, isNotNull); | |
| 10888 } | |
| 10889 | |
| 10890 void test_parsePrimaryExpression_null() { | |
| 10891 createParser('null'); | |
| 10892 Expression expression = parser.parsePrimaryExpression(); | |
| 10893 expectNotNullIfNoErrors(expression); | |
| 10894 listener.assertNoErrors(); | |
| 10895 expect(expression, new isInstanceOf<NullLiteral>()); | |
| 10896 NullLiteral literal = expression; | |
| 10897 expect(literal.literal, isNotNull); | |
| 10898 } | |
| 10899 | |
| 10900 void test_parsePrimaryExpression_parenthesized() { | |
| 10901 createParser('(x)'); | |
| 10902 Expression expression = parser.parsePrimaryExpression(); | |
| 10903 expectNotNullIfNoErrors(expression); | |
| 10904 listener.assertNoErrors(); | |
| 10905 expect(expression, new isInstanceOf<ParenthesizedExpression>()); | |
| 10906 ParenthesizedExpression parens = expression; | |
| 10907 expect(parens, isNotNull); | |
| 10908 } | |
| 10909 | |
| 10910 void test_parsePrimaryExpression_string() { | |
| 10911 createParser('"string"'); | |
| 10912 Expression expression = parser.parsePrimaryExpression(); | |
| 10913 expectNotNullIfNoErrors(expression); | |
| 10914 listener.assertNoErrors(); | |
| 10915 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 10916 SimpleStringLiteral literal = expression; | |
| 10917 expect(literal.isMultiline, isFalse); | |
| 10918 expect(literal.isRaw, isFalse); | |
| 10919 expect(literal.value, "string"); | |
| 10920 } | |
| 10921 | |
| 10922 void test_parsePrimaryExpression_string_multiline() { | |
| 10923 createParser("'''string'''"); | |
| 10924 Expression expression = parser.parsePrimaryExpression(); | |
| 10925 expectNotNullIfNoErrors(expression); | |
| 10926 listener.assertNoErrors(); | |
| 10927 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 10928 SimpleStringLiteral literal = expression; | |
| 10929 expect(literal.isMultiline, isTrue); | |
| 10930 expect(literal.isRaw, isFalse); | |
| 10931 expect(literal.value, "string"); | |
| 10932 } | |
| 10933 | |
| 10934 void test_parsePrimaryExpression_string_raw() { | |
| 10935 createParser("r'string'"); | |
| 10936 Expression expression = parser.parsePrimaryExpression(); | |
| 10937 expectNotNullIfNoErrors(expression); | |
| 10938 listener.assertNoErrors(); | |
| 10939 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 10940 SimpleStringLiteral literal = expression; | |
| 10941 expect(literal.isMultiline, isFalse); | |
| 10942 expect(literal.isRaw, isTrue); | |
| 10943 expect(literal.value, "string"); | |
| 10944 } | |
| 10945 | |
| 10946 void test_parsePrimaryExpression_super() { | |
| 10947 createParser('super.x'); | |
| 10948 Expression expression = parser.parsePrimaryExpression(); | |
| 10949 expectNotNullIfNoErrors(expression); | |
| 10950 listener.assertNoErrors(); | |
| 10951 expect(expression, new isInstanceOf<PropertyAccess>()); | |
| 10952 PropertyAccess propertyAccess = expression; | |
| 10953 expect(propertyAccess.target is SuperExpression, isTrue); | |
| 10954 expect(propertyAccess.operator, isNotNull); | |
| 10955 expect(propertyAccess.operator.type, TokenType.PERIOD); | |
| 10956 expect(propertyAccess.propertyName, isNotNull); | |
| 10957 } | |
| 10958 | |
| 10959 void test_parsePrimaryExpression_this() { | |
| 10960 createParser('this'); | |
| 10961 Expression expression = parser.parsePrimaryExpression(); | |
| 10962 expectNotNullIfNoErrors(expression); | |
| 10963 listener.assertNoErrors(); | |
| 10964 expect(expression, new isInstanceOf<ThisExpression>()); | |
| 10965 ThisExpression thisExpression = expression; | |
| 10966 expect(thisExpression.thisKeyword, isNotNull); | |
| 10967 } | |
| 10968 | |
| 10969 void test_parsePrimaryExpression_true() { | |
| 10970 createParser('true'); | |
| 10971 Expression expression = parser.parsePrimaryExpression(); | |
| 10972 expectNotNullIfNoErrors(expression); | |
| 10973 listener.assertNoErrors(); | |
| 10974 expect(expression, new isInstanceOf<BooleanLiteral>()); | |
| 10975 BooleanLiteral literal = expression; | |
| 10976 expect(literal.literal, isNotNull); | |
| 10977 expect(literal.value, isTrue); | |
| 10978 } | |
| 10979 | |
| 10980 void test_Parser() { | 11733 void test_Parser() { |
| 10981 expect(new Parser(null, null), isNotNull); | 11734 expect(new Parser(null, null), isNotNull); |
| 10982 } | 11735 } |
| 10983 | 11736 |
| 10984 void test_parseRedirectingConstructorInvocation_named() { | 11737 void test_parseRedirectingConstructorInvocation_named() { |
| 10985 createParser('this.a()'); | 11738 createParser('this.a()'); |
| 10986 RedirectingConstructorInvocation invocation = | 11739 RedirectingConstructorInvocation invocation = |
| 10987 parser.parseRedirectingConstructorInvocation(true); | 11740 parser.parseRedirectingConstructorInvocation(true); |
| 10988 expectNotNullIfNoErrors(invocation); | 11741 expectNotNullIfNoErrors(invocation); |
| 10989 listener.assertNoErrors(); | 11742 listener.assertNoErrors(); |
| 10990 expect(invocation.argumentList, isNotNull); | 11743 expect(invocation.argumentList, isNotNull); |
| 10991 expect(invocation.constructorName, isNotNull); | 11744 expect(invocation.constructorName, isNotNull); |
| 10992 expect(invocation.thisKeyword, isNotNull); | 11745 expect(invocation.thisKeyword, isNotNull); |
| 10993 expect(invocation.period, isNotNull); | 11746 expect(invocation.period, isNotNull); |
| 10994 } | 11747 } |
| 10995 | 11748 |
| 10996 void test_parseRedirectingConstructorInvocation_unnamed() { | 11749 void test_parseRedirectingConstructorInvocation_unnamed() { |
| 10997 createParser('this()'); | 11750 createParser('this()'); |
| 10998 RedirectingConstructorInvocation invocation = | 11751 RedirectingConstructorInvocation invocation = |
| 10999 parser.parseRedirectingConstructorInvocation(false); | 11752 parser.parseRedirectingConstructorInvocation(false); |
| 11000 expectNotNullIfNoErrors(invocation); | 11753 expectNotNullIfNoErrors(invocation); |
| 11001 listener.assertNoErrors(); | 11754 listener.assertNoErrors(); |
| 11002 expect(invocation.argumentList, isNotNull); | 11755 expect(invocation.argumentList, isNotNull); |
| 11003 expect(invocation.constructorName, isNull); | 11756 expect(invocation.constructorName, isNull); |
| 11004 expect(invocation.thisKeyword, isNotNull); | 11757 expect(invocation.thisKeyword, isNotNull); |
| 11005 expect(invocation.period, isNull); | 11758 expect(invocation.period, isNull); |
| 11006 } | 11759 } |
| 11007 | 11760 |
| 11008 void test_parseRelationalExpression_as_functionType_noReturnType() { | |
| 11009 createParser('x as Function(int)'); | |
| 11010 Expression expression = parser.parseRelationalExpression(); | |
| 11011 expectNotNullIfNoErrors(expression); | |
| 11012 listener.assertNoErrors(); | |
| 11013 expect(expression, new isInstanceOf<AsExpression>()); | |
| 11014 AsExpression asExpression = expression; | |
| 11015 expect(asExpression.expression, isNotNull); | |
| 11016 expect(asExpression.asOperator, isNotNull); | |
| 11017 expect(asExpression.type, new isInstanceOf<GenericFunctionType>()); | |
| 11018 } | |
| 11019 | |
| 11020 void test_parseRelationalExpression_as_functionType_returnType() { | |
| 11021 createParser('x as String Function(int)'); | |
| 11022 Expression expression = parser.parseRelationalExpression(); | |
| 11023 expectNotNullIfNoErrors(expression); | |
| 11024 listener.assertNoErrors(); | |
| 11025 expect(expression, new isInstanceOf<AsExpression>()); | |
| 11026 AsExpression asExpression = expression; | |
| 11027 expect(asExpression.expression, isNotNull); | |
| 11028 expect(asExpression.asOperator, isNotNull); | |
| 11029 expect(asExpression.type, new isInstanceOf<GenericFunctionType>()); | |
| 11030 } | |
| 11031 | |
| 11032 void test_parseRelationalExpression_as_generic() { | |
| 11033 createParser('x as C<D>'); | |
| 11034 Expression expression = parser.parseRelationalExpression(); | |
| 11035 expectNotNullIfNoErrors(expression); | |
| 11036 listener.assertNoErrors(); | |
| 11037 expect(expression, new isInstanceOf<AsExpression>()); | |
| 11038 AsExpression asExpression = expression; | |
| 11039 expect(asExpression.expression, isNotNull); | |
| 11040 expect(asExpression.asOperator, isNotNull); | |
| 11041 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 11042 } | |
| 11043 | |
| 11044 void test_parseRelationalExpression_as_nullable() { | |
| 11045 enableNnbd = true; | |
| 11046 createParser('x as Y?)'); | |
| 11047 Expression expression = parser.parseRelationalExpression(); | |
| 11048 expectNotNullIfNoErrors(expression); | |
| 11049 listener.assertNoErrors(); | |
| 11050 expect(expression, new isInstanceOf<AsExpression>()); | |
| 11051 AsExpression asExpression = expression; | |
| 11052 expect(asExpression.expression, isNotNull); | |
| 11053 expect(asExpression.asOperator, isNotNull); | |
| 11054 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 11055 } | |
| 11056 | |
| 11057 void test_parseRelationalExpression_as_simple() { | |
| 11058 createParser('x as Y'); | |
| 11059 Expression expression = parser.parseRelationalExpression(); | |
| 11060 expectNotNullIfNoErrors(expression); | |
| 11061 listener.assertNoErrors(); | |
| 11062 expect(expression, new isInstanceOf<AsExpression>()); | |
| 11063 AsExpression asExpression = expression; | |
| 11064 expect(asExpression.expression, isNotNull); | |
| 11065 expect(asExpression.asOperator, isNotNull); | |
| 11066 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 11067 } | |
| 11068 | |
| 11069 void test_parseRelationalExpression_as_simple_function() { | |
| 11070 createParser('x as Function'); | |
| 11071 Expression expression = parser.parseRelationalExpression(); | |
| 11072 expectNotNullIfNoErrors(expression); | |
| 11073 listener.assertNoErrors(); | |
| 11074 expect(expression, new isInstanceOf<AsExpression>()); | |
| 11075 AsExpression asExpression = expression; | |
| 11076 expect(asExpression.expression, isNotNull); | |
| 11077 expect(asExpression.asOperator, isNotNull); | |
| 11078 expect(asExpression.type, new isInstanceOf<TypeName>()); | |
| 11079 } | |
| 11080 | |
| 11081 void test_parseRelationalExpression_is() { | |
| 11082 createParser('x is y'); | |
| 11083 Expression expression = parser.parseRelationalExpression(); | |
| 11084 expectNotNullIfNoErrors(expression); | |
| 11085 listener.assertNoErrors(); | |
| 11086 expect(expression, new isInstanceOf<IsExpression>()); | |
| 11087 IsExpression isExpression = expression; | |
| 11088 expect(isExpression.expression, isNotNull); | |
| 11089 expect(isExpression.isOperator, isNotNull); | |
| 11090 expect(isExpression.notOperator, isNull); | |
| 11091 expect(isExpression.type, isNotNull); | |
| 11092 } | |
| 11093 | |
| 11094 void test_parseRelationalExpression_is_nullable() { | |
| 11095 enableNnbd = true; | |
| 11096 createParser('x is y?)'); | |
| 11097 Expression expression = parser.parseRelationalExpression(); | |
| 11098 expectNotNullIfNoErrors(expression); | |
| 11099 listener.assertNoErrors(); | |
| 11100 expect(expression, new isInstanceOf<IsExpression>()); | |
| 11101 IsExpression isExpression = expression; | |
| 11102 expect(isExpression.expression, isNotNull); | |
| 11103 expect(isExpression.isOperator, isNotNull); | |
| 11104 expect(isExpression.notOperator, isNull); | |
| 11105 expect(isExpression.type, isNotNull); | |
| 11106 } | |
| 11107 | |
| 11108 void test_parseRelationalExpression_isNot() { | |
| 11109 createParser('x is! y'); | |
| 11110 Expression expression = parser.parseRelationalExpression(); | |
| 11111 expectNotNullIfNoErrors(expression); | |
| 11112 listener.assertNoErrors(); | |
| 11113 expect(expression, new isInstanceOf<IsExpression>()); | |
| 11114 IsExpression isExpression = expression; | |
| 11115 expect(isExpression.expression, isNotNull); | |
| 11116 expect(isExpression.isOperator, isNotNull); | |
| 11117 expect(isExpression.notOperator, isNotNull); | |
| 11118 expect(isExpression.type, isNotNull); | |
| 11119 } | |
| 11120 | |
| 11121 void test_parseRelationalExpression_normal() { | |
| 11122 createParser('x < y'); | |
| 11123 Expression expression = parser.parseRelationalExpression(); | |
| 11124 expectNotNullIfNoErrors(expression); | |
| 11125 listener.assertNoErrors(); | |
| 11126 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 11127 BinaryExpression binaryExpression = expression; | |
| 11128 expect(binaryExpression.leftOperand, isNotNull); | |
| 11129 expect(binaryExpression.operator, isNotNull); | |
| 11130 expect(binaryExpression.operator.type, TokenType.LT); | |
| 11131 expect(binaryExpression.rightOperand, isNotNull); | |
| 11132 } | |
| 11133 | |
| 11134 void test_parseRelationalExpression_super() { | |
| 11135 createParser('super < y'); | |
| 11136 Expression expression = parser.parseRelationalExpression(); | |
| 11137 expectNotNullIfNoErrors(expression); | |
| 11138 listener.assertNoErrors(); | |
| 11139 expect(expression, new isInstanceOf<BinaryExpression>()); | |
| 11140 BinaryExpression binaryExpression = expression; | |
| 11141 expect(binaryExpression.leftOperand, isNotNull); | |
| 11142 expect(binaryExpression.operator, isNotNull); | |
| 11143 expect(binaryExpression.operator.type, TokenType.LT); | |
| 11144 expect(binaryExpression.rightOperand, isNotNull); | |
| 11145 } | |
| 11146 | |
| 11147 void test_parseRethrowExpression() { | |
| 11148 createParser('rethrow;'); | |
| 11149 RethrowExpression expression = parser.parseRethrowExpression(); | |
| 11150 expectNotNullIfNoErrors(expression); | |
| 11151 listener.assertNoErrors(); | |
| 11152 expect(expression.rethrowKeyword, isNotNull); | |
| 11153 } | |
| 11154 | |
| 11155 void test_parseReturnStatement_noValue() { | 11761 void test_parseReturnStatement_noValue() { |
| 11156 createParser('return;'); | 11762 createParser('return;'); |
| 11157 ReturnStatement statement = parser.parseReturnStatement(); | 11763 ReturnStatement statement = parser.parseReturnStatement(); |
| 11158 expectNotNullIfNoErrors(statement); | 11764 expectNotNullIfNoErrors(statement); |
| 11159 listener.assertNoErrors(); | 11765 listener.assertNoErrors(); |
| 11160 expect(statement.returnKeyword, isNotNull); | 11766 expect(statement.returnKeyword, isNotNull); |
| 11161 expect(statement.expression, isNull); | 11767 expect(statement.expression, isNull); |
| 11162 expect(statement.semicolon, isNotNull); | 11768 expect(statement.semicolon, isNotNull); |
| 11163 } | 11769 } |
| 11164 | 11770 |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 11193 | 11799 |
| 11194 void test_parseReturnType_void() { | 11800 void test_parseReturnType_void() { |
| 11195 createParser('void'); | 11801 createParser('void'); |
| 11196 TypeName typeName = parser.parseReturnType(false); | 11802 TypeName typeName = parser.parseReturnType(false); |
| 11197 expectNotNullIfNoErrors(typeName); | 11803 expectNotNullIfNoErrors(typeName); |
| 11198 listener.assertNoErrors(); | 11804 listener.assertNoErrors(); |
| 11199 expect(typeName.name, isNotNull); | 11805 expect(typeName.name, isNotNull); |
| 11200 expect(typeName.typeArguments, isNull); | 11806 expect(typeName.typeArguments, isNull); |
| 11201 } | 11807 } |
| 11202 | 11808 |
| 11203 void test_parseShiftExpression_normal() { | |
| 11204 createParser('x << y'); | |
| 11205 BinaryExpression expression = parser.parseShiftExpression(); | |
| 11206 expectNotNullIfNoErrors(expression); | |
| 11207 listener.assertNoErrors(); | |
| 11208 expect(expression.leftOperand, isNotNull); | |
| 11209 expect(expression.operator, isNotNull); | |
| 11210 expect(expression.operator.type, TokenType.LT_LT); | |
| 11211 expect(expression.rightOperand, isNotNull); | |
| 11212 } | |
| 11213 | |
| 11214 void test_parseShiftExpression_super() { | |
| 11215 createParser('super << y'); | |
| 11216 BinaryExpression expression = parser.parseShiftExpression(); | |
| 11217 expectNotNullIfNoErrors(expression); | |
| 11218 listener.assertNoErrors(); | |
| 11219 expect(expression.leftOperand, isNotNull); | |
| 11220 expect(expression.operator, isNotNull); | |
| 11221 expect(expression.operator.type, TokenType.LT_LT); | |
| 11222 expect(expression.rightOperand, isNotNull); | |
| 11223 } | |
| 11224 | |
| 11225 void test_parseSimpleIdentifier1_normalIdentifier() { | |
| 11226 // TODO(brianwilkerson) Implement tests for this method. | |
| 11227 } | |
| 11228 | |
| 11229 void test_parseSimpleIdentifier_builtInIdentifier() { | |
| 11230 String lexeme = "as"; | |
| 11231 createParser(lexeme); | |
| 11232 SimpleIdentifier identifier = parser.parseSimpleIdentifier(); | |
| 11233 expectNotNullIfNoErrors(identifier); | |
| 11234 listener.assertNoErrors(); | |
| 11235 expect(identifier.token, isNotNull); | |
| 11236 expect(identifier.name, lexeme); | |
| 11237 } | |
| 11238 | |
| 11239 void test_parseSimpleIdentifier_normalIdentifier() { | |
| 11240 String lexeme = "foo"; | |
| 11241 createParser(lexeme); | |
| 11242 SimpleIdentifier identifier = parser.parseSimpleIdentifier(); | |
| 11243 expectNotNullIfNoErrors(identifier); | |
| 11244 listener.assertNoErrors(); | |
| 11245 expect(identifier.token, isNotNull); | |
| 11246 expect(identifier.name, lexeme); | |
| 11247 } | |
| 11248 | |
| 11249 void test_parseStatement_emptyTypeArgumentList() { | 11809 void test_parseStatement_emptyTypeArgumentList() { |
| 11250 createParser('C<> c;'); | 11810 createParser('C<> c;'); |
| 11251 Statement statement = parser.parseStatement2(); | 11811 Statement statement = parser.parseStatement2(); |
| 11252 expectNotNullIfNoErrors(statement); | 11812 expectNotNullIfNoErrors(statement); |
| 11253 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TYPE_NAME]); | 11813 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TYPE_NAME]); |
| 11254 expect(statement, new isInstanceOf<VariableDeclarationStatement>()); | 11814 expect(statement, new isInstanceOf<VariableDeclarationStatement>()); |
| 11255 VariableDeclarationStatement declaration = statement; | 11815 VariableDeclarationStatement declaration = statement; |
| 11256 VariableDeclarationList variables = declaration.variables; | 11816 VariableDeclarationList variables = declaration.variables; |
| 11257 TypeName type = variables.type; | 11817 TypeName type = variables.type; |
| 11258 TypeArgumentList argumentList = type.typeArguments; | 11818 TypeArgumentList argumentList = type.typeArguments; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11350 void test_parseStatements_multiple() { | 11910 void test_parseStatements_multiple() { |
| 11351 List<Statement> statements = parseStatements("return; return;", 2); | 11911 List<Statement> statements = parseStatements("return; return;", 2); |
| 11352 expect(statements, hasLength(2)); | 11912 expect(statements, hasLength(2)); |
| 11353 } | 11913 } |
| 11354 | 11914 |
| 11355 void test_parseStatements_single() { | 11915 void test_parseStatements_single() { |
| 11356 List<Statement> statements = parseStatements("return;", 1); | 11916 List<Statement> statements = parseStatements("return;", 1); |
| 11357 expect(statements, hasLength(1)); | 11917 expect(statements, hasLength(1)); |
| 11358 } | 11918 } |
| 11359 | 11919 |
| 11360 void test_parseStringLiteral_adjacent() { | |
| 11361 createParser("'a' 'b'"); | |
| 11362 Expression expression = parser.parseStringLiteral(); | |
| 11363 expectNotNullIfNoErrors(expression); | |
| 11364 listener.assertNoErrors(); | |
| 11365 expect(expression, new isInstanceOf<AdjacentStrings>()); | |
| 11366 AdjacentStrings literal = expression; | |
| 11367 NodeList<StringLiteral> strings = literal.strings; | |
| 11368 expect(strings, hasLength(2)); | |
| 11369 StringLiteral firstString = strings[0]; | |
| 11370 StringLiteral secondString = strings[1]; | |
| 11371 expect((firstString as SimpleStringLiteral).value, "a"); | |
| 11372 expect((secondString as SimpleStringLiteral).value, "b"); | |
| 11373 } | |
| 11374 | |
| 11375 void test_parseStringLiteral_endsWithInterpolation() { | |
| 11376 createParser(r"'x$y'"); | |
| 11377 Expression expression = parser.parseStringLiteral(); | |
| 11378 expectNotNullIfNoErrors(expression); | |
| 11379 listener.assertNoErrors(); | |
| 11380 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 11381 StringInterpolation interpolation = expression; | |
| 11382 expect(interpolation.elements, hasLength(3)); | |
| 11383 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 11384 InterpolationString element0 = interpolation.elements[0]; | |
| 11385 expect(element0.value, 'x'); | |
| 11386 expect( | |
| 11387 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 11388 InterpolationExpression element1 = interpolation.elements[1]; | |
| 11389 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 11390 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 11391 InterpolationString element2 = interpolation.elements[2]; | |
| 11392 expect(element2.value, ''); | |
| 11393 } | |
| 11394 | |
| 11395 void test_parseStringLiteral_interpolated() { | |
| 11396 createParser("'a \${b} c \$this d'"); | |
| 11397 Expression expression = parser.parseStringLiteral(); | |
| 11398 expectNotNullIfNoErrors(expression); | |
| 11399 listener.assertNoErrors(); | |
| 11400 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 11401 StringInterpolation literal = expression; | |
| 11402 NodeList<InterpolationElement> elements = literal.elements; | |
| 11403 expect(elements, hasLength(5)); | |
| 11404 expect(elements[0] is InterpolationString, isTrue); | |
| 11405 expect(elements[1] is InterpolationExpression, isTrue); | |
| 11406 expect(elements[2] is InterpolationString, isTrue); | |
| 11407 expect(elements[3] is InterpolationExpression, isTrue); | |
| 11408 expect(elements[4] is InterpolationString, isTrue); | |
| 11409 } | |
| 11410 | |
| 11411 void test_parseStringLiteral_multiline_encodedSpace() { | |
| 11412 createParser("'''\\x20\na'''"); | |
| 11413 Expression expression = parser.parseStringLiteral(); | |
| 11414 expectNotNullIfNoErrors(expression); | |
| 11415 listener.assertNoErrors(); | |
| 11416 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11417 SimpleStringLiteral literal = expression; | |
| 11418 expect(literal.literal, isNotNull); | |
| 11419 expect(literal.value, " \na"); | |
| 11420 } | |
| 11421 | |
| 11422 void test_parseStringLiteral_multiline_endsWithInterpolation() { | |
| 11423 createParser(r"'''x$y'''"); | |
| 11424 Expression expression = parser.parseStringLiteral(); | |
| 11425 expectNotNullIfNoErrors(expression); | |
| 11426 listener.assertNoErrors(); | |
| 11427 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 11428 StringInterpolation interpolation = expression; | |
| 11429 expect(interpolation.elements, hasLength(3)); | |
| 11430 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 11431 InterpolationString element0 = interpolation.elements[0]; | |
| 11432 expect(element0.value, 'x'); | |
| 11433 expect( | |
| 11434 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 11435 InterpolationExpression element1 = interpolation.elements[1]; | |
| 11436 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 11437 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 11438 InterpolationString element2 = interpolation.elements[2]; | |
| 11439 expect(element2.value, ''); | |
| 11440 } | |
| 11441 | |
| 11442 void test_parseStringLiteral_multiline_escapedBackslash() { | |
| 11443 createParser("'''\\\\\na'''"); | |
| 11444 Expression expression = parser.parseStringLiteral(); | |
| 11445 expectNotNullIfNoErrors(expression); | |
| 11446 listener.assertNoErrors(); | |
| 11447 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11448 SimpleStringLiteral literal = expression; | |
| 11449 expect(literal.literal, isNotNull); | |
| 11450 expect(literal.value, "\\\na"); | |
| 11451 } | |
| 11452 | |
| 11453 void test_parseStringLiteral_multiline_escapedBackslash_raw() { | |
| 11454 createParser("r'''\\\\\na'''"); | |
| 11455 Expression expression = parser.parseStringLiteral(); | |
| 11456 expectNotNullIfNoErrors(expression); | |
| 11457 listener.assertNoErrors(); | |
| 11458 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11459 SimpleStringLiteral literal = expression; | |
| 11460 expect(literal.literal, isNotNull); | |
| 11461 expect(literal.value, "\\\\\na"); | |
| 11462 } | |
| 11463 | |
| 11464 void test_parseStringLiteral_multiline_escapedEolMarker() { | |
| 11465 createParser("'''\\\na'''"); | |
| 11466 Expression expression = parser.parseStringLiteral(); | |
| 11467 expectNotNullIfNoErrors(expression); | |
| 11468 listener.assertNoErrors(); | |
| 11469 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11470 SimpleStringLiteral literal = expression; | |
| 11471 expect(literal.literal, isNotNull); | |
| 11472 expect(literal.value, "a"); | |
| 11473 } | |
| 11474 | |
| 11475 void test_parseStringLiteral_multiline_escapedEolMarker_raw() { | |
| 11476 createParser("r'''\\\na'''"); | |
| 11477 Expression expression = parser.parseStringLiteral(); | |
| 11478 expectNotNullIfNoErrors(expression); | |
| 11479 listener.assertNoErrors(); | |
| 11480 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11481 SimpleStringLiteral literal = expression; | |
| 11482 expect(literal.literal, isNotNull); | |
| 11483 expect(literal.value, "a"); | |
| 11484 } | |
| 11485 | |
| 11486 void test_parseStringLiteral_multiline_escapedSpaceAndEolMarker() { | |
| 11487 createParser("'''\\ \\\na'''"); | |
| 11488 Expression expression = parser.parseStringLiteral(); | |
| 11489 expectNotNullIfNoErrors(expression); | |
| 11490 listener.assertNoErrors(); | |
| 11491 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11492 SimpleStringLiteral literal = expression; | |
| 11493 expect(literal.literal, isNotNull); | |
| 11494 expect(literal.value, "a"); | |
| 11495 } | |
| 11496 | |
| 11497 void test_parseStringLiteral_multiline_escapedSpaceAndEolMarker_raw() { | |
| 11498 createParser("r'''\\ \\\na'''"); | |
| 11499 Expression expression = parser.parseStringLiteral(); | |
| 11500 expectNotNullIfNoErrors(expression); | |
| 11501 listener.assertNoErrors(); | |
| 11502 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11503 SimpleStringLiteral literal = expression; | |
| 11504 expect(literal.literal, isNotNull); | |
| 11505 expect(literal.value, "a"); | |
| 11506 } | |
| 11507 | |
| 11508 void test_parseStringLiteral_multiline_escapedTab() { | |
| 11509 createParser("'''\\t\na'''"); | |
| 11510 Expression expression = parser.parseStringLiteral(); | |
| 11511 expectNotNullIfNoErrors(expression); | |
| 11512 listener.assertNoErrors(); | |
| 11513 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11514 SimpleStringLiteral literal = expression; | |
| 11515 expect(literal.literal, isNotNull); | |
| 11516 expect(literal.value, "\t\na"); | |
| 11517 } | |
| 11518 | |
| 11519 void test_parseStringLiteral_multiline_escapedTab_raw() { | |
| 11520 createParser("r'''\\t\na'''"); | |
| 11521 Expression expression = parser.parseStringLiteral(); | |
| 11522 expectNotNullIfNoErrors(expression); | |
| 11523 listener.assertNoErrors(); | |
| 11524 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11525 SimpleStringLiteral literal = expression; | |
| 11526 expect(literal.literal, isNotNull); | |
| 11527 expect(literal.value, "\\t\na"); | |
| 11528 } | |
| 11529 | |
| 11530 void test_parseStringLiteral_multiline_quoteAfterInterpolation() { | |
| 11531 createParser(r"""'''$x'y'''"""); | |
| 11532 Expression expression = parser.parseStringLiteral(); | |
| 11533 expectNotNullIfNoErrors(expression); | |
| 11534 listener.assertNoErrors(); | |
| 11535 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 11536 StringInterpolation interpolation = expression; | |
| 11537 expect(interpolation.elements, hasLength(3)); | |
| 11538 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 11539 InterpolationString element0 = interpolation.elements[0]; | |
| 11540 expect(element0.value, ''); | |
| 11541 expect( | |
| 11542 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 11543 InterpolationExpression element1 = interpolation.elements[1]; | |
| 11544 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 11545 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 11546 InterpolationString element2 = interpolation.elements[2]; | |
| 11547 expect(element2.value, "'y"); | |
| 11548 } | |
| 11549 | |
| 11550 void test_parseStringLiteral_multiline_startsWithInterpolation() { | |
| 11551 createParser(r"'''${x}y'''"); | |
| 11552 Expression expression = parser.parseStringLiteral(); | |
| 11553 expectNotNullIfNoErrors(expression); | |
| 11554 listener.assertNoErrors(); | |
| 11555 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 11556 StringInterpolation interpolation = expression; | |
| 11557 expect(interpolation.elements, hasLength(3)); | |
| 11558 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 11559 InterpolationString element0 = interpolation.elements[0]; | |
| 11560 expect(element0.value, ''); | |
| 11561 expect( | |
| 11562 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 11563 InterpolationExpression element1 = interpolation.elements[1]; | |
| 11564 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 11565 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 11566 InterpolationString element2 = interpolation.elements[2]; | |
| 11567 expect(element2.value, 'y'); | |
| 11568 } | |
| 11569 | |
| 11570 void test_parseStringLiteral_multiline_twoSpaces() { | |
| 11571 createParser("''' \na'''"); | |
| 11572 Expression expression = parser.parseStringLiteral(); | |
| 11573 expectNotNullIfNoErrors(expression); | |
| 11574 listener.assertNoErrors(); | |
| 11575 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11576 SimpleStringLiteral literal = expression; | |
| 11577 expect(literal.literal, isNotNull); | |
| 11578 expect(literal.value, "a"); | |
| 11579 } | |
| 11580 | |
| 11581 void test_parseStringLiteral_multiline_twoSpaces_raw() { | |
| 11582 createParser("r''' \na'''"); | |
| 11583 Expression expression = parser.parseStringLiteral(); | |
| 11584 expectNotNullIfNoErrors(expression); | |
| 11585 listener.assertNoErrors(); | |
| 11586 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11587 SimpleStringLiteral literal = expression; | |
| 11588 expect(literal.literal, isNotNull); | |
| 11589 expect(literal.value, "a"); | |
| 11590 } | |
| 11591 | |
| 11592 void test_parseStringLiteral_multiline_untrimmed() { | |
| 11593 createParser("''' a\nb'''"); | |
| 11594 Expression expression = parser.parseStringLiteral(); | |
| 11595 expectNotNullIfNoErrors(expression); | |
| 11596 listener.assertNoErrors(); | |
| 11597 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11598 SimpleStringLiteral literal = expression; | |
| 11599 expect(literal.literal, isNotNull); | |
| 11600 expect(literal.value, " a\nb"); | |
| 11601 } | |
| 11602 | |
| 11603 void test_parseStringLiteral_quoteAfterInterpolation() { | |
| 11604 createParser(r"""'$x"'"""); | |
| 11605 Expression expression = parser.parseStringLiteral(); | |
| 11606 expectNotNullIfNoErrors(expression); | |
| 11607 listener.assertNoErrors(); | |
| 11608 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 11609 StringInterpolation interpolation = expression; | |
| 11610 expect(interpolation.elements, hasLength(3)); | |
| 11611 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 11612 InterpolationString element0 = interpolation.elements[0]; | |
| 11613 expect(element0.value, ''); | |
| 11614 expect( | |
| 11615 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 11616 InterpolationExpression element1 = interpolation.elements[1]; | |
| 11617 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 11618 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 11619 InterpolationString element2 = interpolation.elements[2]; | |
| 11620 expect(element2.value, '"'); | |
| 11621 } | |
| 11622 | |
| 11623 void test_parseStringLiteral_single() { | |
| 11624 createParser("'a'"); | |
| 11625 Expression expression = parser.parseStringLiteral(); | |
| 11626 expectNotNullIfNoErrors(expression); | |
| 11627 listener.assertNoErrors(); | |
| 11628 expect(expression, new isInstanceOf<SimpleStringLiteral>()); | |
| 11629 SimpleStringLiteral literal = expression; | |
| 11630 expect(literal.literal, isNotNull); | |
| 11631 expect(literal.value, "a"); | |
| 11632 } | |
| 11633 | |
| 11634 void test_parseStringLiteral_startsWithInterpolation() { | |
| 11635 createParser(r"'${x}y'"); | |
| 11636 Expression expression = parser.parseStringLiteral(); | |
| 11637 expectNotNullIfNoErrors(expression); | |
| 11638 listener.assertNoErrors(); | |
| 11639 expect(expression, new isInstanceOf<StringInterpolation>()); | |
| 11640 StringInterpolation interpolation = expression; | |
| 11641 expect(interpolation.elements, hasLength(3)); | |
| 11642 expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); | |
| 11643 InterpolationString element0 = interpolation.elements[0]; | |
| 11644 expect(element0.value, ''); | |
| 11645 expect( | |
| 11646 interpolation.elements[1], new isInstanceOf<InterpolationExpression>()); | |
| 11647 InterpolationExpression element1 = interpolation.elements[1]; | |
| 11648 expect(element1.expression, new isInstanceOf<SimpleIdentifier>()); | |
| 11649 expect(interpolation.elements[2], new isInstanceOf<InterpolationString>()); | |
| 11650 InterpolationString element2 = interpolation.elements[2]; | |
| 11651 expect(element2.value, 'y'); | |
| 11652 } | |
| 11653 | |
| 11654 void test_parseSuperConstructorInvocation_named() { | |
| 11655 createParser('super.a()'); | |
| 11656 SuperConstructorInvocation invocation = | |
| 11657 parser.parseSuperConstructorInvocation(); | |
| 11658 expectNotNullIfNoErrors(invocation); | |
| 11659 listener.assertNoErrors(); | |
| 11660 expect(invocation.argumentList, isNotNull); | |
| 11661 expect(invocation.constructorName, isNotNull); | |
| 11662 expect(invocation.superKeyword, isNotNull); | |
| 11663 expect(invocation.period, isNotNull); | |
| 11664 } | |
| 11665 | |
| 11666 void test_parseSuperConstructorInvocation_unnamed() { | |
| 11667 createParser('super()'); | |
| 11668 SuperConstructorInvocation invocation = | |
| 11669 parser.parseSuperConstructorInvocation(); | |
| 11670 expectNotNullIfNoErrors(invocation); | |
| 11671 listener.assertNoErrors(); | |
| 11672 expect(invocation.argumentList, isNotNull); | |
| 11673 expect(invocation.constructorName, isNull); | |
| 11674 expect(invocation.superKeyword, isNotNull); | |
| 11675 expect(invocation.period, isNull); | |
| 11676 } | |
| 11677 | |
| 11678 void test_parseSwitchStatement_case() { | 11920 void test_parseSwitchStatement_case() { |
| 11679 createParser('switch (a) {case 1: return "I";}'); | 11921 createParser('switch (a) {case 1: return "I";}'); |
| 11680 SwitchStatement statement = parser.parseSwitchStatement(); | 11922 SwitchStatement statement = parser.parseSwitchStatement(); |
| 11681 expectNotNullIfNoErrors(statement); | 11923 expectNotNullIfNoErrors(statement); |
| 11682 listener.assertNoErrors(); | 11924 listener.assertNoErrors(); |
| 11683 expect(statement.switchKeyword, isNotNull); | 11925 expect(statement.switchKeyword, isNotNull); |
| 11684 expect(statement.leftParenthesis, isNotNull); | 11926 expect(statement.leftParenthesis, isNotNull); |
| 11685 expect(statement.expression, isNotNull); | 11927 expect(statement.expression, isNotNull); |
| 11686 expect(statement.rightParenthesis, isNotNull); | 11928 expect(statement.rightParenthesis, isNotNull); |
| 11687 expect(statement.leftBracket, isNotNull); | 11929 expect(statement.leftBracket, isNotNull); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11753 expect(statement.switchKeyword, isNotNull); | 11995 expect(statement.switchKeyword, isNotNull); |
| 11754 expect(statement.leftParenthesis, isNotNull); | 11996 expect(statement.leftParenthesis, isNotNull); |
| 11755 expect(statement.expression, isNotNull); | 11997 expect(statement.expression, isNotNull); |
| 11756 expect(statement.rightParenthesis, isNotNull); | 11998 expect(statement.rightParenthesis, isNotNull); |
| 11757 expect(statement.leftBracket, isNotNull); | 11999 expect(statement.leftBracket, isNotNull); |
| 11758 expect(statement.members, hasLength(1)); | 12000 expect(statement.members, hasLength(1)); |
| 11759 expect(statement.members[0].statements, hasLength(3)); | 12001 expect(statement.members[0].statements, hasLength(3)); |
| 11760 expect(statement.rightBracket, isNotNull); | 12002 expect(statement.rightBracket, isNotNull); |
| 11761 } | 12003 } |
| 11762 | 12004 |
| 11763 void test_parseSymbolLiteral_builtInIdentifier() { | |
| 11764 createParser('#dynamic.static.abstract'); | |
| 11765 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 11766 expectNotNullIfNoErrors(literal); | |
| 11767 listener.assertNoErrors(); | |
| 11768 expect(literal.poundSign, isNotNull); | |
| 11769 List<Token> components = literal.components; | |
| 11770 expect(components, hasLength(3)); | |
| 11771 expect(components[0].lexeme, "dynamic"); | |
| 11772 expect(components[1].lexeme, "static"); | |
| 11773 expect(components[2].lexeme, "abstract"); | |
| 11774 } | |
| 11775 | |
| 11776 void test_parseSymbolLiteral_multiple() { | |
| 11777 createParser('#a.b.c'); | |
| 11778 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 11779 expectNotNullIfNoErrors(literal); | |
| 11780 listener.assertNoErrors(); | |
| 11781 expect(literal.poundSign, isNotNull); | |
| 11782 List<Token> components = literal.components; | |
| 11783 expect(components, hasLength(3)); | |
| 11784 expect(components[0].lexeme, "a"); | |
| 11785 expect(components[1].lexeme, "b"); | |
| 11786 expect(components[2].lexeme, "c"); | |
| 11787 } | |
| 11788 | |
| 11789 void test_parseSymbolLiteral_operator() { | |
| 11790 createParser('#=='); | |
| 11791 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 11792 expectNotNullIfNoErrors(literal); | |
| 11793 listener.assertNoErrors(); | |
| 11794 expect(literal.poundSign, isNotNull); | |
| 11795 List<Token> components = literal.components; | |
| 11796 expect(components, hasLength(1)); | |
| 11797 expect(components[0].lexeme, "=="); | |
| 11798 } | |
| 11799 | |
| 11800 void test_parseSymbolLiteral_single() { | |
| 11801 createParser('#a'); | |
| 11802 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 11803 expectNotNullIfNoErrors(literal); | |
| 11804 listener.assertNoErrors(); | |
| 11805 expect(literal.poundSign, isNotNull); | |
| 11806 List<Token> components = literal.components; | |
| 11807 expect(components, hasLength(1)); | |
| 11808 expect(components[0].lexeme, "a"); | |
| 11809 } | |
| 11810 | |
| 11811 void test_parseSymbolLiteral_void() { | |
| 11812 createParser('#void'); | |
| 11813 SymbolLiteral literal = parser.parseSymbolLiteral(); | |
| 11814 expectNotNullIfNoErrors(literal); | |
| 11815 listener.assertNoErrors(); | |
| 11816 expect(literal.poundSign, isNotNull); | |
| 11817 List<Token> components = literal.components; | |
| 11818 expect(components, hasLength(1)); | |
| 11819 expect(components[0].lexeme, "void"); | |
| 11820 } | |
| 11821 | |
| 11822 void test_parseThrowExpression() { | |
| 11823 createParser('throw x;'); | |
| 11824 Expression expression = parser.parseThrowExpression(); | |
| 11825 expectNotNullIfNoErrors(expression); | |
| 11826 listener.assertNoErrors(); | |
| 11827 expect(expression, new isInstanceOf<ThrowExpression>()); | |
| 11828 ThrowExpression throwExpression = expression; | |
| 11829 expect(throwExpression.throwKeyword, isNotNull); | |
| 11830 expect(throwExpression.expression, isNotNull); | |
| 11831 } | |
| 11832 | |
| 11833 void test_parseThrowExpressionWithoutCascade() { | |
| 11834 createParser('throw x;'); | |
| 11835 Expression expression = parser.parseThrowExpressionWithoutCascade(); | |
| 11836 expectNotNullIfNoErrors(expression); | |
| 11837 listener.assertNoErrors(); | |
| 11838 expect(expression, new isInstanceOf<ThrowExpression>()); | |
| 11839 ThrowExpression throwExpression = expression; | |
| 11840 expect(throwExpression.throwKeyword, isNotNull); | |
| 11841 expect(throwExpression.expression, isNotNull); | |
| 11842 } | |
| 11843 | |
| 11844 void test_parseTryStatement_catch() { | 12005 void test_parseTryStatement_catch() { |
| 11845 createParser('try {} catch (e) {}'); | 12006 createParser('try {} catch (e) {}'); |
| 11846 TryStatement statement = parser.parseTryStatement(); | 12007 TryStatement statement = parser.parseTryStatement(); |
| 11847 expectNotNullIfNoErrors(statement); | 12008 expectNotNullIfNoErrors(statement); |
| 11848 listener.assertNoErrors(); | 12009 listener.assertNoErrors(); |
| 11849 expect(statement.tryKeyword, isNotNull); | 12010 expect(statement.tryKeyword, isNotNull); |
| 11850 expect(statement.body, isNotNull); | 12011 expect(statement.body, isNotNull); |
| 11851 NodeList<CatchClause> catchClauses = statement.catchClauses; | 12012 NodeList<CatchClause> catchClauses = statement.catchClauses; |
| 11852 expect(catchClauses, hasLength(1)); | 12013 expect(catchClauses, hasLength(1)); |
| 11853 CatchClause clause = catchClauses[0]; | 12014 CatchClause clause = catchClauses[0]; |
| (...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 12383 void test_parseTypeParameterList_withTrailingEquals() { | 12544 void test_parseTypeParameterList_withTrailingEquals() { |
| 12384 createParser('<A>='); | 12545 createParser('<A>='); |
| 12385 TypeParameterList parameterList = parser.parseTypeParameterList(); | 12546 TypeParameterList parameterList = parser.parseTypeParameterList(); |
| 12386 expectNotNullIfNoErrors(parameterList); | 12547 expectNotNullIfNoErrors(parameterList); |
| 12387 listener.assertNoErrors(); | 12548 listener.assertNoErrors(); |
| 12388 expect(parameterList.leftBracket, isNotNull); | 12549 expect(parameterList.leftBracket, isNotNull); |
| 12389 expect(parameterList.rightBracket, isNotNull); | 12550 expect(parameterList.rightBracket, isNotNull); |
| 12390 expect(parameterList.typeParameters, hasLength(1)); | 12551 expect(parameterList.typeParameters, hasLength(1)); |
| 12391 } | 12552 } |
| 12392 | 12553 |
| 12393 void test_parseUnaryExpression_decrement_normal() { | |
| 12394 createParser('--x'); | |
| 12395 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12396 expectNotNullIfNoErrors(expression); | |
| 12397 listener.assertNoErrors(); | |
| 12398 expect(expression.operator, isNotNull); | |
| 12399 expect(expression.operator.type, TokenType.MINUS_MINUS); | |
| 12400 expect(expression.operand, isNotNull); | |
| 12401 } | |
| 12402 | |
| 12403 void test_parseUnaryExpression_decrement_super() { | |
| 12404 createParser('--super'); | |
| 12405 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12406 expectNotNullIfNoErrors(expression); | |
| 12407 listener.assertNoErrors(); | |
| 12408 expect(expression.operator, isNotNull); | |
| 12409 expect(expression.operator.type, TokenType.MINUS); | |
| 12410 Expression innerExpression = expression.operand; | |
| 12411 expect(innerExpression, isNotNull); | |
| 12412 expect(innerExpression is PrefixExpression, isTrue); | |
| 12413 PrefixExpression operand = innerExpression as PrefixExpression; | |
| 12414 expect(operand.operator, isNotNull); | |
| 12415 expect(operand.operator.type, TokenType.MINUS); | |
| 12416 expect(operand.operand, isNotNull); | |
| 12417 } | |
| 12418 | |
| 12419 void test_parseUnaryExpression_decrement_super_propertyAccess() { | |
| 12420 createParser('--super.x'); | |
| 12421 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12422 expectNotNullIfNoErrors(expression); | |
| 12423 listener.assertNoErrors(); | |
| 12424 expect(expression.operator, isNotNull); | |
| 12425 expect(expression.operator.type, TokenType.MINUS_MINUS); | |
| 12426 expect(expression.operand, isNotNull); | |
| 12427 PropertyAccess operand = expression.operand as PropertyAccess; | |
| 12428 expect(operand.target is SuperExpression, isTrue); | |
| 12429 expect(operand.propertyName.name, "x"); | |
| 12430 } | |
| 12431 | |
| 12432 void test_parseUnaryExpression_decrement_super_withComment() { | |
| 12433 createParser('/* 0 */ --super'); | |
| 12434 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12435 expectNotNullIfNoErrors(expression); | |
| 12436 listener.assertNoErrors(); | |
| 12437 expect(expression.operator, isNotNull); | |
| 12438 expect(expression.operator.type, TokenType.MINUS); | |
| 12439 expect(expression.operator.precedingComments, isNotNull); | |
| 12440 Expression innerExpression = expression.operand; | |
| 12441 expect(innerExpression, isNotNull); | |
| 12442 expect(innerExpression is PrefixExpression, isTrue); | |
| 12443 PrefixExpression operand = innerExpression as PrefixExpression; | |
| 12444 expect(operand.operator, isNotNull); | |
| 12445 expect(operand.operator.type, TokenType.MINUS); | |
| 12446 expect(operand.operand, isNotNull); | |
| 12447 } | |
| 12448 | |
| 12449 void test_parseUnaryExpression_increment_normal() { | |
| 12450 createParser('++x'); | |
| 12451 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12452 expectNotNullIfNoErrors(expression); | |
| 12453 listener.assertNoErrors(); | |
| 12454 expect(expression.operator, isNotNull); | |
| 12455 expect(expression.operator.type, TokenType.PLUS_PLUS); | |
| 12456 expect(expression.operand, isNotNull); | |
| 12457 } | |
| 12458 | |
| 12459 void test_parseUnaryExpression_increment_super_index() { | |
| 12460 createParser('++super[0]'); | |
| 12461 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12462 expectNotNullIfNoErrors(expression); | |
| 12463 listener.assertNoErrors(); | |
| 12464 expect(expression.operator, isNotNull); | |
| 12465 expect(expression.operator.type, TokenType.PLUS_PLUS); | |
| 12466 expect(expression.operand, isNotNull); | |
| 12467 IndexExpression operand = expression.operand as IndexExpression; | |
| 12468 expect(operand.realTarget is SuperExpression, isTrue); | |
| 12469 expect(operand.index is IntegerLiteral, isTrue); | |
| 12470 } | |
| 12471 | |
| 12472 void test_parseUnaryExpression_increment_super_propertyAccess() { | |
| 12473 createParser('++super.x'); | |
| 12474 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12475 expectNotNullIfNoErrors(expression); | |
| 12476 listener.assertNoErrors(); | |
| 12477 expect(expression.operator, isNotNull); | |
| 12478 expect(expression.operator.type, TokenType.PLUS_PLUS); | |
| 12479 expect(expression.operand, isNotNull); | |
| 12480 PropertyAccess operand = expression.operand as PropertyAccess; | |
| 12481 expect(operand.target is SuperExpression, isTrue); | |
| 12482 expect(operand.propertyName.name, "x"); | |
| 12483 } | |
| 12484 | |
| 12485 void test_parseUnaryExpression_minus_normal() { | |
| 12486 createParser('-x'); | |
| 12487 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12488 expectNotNullIfNoErrors(expression); | |
| 12489 listener.assertNoErrors(); | |
| 12490 expect(expression.operator, isNotNull); | |
| 12491 expect(expression.operator.type, TokenType.MINUS); | |
| 12492 expect(expression.operand, isNotNull); | |
| 12493 } | |
| 12494 | |
| 12495 void test_parseUnaryExpression_minus_super() { | |
| 12496 createParser('-super'); | |
| 12497 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12498 expectNotNullIfNoErrors(expression); | |
| 12499 listener.assertNoErrors(); | |
| 12500 expect(expression.operator, isNotNull); | |
| 12501 expect(expression.operator.type, TokenType.MINUS); | |
| 12502 expect(expression.operand, isNotNull); | |
| 12503 } | |
| 12504 | |
| 12505 void test_parseUnaryExpression_not_normal() { | |
| 12506 createParser('!x'); | |
| 12507 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12508 expectNotNullIfNoErrors(expression); | |
| 12509 listener.assertNoErrors(); | |
| 12510 expect(expression.operator, isNotNull); | |
| 12511 expect(expression.operator.type, TokenType.BANG); | |
| 12512 expect(expression.operand, isNotNull); | |
| 12513 } | |
| 12514 | |
| 12515 void test_parseUnaryExpression_not_super() { | |
| 12516 createParser('!super'); | |
| 12517 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12518 expectNotNullIfNoErrors(expression); | |
| 12519 listener.assertNoErrors(); | |
| 12520 expect(expression.operator, isNotNull); | |
| 12521 expect(expression.operator.type, TokenType.BANG); | |
| 12522 expect(expression.operand, isNotNull); | |
| 12523 } | |
| 12524 | |
| 12525 void test_parseUnaryExpression_tilda_normal() { | |
| 12526 createParser('~x'); | |
| 12527 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12528 expectNotNullIfNoErrors(expression); | |
| 12529 listener.assertNoErrors(); | |
| 12530 expect(expression.operator, isNotNull); | |
| 12531 expect(expression.operator.type, TokenType.TILDE); | |
| 12532 expect(expression.operand, isNotNull); | |
| 12533 } | |
| 12534 | |
| 12535 void test_parseUnaryExpression_tilda_super() { | |
| 12536 createParser('~super'); | |
| 12537 PrefixExpression expression = parser.parseUnaryExpression(); | |
| 12538 expectNotNullIfNoErrors(expression); | |
| 12539 listener.assertNoErrors(); | |
| 12540 expect(expression.operator, isNotNull); | |
| 12541 expect(expression.operator.type, TokenType.TILDE); | |
| 12542 expect(expression.operand, isNotNull); | |
| 12543 } | |
| 12544 | |
| 12545 void test_parseVariableDeclaration_equals() { | 12554 void test_parseVariableDeclaration_equals() { |
| 12546 createParser('a = b'); | 12555 createParser('a = b'); |
| 12547 VariableDeclaration declaration = parser.parseVariableDeclaration(); | 12556 VariableDeclaration declaration = parser.parseVariableDeclaration(); |
| 12548 expectNotNullIfNoErrors(declaration); | 12557 expectNotNullIfNoErrors(declaration); |
| 12549 listener.assertNoErrors(); | 12558 listener.assertNoErrors(); |
| 12550 expect(declaration.name, isNotNull); | 12559 expect(declaration.name, isNotNull); |
| 12551 expect(declaration.equals, isNotNull); | 12560 expect(declaration.equals, isNotNull); |
| 12552 expect(declaration.initializer, isNotNull); | 12561 expect(declaration.initializer, isNotNull); |
| 12553 } | 12562 } |
| 12554 | 12563 |
| (...skipping 2030 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 14585 expect(typeAlias.name, isNotNull); | 14594 expect(typeAlias.name, isNotNull); |
| 14586 expect(typeAlias.typeParameters, isNull); | 14595 expect(typeAlias.typeParameters, isNull); |
| 14587 expect(typeAlias.semicolon, isNotNull); | 14596 expect(typeAlias.semicolon, isNotNull); |
| 14588 GenericFunctionType functionType = typeAlias.functionType; | 14597 GenericFunctionType functionType = typeAlias.functionType; |
| 14589 expect(functionType, isNotNull); | 14598 expect(functionType, isNotNull); |
| 14590 expect(functionType.parameters, isNotNull); | 14599 expect(functionType.parameters, isNotNull); |
| 14591 expect(functionType.returnType, isNotNull); | 14600 expect(functionType.returnType, isNotNull); |
| 14592 expect(functionType.typeParameters, isNull); | 14601 expect(functionType.typeParameters, isNull); |
| 14593 } | 14602 } |
| 14594 } | 14603 } |
| OLD | NEW |