| 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.dart.ast.ast_test; | 5 library analyzer.test.dart.ast.ast_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/token.dart'; | 8 import 'package:analyzer/dart/ast/token.dart'; |
| 9 import 'package:analyzer/src/dart/ast/token.dart'; | 9 import 'package:analyzer/src/dart/ast/token.dart'; |
| 10 import 'package:analyzer/src/generated/testing/ast_factory.dart'; | 10 import 'package:analyzer/src/generated/testing/ast_test_factory.dart'; |
| 11 import 'package:analyzer/src/generated/testing/token_factory.dart'; | 11 import 'package:analyzer/src/generated/testing/token_factory.dart'; |
| 12 import 'package:test/test.dart'; | 12 import 'package:test/test.dart'; |
| 13 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 13 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 14 | 14 |
| 15 import '../../generated/parser_test.dart' show ParserTestCase; | 15 import '../../generated/parser_test.dart' show ParserTestCase; |
| 16 import '../../generated/test_support.dart'; | 16 import '../../generated/test_support.dart'; |
| 17 | 17 |
| 18 main() { | 18 main() { |
| 19 defineReflectiveSuite(() { | 19 defineReflectiveSuite(() { |
| 20 defineReflectiveTests(ClassDeclarationTest); | 20 defineReflectiveTests(ClassDeclarationTest); |
| 21 defineReflectiveTests(ClassTypeAliasTest); | 21 defineReflectiveTests(ClassTypeAliasTest); |
| 22 defineReflectiveTests(ConstructorDeclarationTest); | 22 defineReflectiveTests(ConstructorDeclarationTest); |
| 23 defineReflectiveTests(FieldFormalParameterTest); | 23 defineReflectiveTests(FieldFormalParameterTest); |
| 24 defineReflectiveTests(IndexExpressionTest); | 24 defineReflectiveTests(IndexExpressionTest); |
| 25 defineReflectiveTests(MethodDeclarationTest); | 25 defineReflectiveTests(MethodDeclarationTest); |
| 26 defineReflectiveTests(NodeListTest); | 26 defineReflectiveTests(NodeListTest); |
| 27 defineReflectiveTests(SimpleIdentifierTest); | 27 defineReflectiveTests(SimpleIdentifierTest); |
| 28 defineReflectiveTests(SimpleStringLiteralTest); | 28 defineReflectiveTests(SimpleStringLiteralTest); |
| 29 defineReflectiveTests(StringInterpolationTest); | 29 defineReflectiveTests(StringInterpolationTest); |
| 30 defineReflectiveTests(VariableDeclarationTest); | 30 defineReflectiveTests(VariableDeclarationTest); |
| 31 }); | 31 }); |
| 32 } | 32 } |
| 33 | 33 |
| 34 @reflectiveTest | 34 @reflectiveTest |
| 35 class ClassDeclarationTest extends ParserTestCase { | 35 class ClassDeclarationTest extends ParserTestCase { |
| 36 void test_getConstructor() { | 36 void test_getConstructor() { |
| 37 List<ConstructorInitializer> initializers = | 37 List<ConstructorInitializer> initializers = |
| 38 new List<ConstructorInitializer>(); | 38 new List<ConstructorInitializer>(); |
| 39 ConstructorDeclaration defaultConstructor = | 39 ConstructorDeclaration defaultConstructor = |
| 40 AstFactory.constructorDeclaration(AstFactory.identifier3("Test"), null, | 40 AstTestFactory.constructorDeclaration( |
| 41 AstFactory.formalParameterList(), initializers); | 41 AstTestFactory.identifier3("Test"), |
| 42 ConstructorDeclaration aConstructor = AstFactory.constructorDeclaration( | 42 null, |
| 43 AstFactory.identifier3("Test"), | 43 AstTestFactory.formalParameterList(), |
| 44 initializers); |
| 45 ConstructorDeclaration aConstructor = AstTestFactory.constructorDeclaration( |
| 46 AstTestFactory.identifier3("Test"), |
| 44 "a", | 47 "a", |
| 45 AstFactory.formalParameterList(), | 48 AstTestFactory.formalParameterList(), |
| 46 initializers); | 49 initializers); |
| 47 ConstructorDeclaration bConstructor = AstFactory.constructorDeclaration( | 50 ConstructorDeclaration bConstructor = AstTestFactory.constructorDeclaration( |
| 48 AstFactory.identifier3("Test"), | 51 AstTestFactory.identifier3("Test"), |
| 49 "b", | 52 "b", |
| 50 AstFactory.formalParameterList(), | 53 AstTestFactory.formalParameterList(), |
| 51 initializers); | 54 initializers); |
| 52 ClassDeclaration clazz = AstFactory.classDeclaration(null, "Test", null, | 55 ClassDeclaration clazz = AstTestFactory.classDeclaration(null, "Test", null, |
| 53 null, null, null, [defaultConstructor, aConstructor, bConstructor]); | 56 null, null, null, [defaultConstructor, aConstructor, bConstructor]); |
| 54 expect(clazz.getConstructor(null), same(defaultConstructor)); | 57 expect(clazz.getConstructor(null), same(defaultConstructor)); |
| 55 expect(clazz.getConstructor("a"), same(aConstructor)); | 58 expect(clazz.getConstructor("a"), same(aConstructor)); |
| 56 expect(clazz.getConstructor("b"), same(bConstructor)); | 59 expect(clazz.getConstructor("b"), same(bConstructor)); |
| 57 expect(clazz.getConstructor("noSuchConstructor"), same(null)); | 60 expect(clazz.getConstructor("noSuchConstructor"), same(null)); |
| 58 } | 61 } |
| 59 | 62 |
| 60 void test_getField() { | 63 void test_getField() { |
| 61 VariableDeclaration aVar = AstFactory.variableDeclaration("a"); | 64 VariableDeclaration aVar = AstTestFactory.variableDeclaration("a"); |
| 62 VariableDeclaration bVar = AstFactory.variableDeclaration("b"); | 65 VariableDeclaration bVar = AstTestFactory.variableDeclaration("b"); |
| 63 VariableDeclaration cVar = AstFactory.variableDeclaration("c"); | 66 VariableDeclaration cVar = AstTestFactory.variableDeclaration("c"); |
| 64 ClassDeclaration clazz = | 67 ClassDeclaration clazz = |
| 65 AstFactory.classDeclaration(null, "Test", null, null, null, null, [ | 68 AstTestFactory.classDeclaration(null, "Test", null, null, null, null, [ |
| 66 AstFactory.fieldDeclaration2(false, null, [aVar]), | 69 AstTestFactory.fieldDeclaration2(false, null, [aVar]), |
| 67 AstFactory.fieldDeclaration2(false, null, [bVar, cVar]) | 70 AstTestFactory.fieldDeclaration2(false, null, [bVar, cVar]) |
| 68 ]); | 71 ]); |
| 69 expect(clazz.getField("a"), same(aVar)); | 72 expect(clazz.getField("a"), same(aVar)); |
| 70 expect(clazz.getField("b"), same(bVar)); | 73 expect(clazz.getField("b"), same(bVar)); |
| 71 expect(clazz.getField("c"), same(cVar)); | 74 expect(clazz.getField("c"), same(cVar)); |
| 72 expect(clazz.getField("noSuchField"), same(null)); | 75 expect(clazz.getField("noSuchField"), same(null)); |
| 73 } | 76 } |
| 74 | 77 |
| 75 void test_getMethod() { | 78 void test_getMethod() { |
| 76 MethodDeclaration aMethod = AstFactory.methodDeclaration(null, null, null, | 79 MethodDeclaration aMethod = AstTestFactory.methodDeclaration( |
| 77 null, AstFactory.identifier3("a"), AstFactory.formalParameterList()); | 80 null, |
| 78 MethodDeclaration bMethod = AstFactory.methodDeclaration(null, null, null, | 81 null, |
| 79 null, AstFactory.identifier3("b"), AstFactory.formalParameterList()); | 82 null, |
| 80 ClassDeclaration clazz = AstFactory.classDeclaration( | 83 null, |
| 84 AstTestFactory.identifier3("a"), |
| 85 AstTestFactory.formalParameterList()); |
| 86 MethodDeclaration bMethod = AstTestFactory.methodDeclaration( |
| 87 null, |
| 88 null, |
| 89 null, |
| 90 null, |
| 91 AstTestFactory.identifier3("b"), |
| 92 AstTestFactory.formalParameterList()); |
| 93 ClassDeclaration clazz = AstTestFactory.classDeclaration( |
| 81 null, "Test", null, null, null, null, [aMethod, bMethod]); | 94 null, "Test", null, null, null, null, [aMethod, bMethod]); |
| 82 expect(clazz.getMethod("a"), same(aMethod)); | 95 expect(clazz.getMethod("a"), same(aMethod)); |
| 83 expect(clazz.getMethod("b"), same(bMethod)); | 96 expect(clazz.getMethod("b"), same(bMethod)); |
| 84 expect(clazz.getMethod("noSuchMethod"), same(null)); | 97 expect(clazz.getMethod("noSuchMethod"), same(null)); |
| 85 } | 98 } |
| 86 | 99 |
| 87 void test_isAbstract() { | 100 void test_isAbstract() { |
| 88 expect( | 101 expect( |
| 89 AstFactory | 102 AstTestFactory |
| 90 .classDeclaration(null, "A", null, null, null, null) | 103 .classDeclaration(null, "A", null, null, null, null) |
| 91 .isAbstract, | 104 .isAbstract, |
| 92 isFalse); | 105 isFalse); |
| 93 expect( | 106 expect( |
| 94 AstFactory | 107 AstTestFactory |
| 95 .classDeclaration(Keyword.ABSTRACT, "B", null, null, null, null) | 108 .classDeclaration(Keyword.ABSTRACT, "B", null, null, null, null) |
| 96 .isAbstract, | 109 .isAbstract, |
| 97 isTrue); | 110 isTrue); |
| 98 } | 111 } |
| 99 } | 112 } |
| 100 | 113 |
| 101 @reflectiveTest | 114 @reflectiveTest |
| 102 class ClassTypeAliasTest extends ParserTestCase { | 115 class ClassTypeAliasTest extends ParserTestCase { |
| 103 void test_isAbstract() { | 116 void test_isAbstract() { |
| 104 expect( | 117 expect( |
| 105 AstFactory.classTypeAlias("A", null, null, null, null, null).isAbstract, | 118 AstTestFactory |
| 119 .classTypeAlias("A", null, null, null, null, null) |
| 120 .isAbstract, |
| 106 isFalse); | 121 isFalse); |
| 107 expect( | 122 expect( |
| 108 AstFactory | 123 AstTestFactory |
| 109 .classTypeAlias("B", null, Keyword.ABSTRACT, null, null, null) | 124 .classTypeAlias("B", null, Keyword.ABSTRACT, null, null, null) |
| 110 .isAbstract, | 125 .isAbstract, |
| 111 isTrue); | 126 isTrue); |
| 112 } | 127 } |
| 113 } | 128 } |
| 114 | 129 |
| 115 @reflectiveTest | 130 @reflectiveTest |
| 116 class ConstructorDeclarationTest extends EngineTestCase { | 131 class ConstructorDeclarationTest extends EngineTestCase { |
| 117 void test_firstTokenAfterCommentAndMetadata_all_inverted() { | 132 void test_firstTokenAfterCommentAndMetadata_all_inverted() { |
| 118 Token externalKeyword = TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 133 Token externalKeyword = TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
| 119 externalKeyword.offset = 14; | 134 externalKeyword.offset = 14; |
| 120 ConstructorDeclaration declaration = AstFactory.constructorDeclaration2( | 135 ConstructorDeclaration declaration = AstTestFactory.constructorDeclaration2( |
| 121 Keyword.CONST, | 136 Keyword.CONST, |
| 122 Keyword.FACTORY, | 137 Keyword.FACTORY, |
| 123 AstFactory.identifier3('int'), | 138 AstTestFactory.identifier3('int'), |
| 124 null, | 139 null, |
| 125 null, | 140 null, |
| 126 null, | 141 null, |
| 127 null); | 142 null); |
| 128 declaration.externalKeyword = externalKeyword; | 143 declaration.externalKeyword = externalKeyword; |
| 129 declaration.constKeyword.offset = 8; | 144 declaration.constKeyword.offset = 8; |
| 130 Token factoryKeyword = declaration.factoryKeyword; | 145 Token factoryKeyword = declaration.factoryKeyword; |
| 131 factoryKeyword.offset = 0; | 146 factoryKeyword.offset = 0; |
| 132 expect(declaration.firstTokenAfterCommentAndMetadata, factoryKeyword); | 147 expect(declaration.firstTokenAfterCommentAndMetadata, factoryKeyword); |
| 133 } | 148 } |
| 134 | 149 |
| 135 void test_firstTokenAfterCommentAndMetadata_all_normal() { | 150 void test_firstTokenAfterCommentAndMetadata_all_normal() { |
| 136 Token token = TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 151 Token token = TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
| 137 token.offset = 0; | 152 token.offset = 0; |
| 138 ConstructorDeclaration declaration = AstFactory.constructorDeclaration2( | 153 ConstructorDeclaration declaration = AstTestFactory.constructorDeclaration2( |
| 139 Keyword.CONST, | 154 Keyword.CONST, |
| 140 Keyword.FACTORY, | 155 Keyword.FACTORY, |
| 141 AstFactory.identifier3('int'), | 156 AstTestFactory.identifier3('int'), |
| 142 null, | 157 null, |
| 143 null, | 158 null, |
| 144 null, | 159 null, |
| 145 null); | 160 null); |
| 146 declaration.externalKeyword = token; | 161 declaration.externalKeyword = token; |
| 147 declaration.constKeyword.offset = 9; | 162 declaration.constKeyword.offset = 9; |
| 148 declaration.factoryKeyword.offset = 15; | 163 declaration.factoryKeyword.offset = 15; |
| 149 expect(declaration.firstTokenAfterCommentAndMetadata, token); | 164 expect(declaration.firstTokenAfterCommentAndMetadata, token); |
| 150 } | 165 } |
| 151 | 166 |
| 152 void test_firstTokenAfterCommentAndMetadata_constOnly() { | 167 void test_firstTokenAfterCommentAndMetadata_constOnly() { |
| 153 ConstructorDeclaration declaration = AstFactory.constructorDeclaration2( | 168 ConstructorDeclaration declaration = AstTestFactory.constructorDeclaration2( |
| 154 Keyword.CONST, | 169 Keyword.CONST, |
| 155 null, | 170 null, |
| 156 AstFactory.identifier3('int'), | 171 AstTestFactory.identifier3('int'), |
| 157 null, | 172 null, |
| 158 null, | 173 null, |
| 159 null, | 174 null, |
| 160 null); | 175 null); |
| 161 expect(declaration.firstTokenAfterCommentAndMetadata, | 176 expect(declaration.firstTokenAfterCommentAndMetadata, |
| 162 declaration.constKeyword); | 177 declaration.constKeyword); |
| 163 } | 178 } |
| 164 | 179 |
| 165 void test_firstTokenAfterCommentAndMetadata_externalOnly() { | 180 void test_firstTokenAfterCommentAndMetadata_externalOnly() { |
| 166 Token externalKeyword = TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 181 Token externalKeyword = TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
| 167 ConstructorDeclaration declaration = AstFactory.constructorDeclaration2( | 182 ConstructorDeclaration declaration = AstTestFactory.constructorDeclaration2( |
| 168 null, null, AstFactory.identifier3('int'), null, null, null, null); | 183 null, null, AstTestFactory.identifier3('int'), null, null, null, null); |
| 169 declaration.externalKeyword = externalKeyword; | 184 declaration.externalKeyword = externalKeyword; |
| 170 expect(declaration.firstTokenAfterCommentAndMetadata, externalKeyword); | 185 expect(declaration.firstTokenAfterCommentAndMetadata, externalKeyword); |
| 171 } | 186 } |
| 172 | 187 |
| 173 void test_firstTokenAfterCommentAndMetadata_factoryOnly() { | 188 void test_firstTokenAfterCommentAndMetadata_factoryOnly() { |
| 174 ConstructorDeclaration declaration = AstFactory.constructorDeclaration2( | 189 ConstructorDeclaration declaration = AstTestFactory.constructorDeclaration2( |
| 175 null, | 190 null, |
| 176 Keyword.FACTORY, | 191 Keyword.FACTORY, |
| 177 AstFactory.identifier3('int'), | 192 AstTestFactory.identifier3('int'), |
| 178 null, | 193 null, |
| 179 null, | 194 null, |
| 180 null, | 195 null, |
| 181 null); | 196 null); |
| 182 expect(declaration.firstTokenAfterCommentAndMetadata, | 197 expect(declaration.firstTokenAfterCommentAndMetadata, |
| 183 declaration.factoryKeyword); | 198 declaration.factoryKeyword); |
| 184 } | 199 } |
| 185 } | 200 } |
| 186 | 201 |
| 187 @reflectiveTest | 202 @reflectiveTest |
| 188 class FieldFormalParameterTest extends EngineTestCase { | 203 class FieldFormalParameterTest extends EngineTestCase { |
| 189 void test_endToken_noParameters() { | 204 void test_endToken_noParameters() { |
| 190 FieldFormalParameter parameter = AstFactory.fieldFormalParameter2('field'); | 205 FieldFormalParameter parameter = |
| 206 AstTestFactory.fieldFormalParameter2('field'); |
| 191 expect(parameter.endToken, parameter.identifier.endToken); | 207 expect(parameter.endToken, parameter.identifier.endToken); |
| 192 } | 208 } |
| 193 | 209 |
| 194 void test_endToken_parameters() { | 210 void test_endToken_parameters() { |
| 195 FieldFormalParameter parameter = AstFactory.fieldFormalParameter( | 211 FieldFormalParameter parameter = AstTestFactory.fieldFormalParameter( |
| 196 null, null, 'field', AstFactory.formalParameterList([])); | 212 null, null, 'field', AstTestFactory.formalParameterList([])); |
| 197 expect(parameter.endToken, parameter.parameters.endToken); | 213 expect(parameter.endToken, parameter.parameters.endToken); |
| 198 } | 214 } |
| 199 } | 215 } |
| 200 | 216 |
| 201 @reflectiveTest | 217 @reflectiveTest |
| 202 class IndexExpressionTest extends EngineTestCase { | 218 class IndexExpressionTest extends EngineTestCase { |
| 203 void test_inGetterContext_assignment_compound_left() { | 219 void test_inGetterContext_assignment_compound_left() { |
| 204 IndexExpression expression = AstFactory.indexExpression( | 220 IndexExpression expression = AstTestFactory.indexExpression( |
| 205 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 221 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 206 // a[b] += c | 222 // a[b] += c |
| 207 AstFactory.assignmentExpression( | 223 AstTestFactory.assignmentExpression( |
| 208 expression, TokenType.PLUS_EQ, AstFactory.identifier3("c")); | 224 expression, TokenType.PLUS_EQ, AstTestFactory.identifier3("c")); |
| 209 expect(expression.inGetterContext(), isTrue); | 225 expect(expression.inGetterContext(), isTrue); |
| 210 } | 226 } |
| 211 | 227 |
| 212 void test_inGetterContext_assignment_simple_left() { | 228 void test_inGetterContext_assignment_simple_left() { |
| 213 IndexExpression expression = AstFactory.indexExpression( | 229 IndexExpression expression = AstTestFactory.indexExpression( |
| 214 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 230 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 215 // a[b] = c | 231 // a[b] = c |
| 216 AstFactory.assignmentExpression( | 232 AstTestFactory.assignmentExpression( |
| 217 expression, TokenType.EQ, AstFactory.identifier3("c")); | 233 expression, TokenType.EQ, AstTestFactory.identifier3("c")); |
| 218 expect(expression.inGetterContext(), isFalse); | 234 expect(expression.inGetterContext(), isFalse); |
| 219 } | 235 } |
| 220 | 236 |
| 221 void test_inGetterContext_nonAssignment() { | 237 void test_inGetterContext_nonAssignment() { |
| 222 IndexExpression expression = AstFactory.indexExpression( | 238 IndexExpression expression = AstTestFactory.indexExpression( |
| 223 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 239 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 224 // a[b] + c | 240 // a[b] + c |
| 225 AstFactory.binaryExpression( | 241 AstTestFactory.binaryExpression( |
| 226 expression, TokenType.PLUS, AstFactory.identifier3("c")); | 242 expression, TokenType.PLUS, AstTestFactory.identifier3("c")); |
| 227 expect(expression.inGetterContext(), isTrue); | 243 expect(expression.inGetterContext(), isTrue); |
| 228 } | 244 } |
| 229 | 245 |
| 230 void test_inSetterContext_assignment_compound_left() { | 246 void test_inSetterContext_assignment_compound_left() { |
| 231 IndexExpression expression = AstFactory.indexExpression( | 247 IndexExpression expression = AstTestFactory.indexExpression( |
| 232 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 248 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 233 // a[b] += c | 249 // a[b] += c |
| 234 AstFactory.assignmentExpression( | 250 AstTestFactory.assignmentExpression( |
| 235 expression, TokenType.PLUS_EQ, AstFactory.identifier3("c")); | 251 expression, TokenType.PLUS_EQ, AstTestFactory.identifier3("c")); |
| 236 expect(expression.inSetterContext(), isTrue); | 252 expect(expression.inSetterContext(), isTrue); |
| 237 } | 253 } |
| 238 | 254 |
| 239 void test_inSetterContext_assignment_compound_right() { | 255 void test_inSetterContext_assignment_compound_right() { |
| 240 IndexExpression expression = AstFactory.indexExpression( | 256 IndexExpression expression = AstTestFactory.indexExpression( |
| 241 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 257 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 242 // c += a[b] | 258 // c += a[b] |
| 243 AstFactory.assignmentExpression( | 259 AstTestFactory.assignmentExpression( |
| 244 AstFactory.identifier3("c"), TokenType.PLUS_EQ, expression); | 260 AstTestFactory.identifier3("c"), TokenType.PLUS_EQ, expression); |
| 245 expect(expression.inSetterContext(), isFalse); | 261 expect(expression.inSetterContext(), isFalse); |
| 246 } | 262 } |
| 247 | 263 |
| 248 void test_inSetterContext_assignment_simple_left() { | 264 void test_inSetterContext_assignment_simple_left() { |
| 249 IndexExpression expression = AstFactory.indexExpression( | 265 IndexExpression expression = AstTestFactory.indexExpression( |
| 250 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 266 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 251 // a[b] = c | 267 // a[b] = c |
| 252 AstFactory.assignmentExpression( | 268 AstTestFactory.assignmentExpression( |
| 253 expression, TokenType.EQ, AstFactory.identifier3("c")); | 269 expression, TokenType.EQ, AstTestFactory.identifier3("c")); |
| 254 expect(expression.inSetterContext(), isTrue); | 270 expect(expression.inSetterContext(), isTrue); |
| 255 } | 271 } |
| 256 | 272 |
| 257 void test_inSetterContext_assignment_simple_right() { | 273 void test_inSetterContext_assignment_simple_right() { |
| 258 IndexExpression expression = AstFactory.indexExpression( | 274 IndexExpression expression = AstTestFactory.indexExpression( |
| 259 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 275 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 260 // c = a[b] | 276 // c = a[b] |
| 261 AstFactory.assignmentExpression( | 277 AstTestFactory.assignmentExpression( |
| 262 AstFactory.identifier3("c"), TokenType.EQ, expression); | 278 AstTestFactory.identifier3("c"), TokenType.EQ, expression); |
| 263 expect(expression.inSetterContext(), isFalse); | 279 expect(expression.inSetterContext(), isFalse); |
| 264 } | 280 } |
| 265 | 281 |
| 266 void test_inSetterContext_nonAssignment() { | 282 void test_inSetterContext_nonAssignment() { |
| 267 IndexExpression expression = AstFactory.indexExpression( | 283 IndexExpression expression = AstTestFactory.indexExpression( |
| 268 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 284 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 269 AstFactory.binaryExpression( | 285 AstTestFactory.binaryExpression( |
| 270 expression, TokenType.PLUS, AstFactory.identifier3("c")); | 286 expression, TokenType.PLUS, AstTestFactory.identifier3("c")); |
| 271 // a[b] + cc | 287 // a[b] + cc |
| 272 expect(expression.inSetterContext(), isFalse); | 288 expect(expression.inSetterContext(), isFalse); |
| 273 } | 289 } |
| 274 | 290 |
| 275 void test_inSetterContext_postfix() { | 291 void test_inSetterContext_postfix() { |
| 276 IndexExpression expression = AstFactory.indexExpression( | 292 IndexExpression expression = AstTestFactory.indexExpression( |
| 277 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 293 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 278 AstFactory.postfixExpression(expression, TokenType.PLUS_PLUS); | 294 AstTestFactory.postfixExpression(expression, TokenType.PLUS_PLUS); |
| 279 // a[b]++ | 295 // a[b]++ |
| 280 expect(expression.inSetterContext(), isTrue); | 296 expect(expression.inSetterContext(), isTrue); |
| 281 } | 297 } |
| 282 | 298 |
| 283 void test_inSetterContext_prefix_bang() { | 299 void test_inSetterContext_prefix_bang() { |
| 284 IndexExpression expression = AstFactory.indexExpression( | 300 IndexExpression expression = AstTestFactory.indexExpression( |
| 285 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 301 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 286 // !a[b] | 302 // !a[b] |
| 287 AstFactory.prefixExpression(TokenType.BANG, expression); | 303 AstTestFactory.prefixExpression(TokenType.BANG, expression); |
| 288 expect(expression.inSetterContext(), isFalse); | 304 expect(expression.inSetterContext(), isFalse); |
| 289 } | 305 } |
| 290 | 306 |
| 291 void test_inSetterContext_prefix_minusMinus() { | 307 void test_inSetterContext_prefix_minusMinus() { |
| 292 IndexExpression expression = AstFactory.indexExpression( | 308 IndexExpression expression = AstTestFactory.indexExpression( |
| 293 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 309 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 294 // --a[b] | 310 // --a[b] |
| 295 AstFactory.prefixExpression(TokenType.MINUS_MINUS, expression); | 311 AstTestFactory.prefixExpression(TokenType.MINUS_MINUS, expression); |
| 296 expect(expression.inSetterContext(), isTrue); | 312 expect(expression.inSetterContext(), isTrue); |
| 297 } | 313 } |
| 298 | 314 |
| 299 void test_inSetterContext_prefix_plusPlus() { | 315 void test_inSetterContext_prefix_plusPlus() { |
| 300 IndexExpression expression = AstFactory.indexExpression( | 316 IndexExpression expression = AstTestFactory.indexExpression( |
| 301 AstFactory.identifier3("a"), AstFactory.identifier3("b")); | 317 AstTestFactory.identifier3("a"), AstTestFactory.identifier3("b")); |
| 302 // ++a[b] | 318 // ++a[b] |
| 303 AstFactory.prefixExpression(TokenType.PLUS_PLUS, expression); | 319 AstTestFactory.prefixExpression(TokenType.PLUS_PLUS, expression); |
| 304 expect(expression.inSetterContext(), isTrue); | 320 expect(expression.inSetterContext(), isTrue); |
| 305 } | 321 } |
| 306 } | 322 } |
| 307 | 323 |
| 308 @reflectiveTest | 324 @reflectiveTest |
| 309 class MethodDeclarationTest extends EngineTestCase { | 325 class MethodDeclarationTest extends EngineTestCase { |
| 310 void test_firstTokenAfterCommentAndMetadata_external() { | 326 void test_firstTokenAfterCommentAndMetadata_external() { |
| 311 MethodDeclaration declaration = | 327 MethodDeclaration declaration = |
| 312 AstFactory.methodDeclaration4(external: true, name: 'm'); | 328 AstTestFactory.methodDeclaration4(external: true, name: 'm'); |
| 313 expect(declaration.firstTokenAfterCommentAndMetadata, | 329 expect(declaration.firstTokenAfterCommentAndMetadata, |
| 314 declaration.externalKeyword); | 330 declaration.externalKeyword); |
| 315 } | 331 } |
| 316 | 332 |
| 317 void test_firstTokenAfterCommentAndMetadata_external_getter() { | 333 void test_firstTokenAfterCommentAndMetadata_external_getter() { |
| 318 MethodDeclaration declaration = AstFactory.methodDeclaration4( | 334 MethodDeclaration declaration = AstTestFactory.methodDeclaration4( |
| 319 external: true, property: Keyword.GET, name: 'm'); | 335 external: true, property: Keyword.GET, name: 'm'); |
| 320 expect(declaration.firstTokenAfterCommentAndMetadata, | 336 expect(declaration.firstTokenAfterCommentAndMetadata, |
| 321 declaration.externalKeyword); | 337 declaration.externalKeyword); |
| 322 } | 338 } |
| 323 | 339 |
| 324 void test_firstTokenAfterCommentAndMetadata_external_operator() { | 340 void test_firstTokenAfterCommentAndMetadata_external_operator() { |
| 325 MethodDeclaration declaration = AstFactory.methodDeclaration4( | 341 MethodDeclaration declaration = AstTestFactory.methodDeclaration4( |
| 326 external: true, operator: true, name: 'm'); | 342 external: true, operator: true, name: 'm'); |
| 327 expect(declaration.firstTokenAfterCommentAndMetadata, | 343 expect(declaration.firstTokenAfterCommentAndMetadata, |
| 328 declaration.externalKeyword); | 344 declaration.externalKeyword); |
| 329 } | 345 } |
| 330 | 346 |
| 331 void test_firstTokenAfterCommentAndMetadata_getter() { | 347 void test_firstTokenAfterCommentAndMetadata_getter() { |
| 332 MethodDeclaration declaration = | 348 MethodDeclaration declaration = |
| 333 AstFactory.methodDeclaration4(property: Keyword.GET, name: 'm'); | 349 AstTestFactory.methodDeclaration4(property: Keyword.GET, name: 'm'); |
| 334 expect(declaration.firstTokenAfterCommentAndMetadata, | 350 expect(declaration.firstTokenAfterCommentAndMetadata, |
| 335 declaration.propertyKeyword); | 351 declaration.propertyKeyword); |
| 336 } | 352 } |
| 337 | 353 |
| 338 void test_firstTokenAfterCommentAndMetadata_operator() { | 354 void test_firstTokenAfterCommentAndMetadata_operator() { |
| 339 MethodDeclaration declaration = | 355 MethodDeclaration declaration = |
| 340 AstFactory.methodDeclaration4(operator: true, name: 'm'); | 356 AstTestFactory.methodDeclaration4(operator: true, name: 'm'); |
| 341 expect(declaration.firstTokenAfterCommentAndMetadata, | 357 expect(declaration.firstTokenAfterCommentAndMetadata, |
| 342 declaration.operatorKeyword); | 358 declaration.operatorKeyword); |
| 343 } | 359 } |
| 344 } | 360 } |
| 345 | 361 |
| 346 @reflectiveTest | 362 @reflectiveTest |
| 347 class NodeListTest extends EngineTestCase { | 363 class NodeListTest extends EngineTestCase { |
| 348 void test_add() { | 364 void test_add() { |
| 349 AstNode parent = AstFactory.argumentList(); | 365 AstNode parent = AstTestFactory.argumentList(); |
| 350 AstNode firstNode = AstFactory.booleanLiteral(true); | 366 AstNode firstNode = AstTestFactory.booleanLiteral(true); |
| 351 AstNode secondNode = AstFactory.booleanLiteral(false); | 367 AstNode secondNode = AstTestFactory.booleanLiteral(false); |
| 352 NodeList<AstNode> list = new NodeList<AstNode>(parent); | 368 NodeList<AstNode> list = new NodeList<AstNode>(parent); |
| 353 list.insert(0, secondNode); | 369 list.insert(0, secondNode); |
| 354 list.insert(0, firstNode); | 370 list.insert(0, firstNode); |
| 355 expect(list, hasLength(2)); | 371 expect(list, hasLength(2)); |
| 356 expect(list[0], same(firstNode)); | 372 expect(list[0], same(firstNode)); |
| 357 expect(list[1], same(secondNode)); | 373 expect(list[1], same(secondNode)); |
| 358 expect(firstNode.parent, same(parent)); | 374 expect(firstNode.parent, same(parent)); |
| 359 expect(secondNode.parent, same(parent)); | 375 expect(secondNode.parent, same(parent)); |
| 360 AstNode thirdNode = AstFactory.booleanLiteral(false); | 376 AstNode thirdNode = AstTestFactory.booleanLiteral(false); |
| 361 list.insert(1, thirdNode); | 377 list.insert(1, thirdNode); |
| 362 expect(list, hasLength(3)); | 378 expect(list, hasLength(3)); |
| 363 expect(list[0], same(firstNode)); | 379 expect(list[0], same(firstNode)); |
| 364 expect(list[1], same(thirdNode)); | 380 expect(list[1], same(thirdNode)); |
| 365 expect(list[2], same(secondNode)); | 381 expect(list[2], same(secondNode)); |
| 366 expect(firstNode.parent, same(parent)); | 382 expect(firstNode.parent, same(parent)); |
| 367 expect(secondNode.parent, same(parent)); | 383 expect(secondNode.parent, same(parent)); |
| 368 expect(thirdNode.parent, same(parent)); | 384 expect(thirdNode.parent, same(parent)); |
| 369 } | 385 } |
| 370 | 386 |
| 371 void test_add_negative() { | 387 void test_add_negative() { |
| 372 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 388 NodeList<AstNode> list = |
| 389 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 373 try { | 390 try { |
| 374 list.insert(-1, AstFactory.booleanLiteral(true)); | 391 list.insert(-1, AstTestFactory.booleanLiteral(true)); |
| 375 fail("Expected IndexOutOfBoundsException"); | 392 fail("Expected IndexOutOfBoundsException"); |
| 376 } on RangeError { | 393 } on RangeError { |
| 377 // Expected | 394 // Expected |
| 378 } | 395 } |
| 379 } | 396 } |
| 380 | 397 |
| 381 void test_add_tooBig() { | 398 void test_add_tooBig() { |
| 382 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 399 NodeList<AstNode> list = |
| 400 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 383 try { | 401 try { |
| 384 list.insert(1, AstFactory.booleanLiteral(true)); | 402 list.insert(1, AstTestFactory.booleanLiteral(true)); |
| 385 fail("Expected IndexOutOfBoundsException"); | 403 fail("Expected IndexOutOfBoundsException"); |
| 386 } on RangeError { | 404 } on RangeError { |
| 387 // Expected | 405 // Expected |
| 388 } | 406 } |
| 389 } | 407 } |
| 390 | 408 |
| 391 void test_addAll() { | 409 void test_addAll() { |
| 392 AstNode parent = AstFactory.argumentList(); | 410 AstNode parent = AstTestFactory.argumentList(); |
| 393 List<AstNode> firstNodes = new List<AstNode>(); | 411 List<AstNode> firstNodes = new List<AstNode>(); |
| 394 AstNode firstNode = AstFactory.booleanLiteral(true); | 412 AstNode firstNode = AstTestFactory.booleanLiteral(true); |
| 395 AstNode secondNode = AstFactory.booleanLiteral(false); | 413 AstNode secondNode = AstTestFactory.booleanLiteral(false); |
| 396 firstNodes.add(firstNode); | 414 firstNodes.add(firstNode); |
| 397 firstNodes.add(secondNode); | 415 firstNodes.add(secondNode); |
| 398 NodeList<AstNode> list = new NodeList<AstNode>(parent); | 416 NodeList<AstNode> list = new NodeList<AstNode>(parent); |
| 399 list.addAll(firstNodes); | 417 list.addAll(firstNodes); |
| 400 expect(list, hasLength(2)); | 418 expect(list, hasLength(2)); |
| 401 expect(list[0], same(firstNode)); | 419 expect(list[0], same(firstNode)); |
| 402 expect(list[1], same(secondNode)); | 420 expect(list[1], same(secondNode)); |
| 403 expect(firstNode.parent, same(parent)); | 421 expect(firstNode.parent, same(parent)); |
| 404 expect(secondNode.parent, same(parent)); | 422 expect(secondNode.parent, same(parent)); |
| 405 List<AstNode> secondNodes = new List<AstNode>(); | 423 List<AstNode> secondNodes = new List<AstNode>(); |
| 406 AstNode thirdNode = AstFactory.booleanLiteral(true); | 424 AstNode thirdNode = AstTestFactory.booleanLiteral(true); |
| 407 AstNode fourthNode = AstFactory.booleanLiteral(false); | 425 AstNode fourthNode = AstTestFactory.booleanLiteral(false); |
| 408 secondNodes.add(thirdNode); | 426 secondNodes.add(thirdNode); |
| 409 secondNodes.add(fourthNode); | 427 secondNodes.add(fourthNode); |
| 410 list.addAll(secondNodes); | 428 list.addAll(secondNodes); |
| 411 expect(list, hasLength(4)); | 429 expect(list, hasLength(4)); |
| 412 expect(list[0], same(firstNode)); | 430 expect(list[0], same(firstNode)); |
| 413 expect(list[1], same(secondNode)); | 431 expect(list[1], same(secondNode)); |
| 414 expect(list[2], same(thirdNode)); | 432 expect(list[2], same(thirdNode)); |
| 415 expect(list[3], same(fourthNode)); | 433 expect(list[3], same(fourthNode)); |
| 416 expect(firstNode.parent, same(parent)); | 434 expect(firstNode.parent, same(parent)); |
| 417 expect(secondNode.parent, same(parent)); | 435 expect(secondNode.parent, same(parent)); |
| 418 expect(thirdNode.parent, same(parent)); | 436 expect(thirdNode.parent, same(parent)); |
| 419 expect(fourthNode.parent, same(parent)); | 437 expect(fourthNode.parent, same(parent)); |
| 420 } | 438 } |
| 421 | 439 |
| 422 void test_creation() { | 440 void test_creation() { |
| 423 AstNode owner = AstFactory.argumentList(); | 441 AstNode owner = AstTestFactory.argumentList(); |
| 424 NodeList<AstNode> list = new NodeList<AstNode>(owner); | 442 NodeList<AstNode> list = new NodeList<AstNode>(owner); |
| 425 expect(list, isNotNull); | 443 expect(list, isNotNull); |
| 426 expect(list, hasLength(0)); | 444 expect(list, hasLength(0)); |
| 427 expect(list.owner, same(owner)); | 445 expect(list.owner, same(owner)); |
| 428 } | 446 } |
| 429 | 447 |
| 430 void test_get_negative() { | 448 void test_get_negative() { |
| 431 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 449 NodeList<AstNode> list = |
| 450 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 432 try { | 451 try { |
| 433 list[-1]; | 452 list[-1]; |
| 434 fail("Expected IndexOutOfBoundsException"); | 453 fail("Expected IndexOutOfBoundsException"); |
| 435 } on RangeError { | 454 } on RangeError { |
| 436 // Expected | 455 // Expected |
| 437 } | 456 } |
| 438 } | 457 } |
| 439 | 458 |
| 440 void test_get_tooBig() { | 459 void test_get_tooBig() { |
| 441 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 460 NodeList<AstNode> list = |
| 461 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 442 try { | 462 try { |
| 443 list[1]; | 463 list[1]; |
| 444 fail("Expected IndexOutOfBoundsException"); | 464 fail("Expected IndexOutOfBoundsException"); |
| 445 } on RangeError { | 465 } on RangeError { |
| 446 // Expected | 466 // Expected |
| 447 } | 467 } |
| 448 } | 468 } |
| 449 | 469 |
| 450 void test_getBeginToken_empty() { | 470 void test_getBeginToken_empty() { |
| 451 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 471 NodeList<AstNode> list = |
| 472 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 452 expect(list.beginToken, isNull); | 473 expect(list.beginToken, isNull); |
| 453 } | 474 } |
| 454 | 475 |
| 455 void test_getBeginToken_nonEmpty() { | 476 void test_getBeginToken_nonEmpty() { |
| 456 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 477 NodeList<AstNode> list = |
| 457 AstNode node = | 478 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 458 AstFactory.parenthesizedExpression(AstFactory.booleanLiteral(true)); | 479 AstNode node = AstTestFactory |
| 480 .parenthesizedExpression(AstTestFactory.booleanLiteral(true)); |
| 459 list.add(node); | 481 list.add(node); |
| 460 expect(list.beginToken, same(node.beginToken)); | 482 expect(list.beginToken, same(node.beginToken)); |
| 461 } | 483 } |
| 462 | 484 |
| 463 void test_getEndToken_empty() { | 485 void test_getEndToken_empty() { |
| 464 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 486 NodeList<AstNode> list = |
| 487 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 465 expect(list.endToken, isNull); | 488 expect(list.endToken, isNull); |
| 466 } | 489 } |
| 467 | 490 |
| 468 void test_getEndToken_nonEmpty() { | 491 void test_getEndToken_nonEmpty() { |
| 469 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 492 NodeList<AstNode> list = |
| 470 AstNode node = | 493 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 471 AstFactory.parenthesizedExpression(AstFactory.booleanLiteral(true)); | 494 AstNode node = AstTestFactory |
| 495 .parenthesizedExpression(AstTestFactory.booleanLiteral(true)); |
| 472 list.add(node); | 496 list.add(node); |
| 473 expect(list.endToken, same(node.endToken)); | 497 expect(list.endToken, same(node.endToken)); |
| 474 } | 498 } |
| 475 | 499 |
| 476 void test_indexOf() { | 500 void test_indexOf() { |
| 477 List<AstNode> nodes = new List<AstNode>(); | 501 List<AstNode> nodes = new List<AstNode>(); |
| 478 AstNode firstNode = AstFactory.booleanLiteral(true); | 502 AstNode firstNode = AstTestFactory.booleanLiteral(true); |
| 479 AstNode secondNode = AstFactory.booleanLiteral(false); | 503 AstNode secondNode = AstTestFactory.booleanLiteral(false); |
| 480 AstNode thirdNode = AstFactory.booleanLiteral(true); | 504 AstNode thirdNode = AstTestFactory.booleanLiteral(true); |
| 481 AstNode fourthNode = AstFactory.booleanLiteral(false); | 505 AstNode fourthNode = AstTestFactory.booleanLiteral(false); |
| 482 nodes.add(firstNode); | 506 nodes.add(firstNode); |
| 483 nodes.add(secondNode); | 507 nodes.add(secondNode); |
| 484 nodes.add(thirdNode); | 508 nodes.add(thirdNode); |
| 485 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 509 NodeList<AstNode> list = |
| 510 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 486 list.addAll(nodes); | 511 list.addAll(nodes); |
| 487 expect(list, hasLength(3)); | 512 expect(list, hasLength(3)); |
| 488 expect(list.indexOf(firstNode), 0); | 513 expect(list.indexOf(firstNode), 0); |
| 489 expect(list.indexOf(secondNode), 1); | 514 expect(list.indexOf(secondNode), 1); |
| 490 expect(list.indexOf(thirdNode), 2); | 515 expect(list.indexOf(thirdNode), 2); |
| 491 expect(list.indexOf(fourthNode), -1); | 516 expect(list.indexOf(fourthNode), -1); |
| 492 expect(list.indexOf(null), -1); | 517 expect(list.indexOf(null), -1); |
| 493 } | 518 } |
| 494 | 519 |
| 495 void test_remove() { | 520 void test_remove() { |
| 496 List<AstNode> nodes = new List<AstNode>(); | 521 List<AstNode> nodes = new List<AstNode>(); |
| 497 AstNode firstNode = AstFactory.booleanLiteral(true); | 522 AstNode firstNode = AstTestFactory.booleanLiteral(true); |
| 498 AstNode secondNode = AstFactory.booleanLiteral(false); | 523 AstNode secondNode = AstTestFactory.booleanLiteral(false); |
| 499 AstNode thirdNode = AstFactory.booleanLiteral(true); | 524 AstNode thirdNode = AstTestFactory.booleanLiteral(true); |
| 500 nodes.add(firstNode); | 525 nodes.add(firstNode); |
| 501 nodes.add(secondNode); | 526 nodes.add(secondNode); |
| 502 nodes.add(thirdNode); | 527 nodes.add(thirdNode); |
| 503 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 528 NodeList<AstNode> list = |
| 529 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 504 list.addAll(nodes); | 530 list.addAll(nodes); |
| 505 expect(list, hasLength(3)); | 531 expect(list, hasLength(3)); |
| 506 expect(list.removeAt(1), same(secondNode)); | 532 expect(list.removeAt(1), same(secondNode)); |
| 507 expect(list, hasLength(2)); | 533 expect(list, hasLength(2)); |
| 508 expect(list[0], same(firstNode)); | 534 expect(list[0], same(firstNode)); |
| 509 expect(list[1], same(thirdNode)); | 535 expect(list[1], same(thirdNode)); |
| 510 } | 536 } |
| 511 | 537 |
| 512 void test_remove_negative() { | 538 void test_remove_negative() { |
| 513 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 539 NodeList<AstNode> list = |
| 540 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 514 try { | 541 try { |
| 515 list.removeAt(-1); | 542 list.removeAt(-1); |
| 516 fail("Expected IndexOutOfBoundsException"); | 543 fail("Expected IndexOutOfBoundsException"); |
| 517 } on RangeError { | 544 } on RangeError { |
| 518 // Expected | 545 // Expected |
| 519 } | 546 } |
| 520 } | 547 } |
| 521 | 548 |
| 522 void test_remove_tooBig() { | 549 void test_remove_tooBig() { |
| 523 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 550 NodeList<AstNode> list = |
| 551 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 524 try { | 552 try { |
| 525 list.removeAt(1); | 553 list.removeAt(1); |
| 526 fail("Expected IndexOutOfBoundsException"); | 554 fail("Expected IndexOutOfBoundsException"); |
| 527 } on RangeError { | 555 } on RangeError { |
| 528 // Expected | 556 // Expected |
| 529 } | 557 } |
| 530 } | 558 } |
| 531 | 559 |
| 532 void test_set() { | 560 void test_set() { |
| 533 List<AstNode> nodes = new List<AstNode>(); | 561 List<AstNode> nodes = new List<AstNode>(); |
| 534 AstNode firstNode = AstFactory.booleanLiteral(true); | 562 AstNode firstNode = AstTestFactory.booleanLiteral(true); |
| 535 AstNode secondNode = AstFactory.booleanLiteral(false); | 563 AstNode secondNode = AstTestFactory.booleanLiteral(false); |
| 536 AstNode thirdNode = AstFactory.booleanLiteral(true); | 564 AstNode thirdNode = AstTestFactory.booleanLiteral(true); |
| 537 nodes.add(firstNode); | 565 nodes.add(firstNode); |
| 538 nodes.add(secondNode); | 566 nodes.add(secondNode); |
| 539 nodes.add(thirdNode); | 567 nodes.add(thirdNode); |
| 540 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 568 NodeList<AstNode> list = |
| 569 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 541 list.addAll(nodes); | 570 list.addAll(nodes); |
| 542 expect(list, hasLength(3)); | 571 expect(list, hasLength(3)); |
| 543 AstNode fourthNode = AstFactory.integer(0); | 572 AstNode fourthNode = AstTestFactory.integer(0); |
| 544 list[1] = fourthNode; | 573 list[1] = fourthNode; |
| 545 expect(list, hasLength(3)); | 574 expect(list, hasLength(3)); |
| 546 expect(list[0], same(firstNode)); | 575 expect(list[0], same(firstNode)); |
| 547 expect(list[1], same(fourthNode)); | 576 expect(list[1], same(fourthNode)); |
| 548 expect(list[2], same(thirdNode)); | 577 expect(list[2], same(thirdNode)); |
| 549 } | 578 } |
| 550 | 579 |
| 551 void test_set_negative() { | 580 void test_set_negative() { |
| 552 AstNode node = AstFactory.booleanLiteral(true); | 581 AstNode node = AstTestFactory.booleanLiteral(true); |
| 553 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 582 NodeList<AstNode> list = |
| 583 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 554 try { | 584 try { |
| 555 list[-1] = node; | 585 list[-1] = node; |
| 556 fail("Expected IndexOutOfBoundsException"); | 586 fail("Expected IndexOutOfBoundsException"); |
| 557 } on RangeError { | 587 } on RangeError { |
| 558 // Expected | 588 // Expected |
| 559 } | 589 } |
| 560 } | 590 } |
| 561 | 591 |
| 562 void test_set_tooBig() { | 592 void test_set_tooBig() { |
| 563 AstNode node = AstFactory.booleanLiteral(true); | 593 AstNode node = AstTestFactory.booleanLiteral(true); |
| 564 NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList()); | 594 NodeList<AstNode> list = |
| 595 new NodeList<AstNode>(AstTestFactory.argumentList()); |
| 565 try { | 596 try { |
| 566 list[1] = node; | 597 list[1] = node; |
| 567 fail("Expected IndexOutOfBoundsException"); | 598 fail("Expected IndexOutOfBoundsException"); |
| 568 } on RangeError { | 599 } on RangeError { |
| 569 // Expected | 600 // Expected |
| 570 } | 601 } |
| 571 } | 602 } |
| 572 } | 603 } |
| 573 | 604 |
| 574 @reflectiveTest | 605 @reflectiveTest |
| (...skipping 11 matching lines...) Expand all Loading... |
| 586 } else { | 617 } else { |
| 587 if (!identifier.inGetterContext()) { | 618 if (!identifier.inGetterContext()) { |
| 588 fail("Expected ${_topMostNode(identifier).toSource()} to be true"); | 619 fail("Expected ${_topMostNode(identifier).toSource()} to be true"); |
| 589 } | 620 } |
| 590 } | 621 } |
| 591 } | 622 } |
| 592 } | 623 } |
| 593 } | 624 } |
| 594 | 625 |
| 595 void test_inGetterContext_constructorFieldInitializer() { | 626 void test_inGetterContext_constructorFieldInitializer() { |
| 596 ConstructorFieldInitializer initializer = AstFactory | 627 ConstructorFieldInitializer initializer = AstTestFactory |
| 597 .constructorFieldInitializer(false, 'f', AstFactory.integer(0)); | 628 .constructorFieldInitializer(false, 'f', AstTestFactory.integer(0)); |
| 598 SimpleIdentifier identifier = initializer.fieldName; | 629 SimpleIdentifier identifier = initializer.fieldName; |
| 599 expect(identifier.inGetterContext(), isFalse); | 630 expect(identifier.inGetterContext(), isFalse); |
| 600 } | 631 } |
| 601 | 632 |
| 602 void test_inGetterContext_forEachLoop() { | 633 void test_inGetterContext_forEachLoop() { |
| 603 SimpleIdentifier identifier = AstFactory.identifier3("a"); | 634 SimpleIdentifier identifier = AstTestFactory.identifier3("a"); |
| 604 Expression iterator = AstFactory.listLiteral(); | 635 Expression iterator = AstTestFactory.listLiteral(); |
| 605 Statement body = AstFactory.block(); | 636 Statement body = AstTestFactory.block(); |
| 606 AstFactory.forEachStatement2(identifier, iterator, body); | 637 AstTestFactory.forEachStatement2(identifier, iterator, body); |
| 607 expect(identifier.inGetterContext(), isFalse); | 638 expect(identifier.inGetterContext(), isFalse); |
| 608 } | 639 } |
| 609 | 640 |
| 610 void test_inReferenceContext() { | 641 void test_inReferenceContext() { |
| 611 SimpleIdentifier identifier = AstFactory.identifier3("id"); | 642 SimpleIdentifier identifier = AstTestFactory.identifier3("id"); |
| 612 AstFactory.namedExpression( | 643 AstTestFactory.namedExpression( |
| 613 AstFactory.label(identifier), AstFactory.identifier3("_")); | 644 AstTestFactory.label(identifier), AstTestFactory.identifier3("_")); |
| 614 expect(identifier.inGetterContext(), isFalse); | 645 expect(identifier.inGetterContext(), isFalse); |
| 615 expect(identifier.inSetterContext(), isFalse); | 646 expect(identifier.inSetterContext(), isFalse); |
| 616 } | 647 } |
| 617 | 648 |
| 618 void test_inSetterContext() { | 649 void test_inSetterContext() { |
| 619 for (_WrapperKind wrapper in _WrapperKind.values) { | 650 for (_WrapperKind wrapper in _WrapperKind.values) { |
| 620 for (_AssignmentKind assignment in _AssignmentKind.values) { | 651 for (_AssignmentKind assignment in _AssignmentKind.values) { |
| 621 SimpleIdentifier identifier = _createIdentifier(wrapper, assignment); | 652 SimpleIdentifier identifier = _createIdentifier(wrapper, assignment); |
| 622 if (wrapper == _WrapperKind.PREFIXED_LEFT || | 653 if (wrapper == _WrapperKind.PREFIXED_LEFT || |
| 623 wrapper == _WrapperKind.PROPERTY_LEFT || | 654 wrapper == _WrapperKind.PROPERTY_LEFT || |
| 624 assignment == _AssignmentKind.BINARY || | 655 assignment == _AssignmentKind.BINARY || |
| 625 assignment == _AssignmentKind.COMPOUND_RIGHT || | 656 assignment == _AssignmentKind.COMPOUND_RIGHT || |
| 626 assignment == _AssignmentKind.PREFIX_NOT || | 657 assignment == _AssignmentKind.PREFIX_NOT || |
| 627 assignment == _AssignmentKind.SIMPLE_RIGHT || | 658 assignment == _AssignmentKind.SIMPLE_RIGHT || |
| 628 assignment == _AssignmentKind.NONE) { | 659 assignment == _AssignmentKind.NONE) { |
| 629 if (identifier.inSetterContext()) { | 660 if (identifier.inSetterContext()) { |
| 630 fail("Expected ${_topMostNode(identifier).toSource()} to be false"); | 661 fail("Expected ${_topMostNode(identifier).toSource()} to be false"); |
| 631 } | 662 } |
| 632 } else { | 663 } else { |
| 633 if (!identifier.inSetterContext()) { | 664 if (!identifier.inSetterContext()) { |
| 634 fail("Expected ${_topMostNode(identifier).toSource()} to be true"); | 665 fail("Expected ${_topMostNode(identifier).toSource()} to be true"); |
| 635 } | 666 } |
| 636 } | 667 } |
| 637 } | 668 } |
| 638 } | 669 } |
| 639 } | 670 } |
| 640 | 671 |
| 641 void test_inSetterContext_forEachLoop() { | 672 void test_inSetterContext_forEachLoop() { |
| 642 SimpleIdentifier identifier = AstFactory.identifier3("a"); | 673 SimpleIdentifier identifier = AstTestFactory.identifier3("a"); |
| 643 Expression iterator = AstFactory.listLiteral(); | 674 Expression iterator = AstTestFactory.listLiteral(); |
| 644 Statement body = AstFactory.block(); | 675 Statement body = AstTestFactory.block(); |
| 645 AstFactory.forEachStatement2(identifier, iterator, body); | 676 AstTestFactory.forEachStatement2(identifier, iterator, body); |
| 646 expect(identifier.inSetterContext(), isTrue); | 677 expect(identifier.inSetterContext(), isTrue); |
| 647 } | 678 } |
| 648 | 679 |
| 649 void test_isQualified_inMethodInvocation_noTarget() { | 680 void test_isQualified_inMethodInvocation_noTarget() { |
| 650 MethodInvocation invocation = | 681 MethodInvocation invocation = AstTestFactory |
| 651 AstFactory.methodInvocation2("test", [AstFactory.identifier3("arg0")]); | 682 .methodInvocation2("test", [AstTestFactory.identifier3("arg0")]); |
| 652 SimpleIdentifier identifier = invocation.methodName; | 683 SimpleIdentifier identifier = invocation.methodName; |
| 653 expect(identifier.isQualified, isFalse); | 684 expect(identifier.isQualified, isFalse); |
| 654 } | 685 } |
| 655 | 686 |
| 656 void test_isQualified_inMethodInvocation_withTarget() { | 687 void test_isQualified_inMethodInvocation_withTarget() { |
| 657 MethodInvocation invocation = AstFactory.methodInvocation( | 688 MethodInvocation invocation = AstTestFactory.methodInvocation( |
| 658 AstFactory.identifier3("target"), | 689 AstTestFactory.identifier3("target"), |
| 659 "test", | 690 "test", |
| 660 [AstFactory.identifier3("arg0")]); | 691 [AstTestFactory.identifier3("arg0")]); |
| 661 SimpleIdentifier identifier = invocation.methodName; | 692 SimpleIdentifier identifier = invocation.methodName; |
| 662 expect(identifier.isQualified, isTrue); | 693 expect(identifier.isQualified, isTrue); |
| 663 } | 694 } |
| 664 | 695 |
| 665 void test_isQualified_inPrefixedIdentifier_name() { | 696 void test_isQualified_inPrefixedIdentifier_name() { |
| 666 SimpleIdentifier identifier = AstFactory.identifier3("test"); | 697 SimpleIdentifier identifier = AstTestFactory.identifier3("test"); |
| 667 AstFactory.identifier4("prefix", identifier); | 698 AstTestFactory.identifier4("prefix", identifier); |
| 668 expect(identifier.isQualified, isTrue); | 699 expect(identifier.isQualified, isTrue); |
| 669 } | 700 } |
| 670 | 701 |
| 671 void test_isQualified_inPrefixedIdentifier_prefix() { | 702 void test_isQualified_inPrefixedIdentifier_prefix() { |
| 672 SimpleIdentifier identifier = AstFactory.identifier3("test"); | 703 SimpleIdentifier identifier = AstTestFactory.identifier3("test"); |
| 673 AstFactory.identifier(identifier, AstFactory.identifier3("name")); | 704 AstTestFactory.identifier(identifier, AstTestFactory.identifier3("name")); |
| 674 expect(identifier.isQualified, isFalse); | 705 expect(identifier.isQualified, isFalse); |
| 675 } | 706 } |
| 676 | 707 |
| 677 void test_isQualified_inPropertyAccess_name() { | 708 void test_isQualified_inPropertyAccess_name() { |
| 678 SimpleIdentifier identifier = AstFactory.identifier3("test"); | 709 SimpleIdentifier identifier = AstTestFactory.identifier3("test"); |
| 679 AstFactory.propertyAccess(AstFactory.identifier3("target"), identifier); | 710 AstTestFactory.propertyAccess( |
| 711 AstTestFactory.identifier3("target"), identifier); |
| 680 expect(identifier.isQualified, isTrue); | 712 expect(identifier.isQualified, isTrue); |
| 681 } | 713 } |
| 682 | 714 |
| 683 void test_isQualified_inPropertyAccess_target() { | 715 void test_isQualified_inPropertyAccess_target() { |
| 684 SimpleIdentifier identifier = AstFactory.identifier3("test"); | 716 SimpleIdentifier identifier = AstTestFactory.identifier3("test"); |
| 685 AstFactory.propertyAccess(identifier, AstFactory.identifier3("name")); | 717 AstTestFactory.propertyAccess( |
| 718 identifier, AstTestFactory.identifier3("name")); |
| 686 expect(identifier.isQualified, isFalse); | 719 expect(identifier.isQualified, isFalse); |
| 687 } | 720 } |
| 688 | 721 |
| 689 void test_isQualified_inReturnStatement() { | 722 void test_isQualified_inReturnStatement() { |
| 690 SimpleIdentifier identifier = AstFactory.identifier3("test"); | 723 SimpleIdentifier identifier = AstTestFactory.identifier3("test"); |
| 691 AstFactory.returnStatement2(identifier); | 724 AstTestFactory.returnStatement2(identifier); |
| 692 expect(identifier.isQualified, isFalse); | 725 expect(identifier.isQualified, isFalse); |
| 693 } | 726 } |
| 694 | 727 |
| 695 SimpleIdentifier _createIdentifier( | 728 SimpleIdentifier _createIdentifier( |
| 696 _WrapperKind wrapper, _AssignmentKind assignment) { | 729 _WrapperKind wrapper, _AssignmentKind assignment) { |
| 697 SimpleIdentifier identifier = AstFactory.identifier3("a"); | 730 SimpleIdentifier identifier = AstTestFactory.identifier3("a"); |
| 698 Expression expression = identifier; | 731 Expression expression = identifier; |
| 699 while (true) { | 732 while (true) { |
| 700 if (wrapper == _WrapperKind.PREFIXED_LEFT) { | 733 if (wrapper == _WrapperKind.PREFIXED_LEFT) { |
| 701 expression = | 734 expression = AstTestFactory.identifier( |
| 702 AstFactory.identifier(identifier, AstFactory.identifier3("_")); | 735 identifier, AstTestFactory.identifier3("_")); |
| 703 } else if (wrapper == _WrapperKind.PREFIXED_RIGHT) { | 736 } else if (wrapper == _WrapperKind.PREFIXED_RIGHT) { |
| 704 expression = | 737 expression = AstTestFactory.identifier( |
| 705 AstFactory.identifier(AstFactory.identifier3("_"), identifier); | 738 AstTestFactory.identifier3("_"), identifier); |
| 706 } else if (wrapper == _WrapperKind.PROPERTY_LEFT) { | 739 } else if (wrapper == _WrapperKind.PROPERTY_LEFT) { |
| 707 expression = AstFactory.propertyAccess2(expression, "_"); | 740 expression = AstTestFactory.propertyAccess2(expression, "_"); |
| 708 } else if (wrapper == _WrapperKind.PROPERTY_RIGHT) { | 741 } else if (wrapper == _WrapperKind.PROPERTY_RIGHT) { |
| 709 expression = | 742 expression = AstTestFactory.propertyAccess( |
| 710 AstFactory.propertyAccess(AstFactory.identifier3("_"), identifier); | 743 AstTestFactory.identifier3("_"), identifier); |
| 711 } else if (wrapper == _WrapperKind.NONE) {} | 744 } else if (wrapper == _WrapperKind.NONE) {} |
| 712 break; | 745 break; |
| 713 } | 746 } |
| 714 while (true) { | 747 while (true) { |
| 715 if (assignment == _AssignmentKind.BINARY) { | 748 if (assignment == _AssignmentKind.BINARY) { |
| 716 AstFactory.binaryExpression( | 749 AstTestFactory.binaryExpression( |
| 717 expression, TokenType.PLUS, AstFactory.identifier3("_")); | 750 expression, TokenType.PLUS, AstTestFactory.identifier3("_")); |
| 718 } else if (assignment == _AssignmentKind.COMPOUND_LEFT) { | 751 } else if (assignment == _AssignmentKind.COMPOUND_LEFT) { |
| 719 AstFactory.assignmentExpression( | 752 AstTestFactory.assignmentExpression( |
| 720 expression, TokenType.PLUS_EQ, AstFactory.identifier3("_")); | 753 expression, TokenType.PLUS_EQ, AstTestFactory.identifier3("_")); |
| 721 } else if (assignment == _AssignmentKind.COMPOUND_RIGHT) { | 754 } else if (assignment == _AssignmentKind.COMPOUND_RIGHT) { |
| 722 AstFactory.assignmentExpression( | 755 AstTestFactory.assignmentExpression( |
| 723 AstFactory.identifier3("_"), TokenType.PLUS_EQ, expression); | 756 AstTestFactory.identifier3("_"), TokenType.PLUS_EQ, expression); |
| 724 } else if (assignment == _AssignmentKind.POSTFIX_INC) { | 757 } else if (assignment == _AssignmentKind.POSTFIX_INC) { |
| 725 AstFactory.postfixExpression(expression, TokenType.PLUS_PLUS); | 758 AstTestFactory.postfixExpression(expression, TokenType.PLUS_PLUS); |
| 726 } else if (assignment == _AssignmentKind.PREFIX_DEC) { | 759 } else if (assignment == _AssignmentKind.PREFIX_DEC) { |
| 727 AstFactory.prefixExpression(TokenType.MINUS_MINUS, expression); | 760 AstTestFactory.prefixExpression(TokenType.MINUS_MINUS, expression); |
| 728 } else if (assignment == _AssignmentKind.PREFIX_INC) { | 761 } else if (assignment == _AssignmentKind.PREFIX_INC) { |
| 729 AstFactory.prefixExpression(TokenType.PLUS_PLUS, expression); | 762 AstTestFactory.prefixExpression(TokenType.PLUS_PLUS, expression); |
| 730 } else if (assignment == _AssignmentKind.PREFIX_NOT) { | 763 } else if (assignment == _AssignmentKind.PREFIX_NOT) { |
| 731 AstFactory.prefixExpression(TokenType.BANG, expression); | 764 AstTestFactory.prefixExpression(TokenType.BANG, expression); |
| 732 } else if (assignment == _AssignmentKind.SIMPLE_LEFT) { | 765 } else if (assignment == _AssignmentKind.SIMPLE_LEFT) { |
| 733 AstFactory.assignmentExpression( | 766 AstTestFactory.assignmentExpression( |
| 734 expression, TokenType.EQ, AstFactory.identifier3("_")); | 767 expression, TokenType.EQ, AstTestFactory.identifier3("_")); |
| 735 } else if (assignment == _AssignmentKind.SIMPLE_RIGHT) { | 768 } else if (assignment == _AssignmentKind.SIMPLE_RIGHT) { |
| 736 AstFactory.assignmentExpression( | 769 AstTestFactory.assignmentExpression( |
| 737 AstFactory.identifier3("_"), TokenType.EQ, expression); | 770 AstTestFactory.identifier3("_"), TokenType.EQ, expression); |
| 738 } else if (assignment == _AssignmentKind.NONE) {} | 771 } else if (assignment == _AssignmentKind.NONE) {} |
| 739 break; | 772 break; |
| 740 } | 773 } |
| 741 return identifier; | 774 return identifier; |
| 742 } | 775 } |
| 743 | 776 |
| 744 /** | 777 /** |
| 745 * Return the top-most node in the AST structure containing the given identifi
er. | 778 * Return the top-most node in the AST structure containing the given identifi
er. |
| 746 * | 779 * |
| 747 * @param identifier the identifier in the AST structure being traversed | 780 * @param identifier the identifier in the AST structure being traversed |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 expect(stringLiteral.literal, same(token)); | 1022 expect(stringLiteral.literal, same(token)); |
| 990 expect(stringLiteral.beginToken, same(token)); | 1023 expect(stringLiteral.beginToken, same(token)); |
| 991 expect(stringLiteral.endToken, same(token)); | 1024 expect(stringLiteral.endToken, same(token)); |
| 992 expect(stringLiteral.value, "value"); | 1025 expect(stringLiteral.value, "value"); |
| 993 } | 1026 } |
| 994 } | 1027 } |
| 995 | 1028 |
| 996 @reflectiveTest | 1029 @reflectiveTest |
| 997 class StringInterpolationTest extends ParserTestCase { | 1030 class StringInterpolationTest extends ParserTestCase { |
| 998 void test_contentsOffsetEnd() { | 1031 void test_contentsOffsetEnd() { |
| 999 AstFactory.interpolationExpression(AstFactory.identifier3('bb')); | 1032 AstTestFactory.interpolationExpression(AstTestFactory.identifier3('bb')); |
| 1000 // 'a${bb}ccc' | 1033 // 'a${bb}ccc' |
| 1001 { | 1034 { |
| 1002 var ae = AstFactory.interpolationString("'a", "a"); | 1035 var ae = AstTestFactory.interpolationString("'a", "a"); |
| 1003 var cToken = new StringToken(TokenType.STRING, "ccc'", 10); | 1036 var cToken = new StringToken(TokenType.STRING, "ccc'", 10); |
| 1004 var cElement = new InterpolationString(cToken, 'ccc'); | 1037 var cElement = new InterpolationString(cToken, 'ccc'); |
| 1005 StringInterpolation node = AstFactory.string([ae, ae, cElement]); | 1038 StringInterpolation node = AstTestFactory.string([ae, ae, cElement]); |
| 1006 expect(node.contentsOffset, 1); | 1039 expect(node.contentsOffset, 1); |
| 1007 expect(node.contentsEnd, 10 + 4 - 1); | 1040 expect(node.contentsEnd, 10 + 4 - 1); |
| 1008 } | 1041 } |
| 1009 // '''a${bb}ccc''' | 1042 // '''a${bb}ccc''' |
| 1010 { | 1043 { |
| 1011 var ae = AstFactory.interpolationString("'''a", "a"); | 1044 var ae = AstTestFactory.interpolationString("'''a", "a"); |
| 1012 var cToken = new StringToken(TokenType.STRING, "ccc'''", 10); | 1045 var cToken = new StringToken(TokenType.STRING, "ccc'''", 10); |
| 1013 var cElement = new InterpolationString(cToken, 'ccc'); | 1046 var cElement = new InterpolationString(cToken, 'ccc'); |
| 1014 StringInterpolation node = AstFactory.string([ae, ae, cElement]); | 1047 StringInterpolation node = AstTestFactory.string([ae, ae, cElement]); |
| 1015 expect(node.contentsOffset, 3); | 1048 expect(node.contentsOffset, 3); |
| 1016 expect(node.contentsEnd, 10 + 4 - 1); | 1049 expect(node.contentsEnd, 10 + 4 - 1); |
| 1017 } | 1050 } |
| 1018 // """a${bb}ccc""" | 1051 // """a${bb}ccc""" |
| 1019 { | 1052 { |
| 1020 var ae = AstFactory.interpolationString('"""a', "a"); | 1053 var ae = AstTestFactory.interpolationString('"""a', "a"); |
| 1021 var cToken = new StringToken(TokenType.STRING, 'ccc"""', 10); | 1054 var cToken = new StringToken(TokenType.STRING, 'ccc"""', 10); |
| 1022 var cElement = new InterpolationString(cToken, 'ccc'); | 1055 var cElement = new InterpolationString(cToken, 'ccc'); |
| 1023 StringInterpolation node = AstFactory.string([ae, ae, cElement]); | 1056 StringInterpolation node = AstTestFactory.string([ae, ae, cElement]); |
| 1024 expect(node.contentsOffset, 3); | 1057 expect(node.contentsOffset, 3); |
| 1025 expect(node.contentsEnd, 10 + 4 - 1); | 1058 expect(node.contentsEnd, 10 + 4 - 1); |
| 1026 } | 1059 } |
| 1027 // r'a${bb}ccc' | 1060 // r'a${bb}ccc' |
| 1028 { | 1061 { |
| 1029 var ae = AstFactory.interpolationString("r'a", "a"); | 1062 var ae = AstTestFactory.interpolationString("r'a", "a"); |
| 1030 var cToken = new StringToken(TokenType.STRING, "ccc'", 10); | 1063 var cToken = new StringToken(TokenType.STRING, "ccc'", 10); |
| 1031 var cElement = new InterpolationString(cToken, 'ccc'); | 1064 var cElement = new InterpolationString(cToken, 'ccc'); |
| 1032 StringInterpolation node = AstFactory.string([ae, ae, cElement]); | 1065 StringInterpolation node = AstTestFactory.string([ae, ae, cElement]); |
| 1033 expect(node.contentsOffset, 2); | 1066 expect(node.contentsOffset, 2); |
| 1034 expect(node.contentsEnd, 10 + 4 - 1); | 1067 expect(node.contentsEnd, 10 + 4 - 1); |
| 1035 } | 1068 } |
| 1036 // r'''a${bb}ccc''' | 1069 // r'''a${bb}ccc''' |
| 1037 { | 1070 { |
| 1038 var ae = AstFactory.interpolationString("r'''a", "a"); | 1071 var ae = AstTestFactory.interpolationString("r'''a", "a"); |
| 1039 var cToken = new StringToken(TokenType.STRING, "ccc'''", 10); | 1072 var cToken = new StringToken(TokenType.STRING, "ccc'''", 10); |
| 1040 var cElement = new InterpolationString(cToken, 'ccc'); | 1073 var cElement = new InterpolationString(cToken, 'ccc'); |
| 1041 StringInterpolation node = AstFactory.string([ae, ae, cElement]); | 1074 StringInterpolation node = AstTestFactory.string([ae, ae, cElement]); |
| 1042 expect(node.contentsOffset, 4); | 1075 expect(node.contentsOffset, 4); |
| 1043 expect(node.contentsEnd, 10 + 4 - 1); | 1076 expect(node.contentsEnd, 10 + 4 - 1); |
| 1044 } | 1077 } |
| 1045 // r"""a${bb}ccc""" | 1078 // r"""a${bb}ccc""" |
| 1046 { | 1079 { |
| 1047 var ae = AstFactory.interpolationString('r"""a', "a"); | 1080 var ae = AstTestFactory.interpolationString('r"""a', "a"); |
| 1048 var cToken = new StringToken(TokenType.STRING, 'ccc"""', 10); | 1081 var cToken = new StringToken(TokenType.STRING, 'ccc"""', 10); |
| 1049 var cElement = new InterpolationString(cToken, 'ccc'); | 1082 var cElement = new InterpolationString(cToken, 'ccc'); |
| 1050 StringInterpolation node = AstFactory.string([ae, ae, cElement]); | 1083 StringInterpolation node = AstTestFactory.string([ae, ae, cElement]); |
| 1051 expect(node.contentsOffset, 4); | 1084 expect(node.contentsOffset, 4); |
| 1052 expect(node.contentsEnd, 10 + 4 - 1); | 1085 expect(node.contentsEnd, 10 + 4 - 1); |
| 1053 } | 1086 } |
| 1054 } | 1087 } |
| 1055 | 1088 |
| 1056 void test_isMultiline() { | 1089 void test_isMultiline() { |
| 1057 var b = AstFactory.interpolationExpression(AstFactory.identifier3('bb')); | 1090 var b = AstTestFactory |
| 1091 .interpolationExpression(AstTestFactory.identifier3('bb')); |
| 1058 // ' | 1092 // ' |
| 1059 { | 1093 { |
| 1060 var a = AstFactory.interpolationString("'a", "a"); | 1094 var a = AstTestFactory.interpolationString("'a", "a"); |
| 1061 var c = AstFactory.interpolationString("ccc'", "ccc"); | 1095 var c = AstTestFactory.interpolationString("ccc'", "ccc"); |
| 1062 StringInterpolation node = AstFactory.string([a, b, c]); | 1096 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1063 expect(node.isMultiline, isFalse); | 1097 expect(node.isMultiline, isFalse); |
| 1064 } | 1098 } |
| 1065 // ''' | 1099 // ''' |
| 1066 { | 1100 { |
| 1067 var a = AstFactory.interpolationString("'''a", "a"); | 1101 var a = AstTestFactory.interpolationString("'''a", "a"); |
| 1068 var c = AstFactory.interpolationString("ccc'''", "ccc"); | 1102 var c = AstTestFactory.interpolationString("ccc'''", "ccc"); |
| 1069 StringInterpolation node = AstFactory.string([a, b, c]); | 1103 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1070 expect(node.isMultiline, isTrue); | 1104 expect(node.isMultiline, isTrue); |
| 1071 } | 1105 } |
| 1072 // " | 1106 // " |
| 1073 { | 1107 { |
| 1074 var a = AstFactory.interpolationString('"a', "a"); | 1108 var a = AstTestFactory.interpolationString('"a', "a"); |
| 1075 var c = AstFactory.interpolationString('ccc"', "ccc"); | 1109 var c = AstTestFactory.interpolationString('ccc"', "ccc"); |
| 1076 StringInterpolation node = AstFactory.string([a, b, c]); | 1110 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1077 expect(node.isMultiline, isFalse); | 1111 expect(node.isMultiline, isFalse); |
| 1078 } | 1112 } |
| 1079 // """ | 1113 // """ |
| 1080 { | 1114 { |
| 1081 var a = AstFactory.interpolationString('"""a', "a"); | 1115 var a = AstTestFactory.interpolationString('"""a', "a"); |
| 1082 var c = AstFactory.interpolationString('ccc"""', "ccc"); | 1116 var c = AstTestFactory.interpolationString('ccc"""', "ccc"); |
| 1083 StringInterpolation node = AstFactory.string([a, b, c]); | 1117 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1084 expect(node.isMultiline, isTrue); | 1118 expect(node.isMultiline, isTrue); |
| 1085 } | 1119 } |
| 1086 } | 1120 } |
| 1087 | 1121 |
| 1088 void test_isRaw() { | 1122 void test_isRaw() { |
| 1089 StringInterpolation node = AstFactory.string(); | 1123 StringInterpolation node = AstTestFactory.string(); |
| 1090 expect(node.isRaw, isFalse); | 1124 expect(node.isRaw, isFalse); |
| 1091 } | 1125 } |
| 1092 | 1126 |
| 1093 void test_isSingleQuoted() { | 1127 void test_isSingleQuoted() { |
| 1094 var b = AstFactory.interpolationExpression(AstFactory.identifier3('bb')); | 1128 var b = AstTestFactory |
| 1129 .interpolationExpression(AstTestFactory.identifier3('bb')); |
| 1095 // " | 1130 // " |
| 1096 { | 1131 { |
| 1097 var a = AstFactory.interpolationString('"a', "a"); | 1132 var a = AstTestFactory.interpolationString('"a', "a"); |
| 1098 var c = AstFactory.interpolationString('ccc"', "ccc"); | 1133 var c = AstTestFactory.interpolationString('ccc"', "ccc"); |
| 1099 StringInterpolation node = AstFactory.string([a, b, c]); | 1134 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1100 expect(node.isSingleQuoted, isFalse); | 1135 expect(node.isSingleQuoted, isFalse); |
| 1101 } | 1136 } |
| 1102 // """ | 1137 // """ |
| 1103 { | 1138 { |
| 1104 var a = AstFactory.interpolationString('"""a', "a"); | 1139 var a = AstTestFactory.interpolationString('"""a', "a"); |
| 1105 var c = AstFactory.interpolationString('ccc"""', "ccc"); | 1140 var c = AstTestFactory.interpolationString('ccc"""', "ccc"); |
| 1106 StringInterpolation node = AstFactory.string([a, b, c]); | 1141 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1107 expect(node.isSingleQuoted, isFalse); | 1142 expect(node.isSingleQuoted, isFalse); |
| 1108 } | 1143 } |
| 1109 // ' | 1144 // ' |
| 1110 { | 1145 { |
| 1111 var a = AstFactory.interpolationString("'a", "a"); | 1146 var a = AstTestFactory.interpolationString("'a", "a"); |
| 1112 var c = AstFactory.interpolationString("ccc'", "ccc"); | 1147 var c = AstTestFactory.interpolationString("ccc'", "ccc"); |
| 1113 StringInterpolation node = AstFactory.string([a, b, c]); | 1148 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1114 expect(node.isSingleQuoted, isTrue); | 1149 expect(node.isSingleQuoted, isTrue); |
| 1115 } | 1150 } |
| 1116 // ''' | 1151 // ''' |
| 1117 { | 1152 { |
| 1118 var a = AstFactory.interpolationString("'''a", "a"); | 1153 var a = AstTestFactory.interpolationString("'''a", "a"); |
| 1119 var c = AstFactory.interpolationString("ccc'''", "ccc"); | 1154 var c = AstTestFactory.interpolationString("ccc'''", "ccc"); |
| 1120 StringInterpolation node = AstFactory.string([a, b, c]); | 1155 StringInterpolation node = AstTestFactory.string([a, b, c]); |
| 1121 expect(node.isSingleQuoted, isTrue); | 1156 expect(node.isSingleQuoted, isTrue); |
| 1122 } | 1157 } |
| 1123 } | 1158 } |
| 1124 } | 1159 } |
| 1125 | 1160 |
| 1126 @reflectiveTest | 1161 @reflectiveTest |
| 1127 class VariableDeclarationTest extends ParserTestCase { | 1162 class VariableDeclarationTest extends ParserTestCase { |
| 1128 void test_getDocumentationComment_onGrandParent() { | 1163 void test_getDocumentationComment_onGrandParent() { |
| 1129 VariableDeclaration varDecl = AstFactory.variableDeclaration("a"); | 1164 VariableDeclaration varDecl = AstTestFactory.variableDeclaration("a"); |
| 1130 TopLevelVariableDeclaration decl = | 1165 TopLevelVariableDeclaration decl = |
| 1131 AstFactory.topLevelVariableDeclaration2(Keyword.VAR, [varDecl]); | 1166 AstTestFactory.topLevelVariableDeclaration2(Keyword.VAR, [varDecl]); |
| 1132 Comment comment = Comment.createDocumentationComment(new List<Token>(0)); | 1167 Comment comment = Comment.createDocumentationComment(new List<Token>(0)); |
| 1133 expect(varDecl.documentationComment, isNull); | 1168 expect(varDecl.documentationComment, isNull); |
| 1134 decl.documentationComment = comment; | 1169 decl.documentationComment = comment; |
| 1135 expect(varDecl.documentationComment, isNotNull); | 1170 expect(varDecl.documentationComment, isNotNull); |
| 1136 expect(decl.documentationComment, isNotNull); | 1171 expect(decl.documentationComment, isNotNull); |
| 1137 } | 1172 } |
| 1138 | 1173 |
| 1139 void test_getDocumentationComment_onNode() { | 1174 void test_getDocumentationComment_onNode() { |
| 1140 VariableDeclaration decl = AstFactory.variableDeclaration("a"); | 1175 VariableDeclaration decl = AstTestFactory.variableDeclaration("a"); |
| 1141 Comment comment = Comment.createDocumentationComment(new List<Token>(0)); | 1176 Comment comment = Comment.createDocumentationComment(new List<Token>(0)); |
| 1142 decl.documentationComment = comment; | 1177 decl.documentationComment = comment; |
| 1143 expect(decl.documentationComment, isNotNull); | 1178 expect(decl.documentationComment, isNotNull); |
| 1144 } | 1179 } |
| 1145 } | 1180 } |
| 1146 | 1181 |
| 1147 class _AssignmentKind { | 1182 class _AssignmentKind { |
| 1148 static const _AssignmentKind BINARY = const _AssignmentKind('BINARY', 0); | 1183 static const _AssignmentKind BINARY = const _AssignmentKind('BINARY', 0); |
| 1149 | 1184 |
| 1150 static const _AssignmentKind COMPOUND_LEFT = | 1185 static const _AssignmentKind COMPOUND_LEFT = |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1227 final int ordinal; | 1262 final int ordinal; |
| 1228 | 1263 |
| 1229 const _WrapperKind(this.name, this.ordinal); | 1264 const _WrapperKind(this.name, this.ordinal); |
| 1230 | 1265 |
| 1231 int get hashCode => ordinal; | 1266 int get hashCode => ordinal; |
| 1232 | 1267 |
| 1233 int compareTo(_WrapperKind other) => ordinal - other.ordinal; | 1268 int compareTo(_WrapperKind other) => ordinal - other.ordinal; |
| 1234 | 1269 |
| 1235 String toString() => name; | 1270 String toString() => name; |
| 1236 } | 1271 } |
| OLD | NEW |