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.element.builder_test; | 5 library analyzer.test.dart.element.builder_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/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
10 import 'package:analyzer/src/dart/ast/ast.dart'; | 10 import 'package:analyzer/src/dart/ast/ast.dart'; |
11 import 'package:analyzer/src/dart/element/builder.dart'; | 11 import 'package:analyzer/src/dart/element/builder.dart'; |
12 import 'package:analyzer/src/dart/element/element.dart'; | 12 import 'package:analyzer/src/dart/element/element.dart'; |
13 import 'package:analyzer/src/generated/engine.dart'; | 13 import 'package:analyzer/src/generated/engine.dart'; |
14 import 'package:analyzer/src/generated/resolver.dart'; | 14 import 'package:analyzer/src/generated/resolver.dart'; |
15 import 'package:analyzer/src/generated/source.dart'; | 15 import 'package:analyzer/src/generated/source.dart'; |
16 import 'package:analyzer/src/generated/testing/ast_factory.dart'; | 16 import 'package:analyzer/src/generated/testing/ast_test_factory.dart'; |
17 import 'package:analyzer/src/generated/testing/element_factory.dart'; | 17 import 'package:analyzer/src/generated/testing/element_factory.dart'; |
18 import 'package:analyzer/src/generated/testing/token_factory.dart'; | 18 import 'package:analyzer/src/generated/testing/token_factory.dart'; |
19 import 'package:analyzer/src/generated/utilities_dart.dart'; | 19 import 'package:analyzer/src/generated/utilities_dart.dart'; |
20 import 'package:test/test.dart'; | 20 import 'package:test/test.dart'; |
21 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 21 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
22 | 22 |
23 import '../../generated/parser_test.dart'; | 23 import '../../generated/parser_test.dart'; |
24 import '../../generated/test_support.dart'; | 24 import '../../generated/test_support.dart'; |
25 | 25 |
26 main() { | 26 main() { |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 .localVariables; | 241 .localVariables; |
242 String exceptionParameterName = "e"; | 242 String exceptionParameterName = "e"; |
243 expect(variables, hasLength(1)); | 243 expect(variables, hasLength(1)); |
244 VariableElement exceptionVariable = variables[0]; | 244 VariableElement exceptionVariable = variables[0]; |
245 expect(exceptionVariable, isNotNull); | 245 expect(exceptionVariable, isNotNull); |
246 expect(exceptionVariable.name, exceptionParameterName); | 246 expect(exceptionVariable.name, exceptionParameterName); |
247 expect(exceptionVariable.hasImplicitType, isFalse); | 247 expect(exceptionVariable.hasImplicitType, isFalse); |
248 } | 248 } |
249 | 249 |
250 void test_visitCompilationUnit_codeRange() { | 250 void test_visitCompilationUnit_codeRange() { |
251 TopLevelVariableDeclaration topLevelVariableDeclaration = AstFactory | 251 TopLevelVariableDeclaration topLevelVariableDeclaration = AstTestFactory |
252 .topLevelVariableDeclaration(null, AstFactory.typeName4('int'), | 252 .topLevelVariableDeclaration(null, AstTestFactory.typeName4('int'), |
253 [AstFactory.variableDeclaration('V')]); | 253 [AstTestFactory.variableDeclaration('V')]); |
254 CompilationUnit unit = new CompilationUnit( | 254 CompilationUnit unit = new CompilationUnit( |
255 topLevelVariableDeclaration.beginToken, | 255 topLevelVariableDeclaration.beginToken, |
256 null, | 256 null, |
257 [], | 257 [], |
258 [topLevelVariableDeclaration], | 258 [topLevelVariableDeclaration], |
259 topLevelVariableDeclaration.endToken); | 259 topLevelVariableDeclaration.endToken); |
260 ElementHolder holder = new ElementHolder(); | 260 ElementHolder holder = new ElementHolder(); |
261 ElementBuilder builder = _makeBuilder(holder); | 261 ElementBuilder builder = _makeBuilder(holder); |
262 unit.beginToken.offset = 10; | 262 unit.beginToken.offset = 10; |
263 unit.endToken.offset = 40; | 263 unit.endToken.offset = 40; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 expect(variable.isPrivate, isFalse); | 298 expect(variable.isPrivate, isFalse); |
299 expect(variable.isPublic, isTrue); | 299 expect(variable.isPublic, isTrue); |
300 expect(variable.isSynthetic, isFalse); | 300 expect(variable.isSynthetic, isFalse); |
301 expect(variable.name, 'i'); | 301 expect(variable.name, 'i'); |
302 } | 302 } |
303 | 303 |
304 void test_visitDefaultFormalParameter_noType() { | 304 void test_visitDefaultFormalParameter_noType() { |
305 // p = 0 | 305 // p = 0 |
306 String parameterName = 'p'; | 306 String parameterName = 'p'; |
307 DefaultFormalParameter formalParameter = | 307 DefaultFormalParameter formalParameter = |
308 AstFactory.positionalFormalParameter( | 308 AstTestFactory.positionalFormalParameter( |
309 AstFactory.simpleFormalParameter3(parameterName), | 309 AstTestFactory.simpleFormalParameter3(parameterName), |
310 AstFactory.integer(0)); | 310 AstTestFactory.integer(0)); |
311 formalParameter.beginToken.offset = 50; | 311 formalParameter.beginToken.offset = 50; |
312 formalParameter.endToken.offset = 80; | 312 formalParameter.endToken.offset = 80; |
313 | 313 |
314 ElementHolder holder = buildElementsForAst(formalParameter); | 314 ElementHolder holder = buildElementsForAst(formalParameter); |
315 List<ParameterElement> parameters = holder.parameters; | 315 List<ParameterElement> parameters = holder.parameters; |
316 expect(parameters, hasLength(1)); | 316 expect(parameters, hasLength(1)); |
317 ParameterElement parameter = parameters[0]; | 317 ParameterElement parameter = parameters[0]; |
318 assertHasCodeRange(parameter, 50, 31); | 318 assertHasCodeRange(parameter, 50, 31); |
319 expect(parameter.hasImplicitType, isTrue); | 319 expect(parameter.hasImplicitType, isTrue); |
320 expect(parameter.initializer, isNotNull); | 320 expect(parameter.initializer, isNotNull); |
321 expect(parameter.initializer.type, isNotNull); | 321 expect(parameter.initializer.type, isNotNull); |
322 expect(parameter.initializer.hasImplicitReturnType, isTrue); | 322 expect(parameter.initializer.hasImplicitReturnType, isTrue); |
323 expect(parameter.isConst, isFalse); | 323 expect(parameter.isConst, isFalse); |
324 expect(parameter.isDeprecated, isFalse); | 324 expect(parameter.isDeprecated, isFalse); |
325 expect(parameter.isFinal, isFalse); | 325 expect(parameter.isFinal, isFalse); |
326 expect(parameter.isInitializingFormal, isFalse); | 326 expect(parameter.isInitializingFormal, isFalse); |
327 expect(parameter.isOverride, isFalse); | 327 expect(parameter.isOverride, isFalse); |
328 expect(parameter.isPrivate, isFalse); | 328 expect(parameter.isPrivate, isFalse); |
329 expect(parameter.isPublic, isTrue); | 329 expect(parameter.isPublic, isTrue); |
330 expect(parameter.isSynthetic, isFalse); | 330 expect(parameter.isSynthetic, isFalse); |
331 expect(parameter.name, parameterName); | 331 expect(parameter.name, parameterName); |
332 } | 332 } |
333 | 333 |
334 void test_visitDefaultFormalParameter_type() { | 334 void test_visitDefaultFormalParameter_type() { |
335 // E p = 0 | 335 // E p = 0 |
336 String parameterName = 'p'; | 336 String parameterName = 'p'; |
337 DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter( | 337 DefaultFormalParameter formalParameter = |
338 AstFactory.simpleFormalParameter4( | 338 AstTestFactory.namedFormalParameter( |
339 AstFactory.typeName4('E'), parameterName), | 339 AstTestFactory.simpleFormalParameter4( |
340 AstFactory.integer(0)); | 340 AstTestFactory.typeName4('E'), parameterName), |
| 341 AstTestFactory.integer(0)); |
341 | 342 |
342 ElementHolder holder = buildElementsForAst(formalParameter); | 343 ElementHolder holder = buildElementsForAst(formalParameter); |
343 List<ParameterElement> parameters = holder.parameters; | 344 List<ParameterElement> parameters = holder.parameters; |
344 expect(parameters, hasLength(1)); | 345 expect(parameters, hasLength(1)); |
345 ParameterElement parameter = parameters[0]; | 346 ParameterElement parameter = parameters[0]; |
346 expect(parameter.hasImplicitType, isFalse); | 347 expect(parameter.hasImplicitType, isFalse); |
347 expect(parameter.initializer, isNotNull); | 348 expect(parameter.initializer, isNotNull); |
348 expect(parameter.initializer.type, isNotNull); | 349 expect(parameter.initializer.type, isNotNull); |
349 expect(parameter.initializer.hasImplicitReturnType, isTrue); | 350 expect(parameter.initializer.hasImplicitReturnType, isTrue); |
350 expect(parameter.isConst, isFalse); | 351 expect(parameter.isConst, isFalse); |
351 expect(parameter.isDeprecated, isFalse); | 352 expect(parameter.isDeprecated, isFalse); |
352 expect(parameter.isFinal, isFalse); | 353 expect(parameter.isFinal, isFalse); |
353 expect(parameter.isInitializingFormal, isFalse); | 354 expect(parameter.isInitializingFormal, isFalse); |
354 expect(parameter.isOverride, isFalse); | 355 expect(parameter.isOverride, isFalse); |
355 expect(parameter.isPrivate, isFalse); | 356 expect(parameter.isPrivate, isFalse); |
356 expect(parameter.isPublic, isTrue); | 357 expect(parameter.isPublic, isTrue); |
357 expect(parameter.isSynthetic, isFalse); | 358 expect(parameter.isSynthetic, isFalse); |
358 expect(parameter.name, parameterName); | 359 expect(parameter.name, parameterName); |
359 } | 360 } |
360 | 361 |
361 void test_visitFunctionExpression() { | 362 void test_visitFunctionExpression() { |
362 ElementHolder holder = new ElementHolder(); | 363 ElementHolder holder = new ElementHolder(); |
363 ElementBuilder builder = _makeBuilder(holder); | 364 ElementBuilder builder = _makeBuilder(holder); |
364 FunctionExpression expression = AstFactory.functionExpression2( | 365 FunctionExpression expression = AstTestFactory.functionExpression2( |
365 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()); | 366 AstTestFactory.formalParameterList(), |
| 367 AstTestFactory.blockFunctionBody2()); |
366 expression.accept(builder); | 368 expression.accept(builder); |
367 List<FunctionElement> functions = holder.functions; | 369 List<FunctionElement> functions = holder.functions; |
368 expect(functions, hasLength(1)); | 370 expect(functions, hasLength(1)); |
369 FunctionElement function = functions[0]; | 371 FunctionElement function = functions[0]; |
370 expect(function, isNotNull); | 372 expect(function, isNotNull); |
371 expect(expression.element, same(function)); | 373 expect(expression.element, same(function)); |
372 expect(function.hasImplicitReturnType, isTrue); | 374 expect(function.hasImplicitReturnType, isTrue); |
373 expect(function.isSynthetic, isFalse); | 375 expect(function.isSynthetic, isFalse); |
374 expect(function.typeParameters, hasLength(0)); | 376 expect(function.typeParameters, hasLength(0)); |
375 } | 377 } |
(...skipping 18 matching lines...) Expand all Loading... |
394 expect(function.hasImplicitReturnType, isTrue); | 396 expect(function.hasImplicitReturnType, isTrue); |
395 expect(function.isSynthetic, isFalse); | 397 expect(function.isSynthetic, isFalse); |
396 expect(function.typeParameters, hasLength(0)); | 398 expect(function.typeParameters, hasLength(0)); |
397 } | 399 } |
398 | 400 |
399 void test_visitFunctionTypeAlias() { | 401 void test_visitFunctionTypeAlias() { |
400 ElementHolder holder = new ElementHolder(); | 402 ElementHolder holder = new ElementHolder(); |
401 ElementBuilder builder = _makeBuilder(holder); | 403 ElementBuilder builder = _makeBuilder(holder); |
402 String aliasName = "F"; | 404 String aliasName = "F"; |
403 String parameterName = "E"; | 405 String parameterName = "E"; |
404 FunctionTypeAlias aliasNode = AstFactory.typeAlias( | 406 FunctionTypeAlias aliasNode = AstTestFactory.typeAlias(null, aliasName, |
405 null, aliasName, AstFactory.typeParameterList([parameterName]), null); | 407 AstTestFactory.typeParameterList([parameterName]), null); |
406 aliasNode.documentationComment = AstFactory.documentationComment( | 408 aliasNode.documentationComment = AstTestFactory.documentationComment( |
407 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 409 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
408 aliasNode.endToken.offset = 80; | 410 aliasNode.endToken.offset = 80; |
409 aliasNode.accept(builder); | 411 aliasNode.accept(builder); |
410 | 412 |
411 List<FunctionTypeAliasElement> aliases = holder.typeAliases; | 413 List<FunctionTypeAliasElement> aliases = holder.typeAliases; |
412 expect(aliases, hasLength(1)); | 414 expect(aliases, hasLength(1)); |
413 FunctionTypeAliasElement alias = aliases[0]; | 415 FunctionTypeAliasElement alias = aliases[0]; |
414 expect(alias, isNotNull); | 416 expect(alias, isNotNull); |
415 assertHasCodeRange(alias, 50, 31); | 417 assertHasCodeRange(alias, 50, 31); |
416 expect(alias.documentationComment, '/// aaa'); | 418 expect(alias.documentationComment, '/// aaa'); |
417 expect(alias.name, aliasName); | 419 expect(alias.name, aliasName); |
418 expect(alias.parameters, hasLength(0)); | 420 expect(alias.parameters, hasLength(0)); |
419 List<TypeParameterElement> typeParameters = alias.typeParameters; | 421 List<TypeParameterElement> typeParameters = alias.typeParameters; |
420 expect(typeParameters, hasLength(1)); | 422 expect(typeParameters, hasLength(1)); |
421 TypeParameterElement typeParameter = typeParameters[0]; | 423 TypeParameterElement typeParameter = typeParameters[0]; |
422 expect(typeParameter, isNotNull); | 424 expect(typeParameter, isNotNull); |
423 expect(typeParameter.name, parameterName); | 425 expect(typeParameter.name, parameterName); |
424 } | 426 } |
425 | 427 |
426 void test_visitFunctionTypedFormalParameter() { | 428 void test_visitFunctionTypedFormalParameter() { |
427 ElementHolder holder = new ElementHolder(); | 429 ElementHolder holder = new ElementHolder(); |
428 ElementBuilder builder = _makeBuilder(holder); | 430 ElementBuilder builder = _makeBuilder(holder); |
429 String parameterName = "p"; | 431 String parameterName = "p"; |
430 FunctionTypedFormalParameter formalParameter = | 432 FunctionTypedFormalParameter formalParameter = |
431 AstFactory.functionTypedFormalParameter(null, parameterName); | 433 AstTestFactory.functionTypedFormalParameter(null, parameterName); |
432 _useParameterInMethod(formalParameter, 100, 110); | 434 _useParameterInMethod(formalParameter, 100, 110); |
433 formalParameter.accept(builder); | 435 formalParameter.accept(builder); |
434 List<ParameterElement> parameters = holder.parameters; | 436 List<ParameterElement> parameters = holder.parameters; |
435 expect(parameters, hasLength(1)); | 437 expect(parameters, hasLength(1)); |
436 ParameterElement parameter = parameters[0]; | 438 ParameterElement parameter = parameters[0]; |
437 expect(parameter, isNotNull); | 439 expect(parameter, isNotNull); |
438 expect(parameter.name, parameterName); | 440 expect(parameter.name, parameterName); |
439 expect(parameter.initializer, isNull); | 441 expect(parameter.initializer, isNull); |
440 expect(parameter.isConst, isFalse); | 442 expect(parameter.isConst, isFalse); |
441 expect(parameter.isFinal, isFalse); | 443 expect(parameter.isFinal, isFalse); |
442 expect(parameter.isSynthetic, isFalse); | 444 expect(parameter.isSynthetic, isFalse); |
443 expect(parameter.parameterKind, ParameterKind.REQUIRED); | 445 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
444 _assertVisibleRange(parameter, 100, 110); | 446 _assertVisibleRange(parameter, 100, 110); |
445 } | 447 } |
446 | 448 |
447 void test_visitFunctionTypedFormalParameter_withTypeParameters() { | 449 void test_visitFunctionTypedFormalParameter_withTypeParameters() { |
448 ElementHolder holder = new ElementHolder(); | 450 ElementHolder holder = new ElementHolder(); |
449 ElementBuilder builder = _makeBuilder(holder); | 451 ElementBuilder builder = _makeBuilder(holder); |
450 String parameterName = "p"; | 452 String parameterName = "p"; |
451 FunctionTypedFormalParameter formalParameter = | 453 FunctionTypedFormalParameter formalParameter = |
452 AstFactory.functionTypedFormalParameter(null, parameterName); | 454 AstTestFactory.functionTypedFormalParameter(null, parameterName); |
453 formalParameter.typeParameters = AstFactory.typeParameterList(['F']); | 455 formalParameter.typeParameters = AstTestFactory.typeParameterList(['F']); |
454 _useParameterInMethod(formalParameter, 100, 110); | 456 _useParameterInMethod(formalParameter, 100, 110); |
455 formalParameter.accept(builder); | 457 formalParameter.accept(builder); |
456 List<ParameterElement> parameters = holder.parameters; | 458 List<ParameterElement> parameters = holder.parameters; |
457 expect(parameters, hasLength(1)); | 459 expect(parameters, hasLength(1)); |
458 ParameterElement parameter = parameters[0]; | 460 ParameterElement parameter = parameters[0]; |
459 expect(parameter, isNotNull); | 461 expect(parameter, isNotNull); |
460 expect(parameter.name, parameterName); | 462 expect(parameter.name, parameterName); |
461 expect(parameter.initializer, isNull); | 463 expect(parameter.initializer, isNull); |
462 expect(parameter.isConst, isFalse); | 464 expect(parameter.isConst, isFalse); |
463 expect(parameter.isFinal, isFalse); | 465 expect(parameter.isFinal, isFalse); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 expect(labels, hasLength(1)); | 518 expect(labels, hasLength(1)); |
517 LabelElement label = labels[0]; | 519 LabelElement label = labels[0]; |
518 expect(label, isNotNull); | 520 expect(label, isNotNull); |
519 expect(label.name, labelName); | 521 expect(label.name, labelName); |
520 } | 522 } |
521 | 523 |
522 void test_visitNamedFormalParameter() { | 524 void test_visitNamedFormalParameter() { |
523 ElementHolder holder = new ElementHolder(); | 525 ElementHolder holder = new ElementHolder(); |
524 ElementBuilder builder = _makeBuilder(holder); | 526 ElementBuilder builder = _makeBuilder(holder); |
525 String parameterName = "p"; | 527 String parameterName = "p"; |
526 DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter( | 528 DefaultFormalParameter formalParameter = |
527 AstFactory.simpleFormalParameter3(parameterName), | 529 AstTestFactory.namedFormalParameter( |
528 AstFactory.identifier3("42")); | 530 AstTestFactory.simpleFormalParameter3(parameterName), |
| 531 AstTestFactory.identifier3("42")); |
529 _useParameterInMethod(formalParameter, 100, 110); | 532 _useParameterInMethod(formalParameter, 100, 110); |
530 formalParameter.beginToken.offset = 50; | 533 formalParameter.beginToken.offset = 50; |
531 formalParameter.endToken.offset = 80; | 534 formalParameter.endToken.offset = 80; |
532 formalParameter.accept(builder); | 535 formalParameter.accept(builder); |
533 List<ParameterElement> parameters = holder.parameters; | 536 List<ParameterElement> parameters = holder.parameters; |
534 expect(parameters, hasLength(1)); | 537 expect(parameters, hasLength(1)); |
535 ParameterElement parameter = parameters[0]; | 538 ParameterElement parameter = parameters[0]; |
536 expect(parameter, isNotNull); | 539 expect(parameter, isNotNull); |
537 assertHasCodeRange(parameter, 50, 32); | 540 assertHasCodeRange(parameter, 50, 32); |
538 expect(parameter.name, parameterName); | 541 expect(parameter.name, parameterName); |
539 expect(parameter.isConst, isFalse); | 542 expect(parameter.isConst, isFalse); |
540 expect(parameter.isFinal, isFalse); | 543 expect(parameter.isFinal, isFalse); |
541 expect(parameter.isSynthetic, isFalse); | 544 expect(parameter.isSynthetic, isFalse); |
542 expect(parameter.parameterKind, ParameterKind.NAMED); | 545 expect(parameter.parameterKind, ParameterKind.NAMED); |
543 _assertVisibleRange(parameter, 100, 110); | 546 _assertVisibleRange(parameter, 100, 110); |
544 expect(parameter.defaultValueCode, "42"); | 547 expect(parameter.defaultValueCode, "42"); |
545 FunctionElement initializer = parameter.initializer; | 548 FunctionElement initializer = parameter.initializer; |
546 expect(initializer, isNotNull); | 549 expect(initializer, isNotNull); |
547 expect(initializer.isSynthetic, isTrue); | 550 expect(initializer.isSynthetic, isTrue); |
548 expect(initializer.hasImplicitReturnType, isTrue); | 551 expect(initializer.hasImplicitReturnType, isTrue); |
549 } | 552 } |
550 | 553 |
551 void test_visitSimpleFormalParameter_noType() { | 554 void test_visitSimpleFormalParameter_noType() { |
552 // p | 555 // p |
553 ElementHolder holder = new ElementHolder(); | 556 ElementHolder holder = new ElementHolder(); |
554 ElementBuilder builder = _makeBuilder(holder); | 557 ElementBuilder builder = _makeBuilder(holder); |
555 String parameterName = "p"; | 558 String parameterName = "p"; |
556 SimpleFormalParameter formalParameter = | 559 SimpleFormalParameter formalParameter = |
557 AstFactory.simpleFormalParameter3(parameterName); | 560 AstTestFactory.simpleFormalParameter3(parameterName); |
558 _useParameterInMethod(formalParameter, 100, 110); | 561 _useParameterInMethod(formalParameter, 100, 110); |
559 formalParameter.accept(builder); | 562 formalParameter.accept(builder); |
560 List<ParameterElement> parameters = holder.parameters; | 563 List<ParameterElement> parameters = holder.parameters; |
561 expect(parameters, hasLength(1)); | 564 expect(parameters, hasLength(1)); |
562 ParameterElement parameter = parameters[0]; | 565 ParameterElement parameter = parameters[0]; |
563 expect(parameter, isNotNull); | 566 expect(parameter, isNotNull); |
564 expect(parameter.hasImplicitType, isTrue); | 567 expect(parameter.hasImplicitType, isTrue); |
565 expect(parameter.initializer, isNull); | 568 expect(parameter.initializer, isNull); |
566 expect(parameter.isConst, isFalse); | 569 expect(parameter.isConst, isFalse); |
567 expect(parameter.isFinal, isFalse); | 570 expect(parameter.isFinal, isFalse); |
568 expect(parameter.isSynthetic, isFalse); | 571 expect(parameter.isSynthetic, isFalse); |
569 expect(parameter.name, parameterName); | 572 expect(parameter.name, parameterName); |
570 expect(parameter.parameterKind, ParameterKind.REQUIRED); | 573 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
571 _assertVisibleRange(parameter, 100, 110); | 574 _assertVisibleRange(parameter, 100, 110); |
572 } | 575 } |
573 | 576 |
574 void test_visitSimpleFormalParameter_type() { | 577 void test_visitSimpleFormalParameter_type() { |
575 // T p | 578 // T p |
576 ElementHolder holder = new ElementHolder(); | 579 ElementHolder holder = new ElementHolder(); |
577 ElementBuilder builder = _makeBuilder(holder); | 580 ElementBuilder builder = _makeBuilder(holder); |
578 String parameterName = "p"; | 581 String parameterName = "p"; |
579 SimpleFormalParameter formalParameter = AstFactory.simpleFormalParameter4( | 582 SimpleFormalParameter formalParameter = AstTestFactory |
580 AstFactory.typeName4('T'), parameterName); | 583 .simpleFormalParameter4(AstTestFactory.typeName4('T'), parameterName); |
581 _useParameterInMethod(formalParameter, 100, 110); | 584 _useParameterInMethod(formalParameter, 100, 110); |
582 formalParameter.accept(builder); | 585 formalParameter.accept(builder); |
583 List<ParameterElement> parameters = holder.parameters; | 586 List<ParameterElement> parameters = holder.parameters; |
584 expect(parameters, hasLength(1)); | 587 expect(parameters, hasLength(1)); |
585 ParameterElement parameter = parameters[0]; | 588 ParameterElement parameter = parameters[0]; |
586 expect(parameter, isNotNull); | 589 expect(parameter, isNotNull); |
587 expect(parameter.hasImplicitType, isFalse); | 590 expect(parameter.hasImplicitType, isFalse); |
588 expect(parameter.initializer, isNull); | 591 expect(parameter.initializer, isNull); |
589 expect(parameter.isConst, isFalse); | 592 expect(parameter.isConst, isFalse); |
590 expect(parameter.isFinal, isFalse); | 593 expect(parameter.isFinal, isFalse); |
(...skipping 19 matching lines...) Expand all Loading... |
610 _assertVisibleRange(variableElement, 14, 28); | 613 _assertVisibleRange(variableElement, 14, 28); |
611 } | 614 } |
612 | 615 |
613 void test_visitVariableDeclaration_inForEachStatement() { | 616 void test_visitVariableDeclaration_inForEachStatement() { |
614 ElementHolder holder = new ElementHolder(); | 617 ElementHolder holder = new ElementHolder(); |
615 ElementBuilder builder = _makeBuilder(holder); | 618 ElementBuilder builder = _makeBuilder(holder); |
616 // | 619 // |
617 // m() { for (var v in []) } | 620 // m() { for (var v in []) } |
618 // | 621 // |
619 String variableName = "v"; | 622 String variableName = "v"; |
620 Statement statement = AstFactory.forEachStatement( | 623 Statement statement = AstTestFactory.forEachStatement( |
621 AstFactory.declaredIdentifier3('v'), | 624 AstTestFactory.declaredIdentifier3('v'), |
622 AstFactory.listLiteral(), | 625 AstTestFactory.listLiteral(), |
623 AstFactory.block()); | 626 AstTestFactory.block()); |
624 _setNodeSourceRange(statement, 100, 110); | 627 _setNodeSourceRange(statement, 100, 110); |
625 MethodDeclaration method = AstFactory.methodDeclaration2( | 628 MethodDeclaration method = AstTestFactory.methodDeclaration2( |
626 null, | 629 null, |
627 null, | 630 null, |
628 null, | 631 null, |
629 null, | 632 null, |
630 AstFactory.identifier3("m"), | 633 AstTestFactory.identifier3("m"), |
631 AstFactory.formalParameterList(), | 634 AstTestFactory.formalParameterList(), |
632 AstFactory.blockFunctionBody2([statement])); | 635 AstTestFactory.blockFunctionBody2([statement])); |
633 _setBlockBodySourceRange(method.body, 200, 220); | 636 _setBlockBodySourceRange(method.body, 200, 220); |
634 method.accept(builder); | 637 method.accept(builder); |
635 | 638 |
636 List<MethodElement> methods = holder.methods; | 639 List<MethodElement> methods = holder.methods; |
637 expect(methods, hasLength(1)); | 640 expect(methods, hasLength(1)); |
638 List<LocalVariableElement> variableElements = methods[0].localVariables; | 641 List<LocalVariableElement> variableElements = methods[0].localVariables; |
639 expect(variableElements, hasLength(1)); | 642 expect(variableElements, hasLength(1)); |
640 LocalVariableElement variableElement = variableElements[0]; | 643 LocalVariableElement variableElement = variableElements[0]; |
641 expect(variableElement.name, variableName); | 644 expect(variableElement.name, variableName); |
642 _assertVisibleRange(variableElement, 100, 110); | 645 _assertVisibleRange(variableElement, 100, 110); |
643 } | 646 } |
644 | 647 |
645 void test_visitVariableDeclaration_inForStatement() { | 648 void test_visitVariableDeclaration_inForStatement() { |
646 ElementHolder holder = new ElementHolder(); | 649 ElementHolder holder = new ElementHolder(); |
647 ElementBuilder builder = _makeBuilder(holder); | 650 ElementBuilder builder = _makeBuilder(holder); |
648 // | 651 // |
649 // m() { for (T v;;) } | 652 // m() { for (T v;;) } |
650 // | 653 // |
651 String variableName = "v"; | 654 String variableName = "v"; |
652 ForStatement statement = AstFactory.forStatement2( | 655 ForStatement statement = AstTestFactory.forStatement2( |
653 AstFactory.variableDeclarationList(null, AstFactory.typeName4('T'), | 656 AstTestFactory.variableDeclarationList( |
654 [AstFactory.variableDeclaration('v')]), | 657 null, |
| 658 AstTestFactory.typeName4('T'), |
| 659 [AstTestFactory.variableDeclaration('v')]), |
655 null, | 660 null, |
656 null, | 661 null, |
657 AstFactory.block()); | 662 AstTestFactory.block()); |
658 _setNodeSourceRange(statement, 100, 110); | 663 _setNodeSourceRange(statement, 100, 110); |
659 MethodDeclaration method = AstFactory.methodDeclaration2( | 664 MethodDeclaration method = AstTestFactory.methodDeclaration2( |
660 null, | 665 null, |
661 null, | 666 null, |
662 null, | 667 null, |
663 null, | 668 null, |
664 AstFactory.identifier3("m"), | 669 AstTestFactory.identifier3("m"), |
665 AstFactory.formalParameterList(), | 670 AstTestFactory.formalParameterList(), |
666 AstFactory.blockFunctionBody2([statement])); | 671 AstTestFactory.blockFunctionBody2([statement])); |
667 _setBlockBodySourceRange(method.body, 200, 220); | 672 _setBlockBodySourceRange(method.body, 200, 220); |
668 method.accept(builder); | 673 method.accept(builder); |
669 | 674 |
670 List<MethodElement> methods = holder.methods; | 675 List<MethodElement> methods = holder.methods; |
671 expect(methods, hasLength(1)); | 676 expect(methods, hasLength(1)); |
672 List<LocalVariableElement> variableElements = methods[0].localVariables; | 677 List<LocalVariableElement> variableElements = methods[0].localVariables; |
673 expect(variableElements, hasLength(1)); | 678 expect(variableElements, hasLength(1)); |
674 LocalVariableElement variableElement = variableElements[0]; | 679 LocalVariableElement variableElement = variableElements[0]; |
675 expect(variableElement.name, variableName); | 680 expect(variableElement.name, variableName); |
676 _assertVisibleRange(variableElement, 100, 110); | 681 _assertVisibleRange(variableElement, 100, 110); |
677 } | 682 } |
678 | 683 |
679 void test_visitVariableDeclaration_inMethod() { | 684 void test_visitVariableDeclaration_inMethod() { |
680 ElementHolder holder = new ElementHolder(); | 685 ElementHolder holder = new ElementHolder(); |
681 ElementBuilder builder = _makeBuilder(holder); | 686 ElementBuilder builder = _makeBuilder(holder); |
682 // | 687 // |
683 // m() {T v;} | 688 // m() {T v;} |
684 // | 689 // |
685 String variableName = "v"; | 690 String variableName = "v"; |
686 VariableDeclaration variable = | 691 VariableDeclaration variable = |
687 AstFactory.variableDeclaration2(variableName, null); | 692 AstTestFactory.variableDeclaration2(variableName, null); |
688 Statement statement = AstFactory.variableDeclarationStatement( | 693 Statement statement = AstTestFactory.variableDeclarationStatement( |
689 null, AstFactory.typeName4('T'), [variable]); | 694 null, AstTestFactory.typeName4('T'), [variable]); |
690 MethodDeclaration method = AstFactory.methodDeclaration2( | 695 MethodDeclaration method = AstTestFactory.methodDeclaration2( |
691 null, | 696 null, |
692 null, | 697 null, |
693 null, | 698 null, |
694 null, | 699 null, |
695 AstFactory.identifier3("m"), | 700 AstTestFactory.identifier3("m"), |
696 AstFactory.formalParameterList(), | 701 AstTestFactory.formalParameterList(), |
697 AstFactory.blockFunctionBody2([statement])); | 702 AstTestFactory.blockFunctionBody2([statement])); |
698 _setBlockBodySourceRange(method.body, 100, 110); | 703 _setBlockBodySourceRange(method.body, 100, 110); |
699 method.accept(builder); | 704 method.accept(builder); |
700 | 705 |
701 List<MethodElement> methods = holder.methods; | 706 List<MethodElement> methods = holder.methods; |
702 expect(methods, hasLength(1)); | 707 expect(methods, hasLength(1)); |
703 List<LocalVariableElement> variableElements = methods[0].localVariables; | 708 List<LocalVariableElement> variableElements = methods[0].localVariables; |
704 expect(variableElements, hasLength(1)); | 709 expect(variableElements, hasLength(1)); |
705 LocalVariableElement variableElement = variableElements[0]; | 710 LocalVariableElement variableElement = variableElements[0]; |
706 expect(variableElement.hasImplicitType, isFalse); | 711 expect(variableElement.hasImplicitType, isFalse); |
707 expect(variableElement.name, variableName); | 712 expect(variableElement.name, variableName); |
708 _assertVisibleRange(variableElement, 100, 110); | 713 _assertVisibleRange(variableElement, 100, 110); |
709 } | 714 } |
710 | 715 |
711 void test_visitVariableDeclaration_localNestedInFunction() { | 716 void test_visitVariableDeclaration_localNestedInFunction() { |
712 ElementHolder holder = new ElementHolder(); | 717 ElementHolder holder = new ElementHolder(); |
713 ElementBuilder builder = _makeBuilder(holder); | 718 ElementBuilder builder = _makeBuilder(holder); |
714 // | 719 // |
715 // var f = () {var v;}; | 720 // var f = () {var v;}; |
716 // | 721 // |
717 String variableName = "v"; | 722 String variableName = "v"; |
718 VariableDeclaration variable = | 723 VariableDeclaration variable = |
719 AstFactory.variableDeclaration2(variableName, null); | 724 AstTestFactory.variableDeclaration2(variableName, null); |
720 Statement statement = | 725 Statement statement = |
721 AstFactory.variableDeclarationStatement2(null, [variable]); | 726 AstTestFactory.variableDeclarationStatement2(null, [variable]); |
722 Expression initializer = AstFactory.functionExpression2( | 727 Expression initializer = AstTestFactory.functionExpression2( |
723 AstFactory.formalParameterList(), | 728 AstTestFactory.formalParameterList(), |
724 AstFactory.blockFunctionBody2([statement])); | 729 AstTestFactory.blockFunctionBody2([statement])); |
725 String fieldName = "f"; | 730 String fieldName = "f"; |
726 VariableDeclaration field = | 731 VariableDeclaration field = |
727 AstFactory.variableDeclaration2(fieldName, initializer); | 732 AstTestFactory.variableDeclaration2(fieldName, initializer); |
728 FieldDeclaration fieldDeclaration = | 733 FieldDeclaration fieldDeclaration = |
729 AstFactory.fieldDeclaration2(false, null, [field]); | 734 AstTestFactory.fieldDeclaration2(false, null, [field]); |
730 fieldDeclaration.accept(builder); | 735 fieldDeclaration.accept(builder); |
731 | 736 |
732 List<FieldElement> variables = holder.fields; | 737 List<FieldElement> variables = holder.fields; |
733 expect(variables, hasLength(1)); | 738 expect(variables, hasLength(1)); |
734 FieldElement fieldElement = variables[0]; | 739 FieldElement fieldElement = variables[0]; |
735 expect(fieldElement, isNotNull); | 740 expect(fieldElement, isNotNull); |
736 FunctionElement initializerElement = fieldElement.initializer; | 741 FunctionElement initializerElement = fieldElement.initializer; |
737 expect(initializerElement, isNotNull); | 742 expect(initializerElement, isNotNull); |
738 expect(initializerElement.hasImplicitReturnType, isTrue); | 743 expect(initializerElement.hasImplicitReturnType, isTrue); |
739 List<FunctionElement> functionElements = initializerElement.functions; | 744 List<FunctionElement> functionElements = initializerElement.functions; |
740 expect(functionElements, hasLength(1)); | 745 expect(functionElements, hasLength(1)); |
741 List<LocalVariableElement> variableElements = | 746 List<LocalVariableElement> variableElements = |
742 functionElements[0].localVariables; | 747 functionElements[0].localVariables; |
743 expect(variableElements, hasLength(1)); | 748 expect(variableElements, hasLength(1)); |
744 LocalVariableElement variableElement = variableElements[0]; | 749 LocalVariableElement variableElement = variableElements[0]; |
745 expect(variableElement.hasImplicitType, isTrue); | 750 expect(variableElement.hasImplicitType, isTrue); |
746 expect(variableElement.isConst, isFalse); | 751 expect(variableElement.isConst, isFalse); |
747 expect(variableElement.isFinal, isFalse); | 752 expect(variableElement.isFinal, isFalse); |
748 expect(variableElement.isSynthetic, isFalse); | 753 expect(variableElement.isSynthetic, isFalse); |
749 expect(variableElement.name, variableName); | 754 expect(variableElement.name, variableName); |
750 } | 755 } |
751 | 756 |
752 void test_visitVariableDeclaration_noInitializer() { | 757 void test_visitVariableDeclaration_noInitializer() { |
753 // var v; | 758 // var v; |
754 ElementHolder holder = new ElementHolder(); | 759 ElementHolder holder = new ElementHolder(); |
755 ElementBuilder builder = _makeBuilder(holder); | 760 ElementBuilder builder = _makeBuilder(holder); |
756 String variableName = "v"; | 761 String variableName = "v"; |
757 VariableDeclaration variableDeclaration = | 762 VariableDeclaration variableDeclaration = |
758 AstFactory.variableDeclaration2(variableName, null); | 763 AstTestFactory.variableDeclaration2(variableName, null); |
759 AstFactory.variableDeclarationList2(null, [variableDeclaration]); | 764 AstTestFactory.variableDeclarationList2(null, [variableDeclaration]); |
760 variableDeclaration.accept(builder); | 765 variableDeclaration.accept(builder); |
761 | 766 |
762 List<TopLevelVariableElement> variables = holder.topLevelVariables; | 767 List<TopLevelVariableElement> variables = holder.topLevelVariables; |
763 expect(variables, hasLength(1)); | 768 expect(variables, hasLength(1)); |
764 TopLevelVariableElement variable = variables[0]; | 769 TopLevelVariableElement variable = variables[0]; |
765 expect(variable, isNotNull); | 770 expect(variable, isNotNull); |
766 expect(variable.hasImplicitType, isTrue); | 771 expect(variable.hasImplicitType, isTrue); |
767 expect(variable.initializer, isNull); | 772 expect(variable.initializer, isNull); |
768 expect(variable.name, variableName); | 773 expect(variable.name, variableName); |
769 expect(variable.isConst, isFalse); | 774 expect(variable.isConst, isFalse); |
770 expect(variable.isFinal, isFalse); | 775 expect(variable.isFinal, isFalse); |
771 expect(variable.isSynthetic, isFalse); | 776 expect(variable.isSynthetic, isFalse); |
772 expect(variable.getter, isNotNull); | 777 expect(variable.getter, isNotNull); |
773 expect(variable.setter, isNotNull); | 778 expect(variable.setter, isNotNull); |
774 } | 779 } |
775 | 780 |
776 void test_visitVariableDeclaration_top() { | 781 void test_visitVariableDeclaration_top() { |
777 // final a, b; | 782 // final a, b; |
778 ElementHolder holder = new ElementHolder(); | 783 ElementHolder holder = new ElementHolder(); |
779 ElementBuilder builder = _makeBuilder(holder); | 784 ElementBuilder builder = _makeBuilder(holder); |
780 VariableDeclaration variableDeclaration1 = | 785 VariableDeclaration variableDeclaration1 = |
781 AstFactory.variableDeclaration('a'); | 786 AstTestFactory.variableDeclaration('a'); |
782 VariableDeclaration variableDeclaration2 = | 787 VariableDeclaration variableDeclaration2 = |
783 AstFactory.variableDeclaration('b'); | 788 AstTestFactory.variableDeclaration('b'); |
784 TopLevelVariableDeclaration topLevelVariableDeclaration = AstFactory | 789 TopLevelVariableDeclaration topLevelVariableDeclaration = AstTestFactory |
785 .topLevelVariableDeclaration( | 790 .topLevelVariableDeclaration( |
786 Keyword.FINAL, null, [variableDeclaration1, variableDeclaration2]); | 791 Keyword.FINAL, null, [variableDeclaration1, variableDeclaration2]); |
787 topLevelVariableDeclaration.documentationComment = AstFactory | 792 topLevelVariableDeclaration.documentationComment = AstTestFactory |
788 .documentationComment( | 793 .documentationComment( |
789 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 794 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
790 | 795 |
791 topLevelVariableDeclaration.accept(builder); | 796 topLevelVariableDeclaration.accept(builder); |
792 List<TopLevelVariableElement> variables = holder.topLevelVariables; | 797 List<TopLevelVariableElement> variables = holder.topLevelVariables; |
793 expect(variables, hasLength(2)); | 798 expect(variables, hasLength(2)); |
794 | 799 |
795 TopLevelVariableElement variable1 = variables[0]; | 800 TopLevelVariableElement variable1 = variables[0]; |
796 expect(variable1, isNotNull); | 801 expect(variable1, isNotNull); |
797 expect(variable1.documentationComment, '/// aaa'); | 802 expect(variable1.documentationComment, '/// aaa'); |
798 | 803 |
799 TopLevelVariableElement variable2 = variables[1]; | 804 TopLevelVariableElement variable2 = variables[1]; |
800 expect(variable2, isNotNull); | 805 expect(variable2, isNotNull); |
801 expect(variable2.documentationComment, '/// aaa'); | 806 expect(variable2.documentationComment, '/// aaa'); |
802 } | 807 } |
803 | 808 |
804 void test_visitVariableDeclaration_top_const_hasInitializer() { | 809 void test_visitVariableDeclaration_top_const_hasInitializer() { |
805 // const v = 42; | 810 // const v = 42; |
806 ElementHolder holder = new ElementHolder(); | 811 ElementHolder holder = new ElementHolder(); |
807 ElementBuilder builder = _makeBuilder(holder); | 812 ElementBuilder builder = _makeBuilder(holder); |
808 String variableName = "v"; | 813 String variableName = "v"; |
809 VariableDeclaration variableDeclaration = | 814 VariableDeclaration variableDeclaration = AstTestFactory |
810 AstFactory.variableDeclaration2(variableName, AstFactory.integer(42)); | 815 .variableDeclaration2(variableName, AstTestFactory.integer(42)); |
811 AstFactory.variableDeclarationList2(Keyword.CONST, [variableDeclaration]); | 816 AstTestFactory |
| 817 .variableDeclarationList2(Keyword.CONST, [variableDeclaration]); |
812 variableDeclaration.accept(builder); | 818 variableDeclaration.accept(builder); |
813 | 819 |
814 List<TopLevelVariableElement> variables = holder.topLevelVariables; | 820 List<TopLevelVariableElement> variables = holder.topLevelVariables; |
815 expect(variables, hasLength(1)); | 821 expect(variables, hasLength(1)); |
816 TopLevelVariableElement variable = variables[0]; | 822 TopLevelVariableElement variable = variables[0]; |
817 expect(variable, new isInstanceOf<ConstTopLevelVariableElementImpl>()); | 823 expect(variable, new isInstanceOf<ConstTopLevelVariableElementImpl>()); |
818 expect(variable.initializer, isNotNull); | 824 expect(variable.initializer, isNotNull); |
819 expect(variable.initializer.type, isNotNull); | 825 expect(variable.initializer.type, isNotNull); |
820 expect(variable.initializer.hasImplicitReturnType, isTrue); | 826 expect(variable.initializer.hasImplicitReturnType, isTrue); |
821 expect(variable.name, variableName); | 827 expect(variable.name, variableName); |
822 expect(variable.hasImplicitType, isTrue); | 828 expect(variable.hasImplicitType, isTrue); |
823 expect(variable.isConst, isTrue); | 829 expect(variable.isConst, isTrue); |
824 expect(variable.isFinal, isFalse); | 830 expect(variable.isFinal, isFalse); |
825 expect(variable.isSynthetic, isFalse); | 831 expect(variable.isSynthetic, isFalse); |
826 expect(variable.getter, isNotNull); | 832 expect(variable.getter, isNotNull); |
827 expect(variable.setter, isNull); | 833 expect(variable.setter, isNull); |
828 } | 834 } |
829 | 835 |
830 void test_visitVariableDeclaration_top_final() { | 836 void test_visitVariableDeclaration_top_final() { |
831 // final v; | 837 // final v; |
832 ElementHolder holder = new ElementHolder(); | 838 ElementHolder holder = new ElementHolder(); |
833 ElementBuilder builder = _makeBuilder(holder); | 839 ElementBuilder builder = _makeBuilder(holder); |
834 String variableName = "v"; | 840 String variableName = "v"; |
835 VariableDeclaration variableDeclaration = | 841 VariableDeclaration variableDeclaration = |
836 AstFactory.variableDeclaration2(variableName, null); | 842 AstTestFactory.variableDeclaration2(variableName, null); |
837 AstFactory.variableDeclarationList2(Keyword.FINAL, [variableDeclaration]); | 843 AstTestFactory |
| 844 .variableDeclarationList2(Keyword.FINAL, [variableDeclaration]); |
838 variableDeclaration.accept(builder); | 845 variableDeclaration.accept(builder); |
839 List<TopLevelVariableElement> variables = holder.topLevelVariables; | 846 List<TopLevelVariableElement> variables = holder.topLevelVariables; |
840 expect(variables, hasLength(1)); | 847 expect(variables, hasLength(1)); |
841 TopLevelVariableElement variable = variables[0]; | 848 TopLevelVariableElement variable = variables[0]; |
842 expect(variable, isNotNull); | 849 expect(variable, isNotNull); |
843 expect(variable.hasImplicitType, isTrue); | 850 expect(variable.hasImplicitType, isTrue); |
844 expect(variable.initializer, isNull); | 851 expect(variable.initializer, isNull); |
845 expect(variable.name, variableName); | 852 expect(variable.name, variableName); |
846 expect(variable.isConst, isFalse); | 853 expect(variable.isConst, isFalse); |
847 expect(variable.isFinal, isTrue); | 854 expect(variable.isFinal, isTrue); |
(...skipping 10 matching lines...) Expand all Loading... |
858 } | 865 } |
859 | 866 |
860 void _setNodeSourceRange(AstNode node, int offset, int end) { | 867 void _setNodeSourceRange(AstNode node, int offset, int end) { |
861 node.beginToken.offset = offset; | 868 node.beginToken.offset = offset; |
862 Token endToken = node.endToken; | 869 Token endToken = node.endToken; |
863 endToken.offset = end - endToken.length; | 870 endToken.offset = end - endToken.length; |
864 } | 871 } |
865 | 872 |
866 void _useParameterInMethod( | 873 void _useParameterInMethod( |
867 FormalParameter formalParameter, int blockOffset, int blockEnd) { | 874 FormalParameter formalParameter, int blockOffset, int blockEnd) { |
868 Block block = AstFactory.block(); | 875 Block block = AstTestFactory.block(); |
869 block.leftBracket.offset = blockOffset; | 876 block.leftBracket.offset = blockOffset; |
870 block.rightBracket.offset = blockEnd - 1; | 877 block.rightBracket.offset = blockEnd - 1; |
871 BlockFunctionBody body = AstFactory.blockFunctionBody(block); | 878 BlockFunctionBody body = AstTestFactory.blockFunctionBody(block); |
872 AstFactory.methodDeclaration2( | 879 AstTestFactory.methodDeclaration2( |
873 null, | 880 null, |
874 null, | 881 null, |
875 null, | 882 null, |
876 null, | 883 null, |
877 AstFactory.identifier3("main"), | 884 AstTestFactory.identifier3("main"), |
878 AstFactory.formalParameterList([formalParameter]), | 885 AstTestFactory.formalParameterList([formalParameter]), |
879 body); | 886 body); |
880 } | 887 } |
881 } | 888 } |
882 | 889 |
883 @reflectiveTest | 890 @reflectiveTest |
884 class LocalElementBuilderTest extends _BaseTest { | 891 class LocalElementBuilderTest extends _BaseTest { |
885 @override | 892 @override |
886 AstVisitor createElementBuilder(ElementHolder holder) { | 893 AstVisitor createElementBuilder(ElementHolder holder) { |
887 return new LocalElementBuilder(holder, compilationUnitElement); | 894 return new LocalElementBuilder(holder, compilationUnitElement); |
888 } | 895 } |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1255 ElementHolder holder = buildElementsForText(code); | 1262 ElementHolder holder = buildElementsForText(code); |
1256 ClassElement elementC = holder.types[1]; | 1263 ClassElement elementC = holder.types[1]; |
1257 expect(elementC, isNotNull); | 1264 expect(elementC, isNotNull); |
1258 MethodElement methodM = elementC.methods[0]; | 1265 MethodElement methodM = elementC.methods[0]; |
1259 expect(methodM, isNotNull); | 1266 expect(methodM, isNotNull); |
1260 expect(methodM.functions, isEmpty); | 1267 expect(methodM.functions, isEmpty); |
1261 } | 1268 } |
1262 | 1269 |
1263 void test_visitClassDeclaration_minimal() { | 1270 void test_visitClassDeclaration_minimal() { |
1264 String className = "C"; | 1271 String className = "C"; |
1265 ClassDeclaration classDeclaration = | 1272 ClassDeclaration classDeclaration = AstTestFactory.classDeclaration( |
1266 AstFactory.classDeclaration(null, className, null, null, null, null); | 1273 null, className, null, null, null, null); |
1267 classDeclaration.documentationComment = AstFactory.documentationComment( | 1274 classDeclaration.documentationComment = AstTestFactory.documentationComment( |
1268 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1275 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1269 classDeclaration.endToken.offset = 80; | 1276 classDeclaration.endToken.offset = 80; |
1270 | 1277 |
1271 ElementHolder holder = buildElementsForAst(classDeclaration); | 1278 ElementHolder holder = buildElementsForAst(classDeclaration); |
1272 List<ClassElement> types = holder.types; | 1279 List<ClassElement> types = holder.types; |
1273 expect(types, hasLength(1)); | 1280 expect(types, hasLength(1)); |
1274 ClassElement type = types[0]; | 1281 ClassElement type = types[0]; |
1275 expect(type, isNotNull); | 1282 expect(type, isNotNull); |
1276 expect(type.name, className); | 1283 expect(type.name, className); |
1277 List<TypeParameterElement> typeParameters = type.typeParameters; | 1284 List<TypeParameterElement> typeParameters = type.typeParameters; |
1278 expect(typeParameters, hasLength(0)); | 1285 expect(typeParameters, hasLength(0)); |
1279 expect(type.isAbstract, isFalse); | 1286 expect(type.isAbstract, isFalse); |
1280 expect(type.isMixinApplication, isFalse); | 1287 expect(type.isMixinApplication, isFalse); |
1281 expect(type.isSynthetic, isFalse); | 1288 expect(type.isSynthetic, isFalse); |
1282 expect(type.documentationComment, '/// aaa'); | 1289 expect(type.documentationComment, '/// aaa'); |
1283 assertHasCodeRange(type, 50, 31); | 1290 assertHasCodeRange(type, 50, 31); |
1284 } | 1291 } |
1285 | 1292 |
1286 void test_visitClassDeclaration_parameterized() { | 1293 void test_visitClassDeclaration_parameterized() { |
1287 String className = "C"; | 1294 String className = "C"; |
1288 String firstVariableName = "E"; | 1295 String firstVariableName = "E"; |
1289 String secondVariableName = "F"; | 1296 String secondVariableName = "F"; |
1290 ClassDeclaration classDeclaration = AstFactory.classDeclaration( | 1297 ClassDeclaration classDeclaration = AstTestFactory.classDeclaration( |
1291 null, | 1298 null, |
1292 className, | 1299 className, |
1293 AstFactory.typeParameterList([firstVariableName, secondVariableName]), | 1300 AstTestFactory |
| 1301 .typeParameterList([firstVariableName, secondVariableName]), |
1294 null, | 1302 null, |
1295 null, | 1303 null, |
1296 null); | 1304 null); |
1297 | 1305 |
1298 ElementHolder holder = buildElementsForAst(classDeclaration); | 1306 ElementHolder holder = buildElementsForAst(classDeclaration); |
1299 List<ClassElement> types = holder.types; | 1307 List<ClassElement> types = holder.types; |
1300 expect(types, hasLength(1)); | 1308 expect(types, hasLength(1)); |
1301 ClassElement type = types[0]; | 1309 ClassElement type = types[0]; |
1302 expect(type, isNotNull); | 1310 expect(type, isNotNull); |
1303 expect(type.name, className); | 1311 expect(type.name, className); |
1304 List<TypeParameterElement> typeParameters = type.typeParameters; | 1312 List<TypeParameterElement> typeParameters = type.typeParameters; |
1305 expect(typeParameters, hasLength(2)); | 1313 expect(typeParameters, hasLength(2)); |
1306 expect(typeParameters[0].name, firstVariableName); | 1314 expect(typeParameters[0].name, firstVariableName); |
1307 expect(typeParameters[1].name, secondVariableName); | 1315 expect(typeParameters[1].name, secondVariableName); |
1308 expect(type.isAbstract, isFalse); | 1316 expect(type.isAbstract, isFalse); |
1309 expect(type.isMixinApplication, isFalse); | 1317 expect(type.isMixinApplication, isFalse); |
1310 expect(type.isSynthetic, isFalse); | 1318 expect(type.isSynthetic, isFalse); |
1311 } | 1319 } |
1312 | 1320 |
1313 void test_visitClassDeclaration_withMembers() { | 1321 void test_visitClassDeclaration_withMembers() { |
1314 String className = "C"; | 1322 String className = "C"; |
1315 String typeParameterName = "E"; | 1323 String typeParameterName = "E"; |
1316 String fieldName = "f"; | 1324 String fieldName = "f"; |
1317 String methodName = "m"; | 1325 String methodName = "m"; |
1318 ClassDeclaration classDeclaration = AstFactory.classDeclaration( | 1326 ClassDeclaration classDeclaration = AstTestFactory.classDeclaration( |
1319 null, | 1327 null, |
1320 className, | 1328 className, |
1321 AstFactory.typeParameterList([typeParameterName]), | 1329 AstTestFactory.typeParameterList([typeParameterName]), |
1322 null, | 1330 null, |
1323 null, | 1331 null, |
1324 null, [ | 1332 null, [ |
1325 AstFactory.fieldDeclaration2( | 1333 AstTestFactory.fieldDeclaration2( |
1326 false, null, [AstFactory.variableDeclaration(fieldName)]), | 1334 false, null, [AstTestFactory.variableDeclaration(fieldName)]), |
1327 AstFactory.methodDeclaration2( | 1335 AstTestFactory.methodDeclaration2( |
1328 null, | 1336 null, |
1329 null, | 1337 null, |
1330 null, | 1338 null, |
1331 null, | 1339 null, |
1332 AstFactory.identifier3(methodName), | 1340 AstTestFactory.identifier3(methodName), |
1333 AstFactory.formalParameterList(), | 1341 AstTestFactory.formalParameterList(), |
1334 AstFactory.blockFunctionBody2()) | 1342 AstTestFactory.blockFunctionBody2()) |
1335 ]); | 1343 ]); |
1336 | 1344 |
1337 ElementHolder holder = buildElementsForAst(classDeclaration); | 1345 ElementHolder holder = buildElementsForAst(classDeclaration); |
1338 List<ClassElement> types = holder.types; | 1346 List<ClassElement> types = holder.types; |
1339 expect(types, hasLength(1)); | 1347 expect(types, hasLength(1)); |
1340 ClassElement type = types[0]; | 1348 ClassElement type = types[0]; |
1341 expect(type, isNotNull); | 1349 expect(type, isNotNull); |
1342 expect(type.name, className); | 1350 expect(type.name, className); |
1343 expect(type.isAbstract, isFalse); | 1351 expect(type.isAbstract, isFalse); |
1344 expect(type.isMixinApplication, isFalse); | 1352 expect(type.isMixinApplication, isFalse); |
(...skipping 19 matching lines...) Expand all Loading... |
1364 // class B {} | 1372 // class B {} |
1365 // class M {} | 1373 // class M {} |
1366 // class C = B with M | 1374 // class C = B with M |
1367 ClassElementImpl classB = ElementFactory.classElement2('B', []); | 1375 ClassElementImpl classB = ElementFactory.classElement2('B', []); |
1368 ConstructorElementImpl constructorB = | 1376 ConstructorElementImpl constructorB = |
1369 ElementFactory.constructorElement2(classB, '', []); | 1377 ElementFactory.constructorElement2(classB, '', []); |
1370 constructorB.setModifier(Modifier.SYNTHETIC, true); | 1378 constructorB.setModifier(Modifier.SYNTHETIC, true); |
1371 classB.constructors = [constructorB]; | 1379 classB.constructors = [constructorB]; |
1372 ClassElement classM = ElementFactory.classElement2('M', []); | 1380 ClassElement classM = ElementFactory.classElement2('M', []); |
1373 WithClause withClause = | 1381 WithClause withClause = |
1374 AstFactory.withClause([AstFactory.typeName(classM, [])]); | 1382 AstTestFactory.withClause([AstTestFactory.typeName(classM, [])]); |
1375 ClassTypeAlias alias = AstFactory.classTypeAlias( | 1383 ClassTypeAlias alias = AstTestFactory.classTypeAlias( |
1376 'C', null, null, AstFactory.typeName(classB, []), withClause, null); | 1384 'C', null, null, AstTestFactory.typeName(classB, []), withClause, null); |
1377 | 1385 |
1378 ElementHolder holder = buildElementsForAst(alias); | 1386 ElementHolder holder = buildElementsForAst(alias); |
1379 List<ClassElement> types = holder.types; | 1387 List<ClassElement> types = holder.types; |
1380 expect(types, hasLength(1)); | 1388 expect(types, hasLength(1)); |
1381 ClassElement type = types[0]; | 1389 ClassElement type = types[0]; |
1382 expect(alias.element, same(type)); | 1390 expect(alias.element, same(type)); |
1383 expect(type.name, equals('C')); | 1391 expect(type.name, equals('C')); |
1384 expect(type.isAbstract, isFalse); | 1392 expect(type.isAbstract, isFalse); |
1385 expect(type.isMixinApplication, isTrue); | 1393 expect(type.isMixinApplication, isTrue); |
1386 expect(type.isSynthetic, isFalse); | 1394 expect(type.isSynthetic, isFalse); |
1387 expect(type.typeParameters, isEmpty); | 1395 expect(type.typeParameters, isEmpty); |
1388 expect(type.fields, isEmpty); | 1396 expect(type.fields, isEmpty); |
1389 expect(type.methods, isEmpty); | 1397 expect(type.methods, isEmpty); |
1390 } | 1398 } |
1391 | 1399 |
1392 void test_visitClassTypeAlias_abstract() { | 1400 void test_visitClassTypeAlias_abstract() { |
1393 // class B {} | 1401 // class B {} |
1394 // class M {} | 1402 // class M {} |
1395 // abstract class C = B with M | 1403 // abstract class C = B with M |
1396 ClassElementImpl classB = ElementFactory.classElement2('B', []); | 1404 ClassElementImpl classB = ElementFactory.classElement2('B', []); |
1397 ConstructorElementImpl constructorB = | 1405 ConstructorElementImpl constructorB = |
1398 ElementFactory.constructorElement2(classB, '', []); | 1406 ElementFactory.constructorElement2(classB, '', []); |
1399 constructorB.setModifier(Modifier.SYNTHETIC, true); | 1407 constructorB.setModifier(Modifier.SYNTHETIC, true); |
1400 classB.constructors = [constructorB]; | 1408 classB.constructors = [constructorB]; |
1401 ClassElement classM = ElementFactory.classElement2('M', []); | 1409 ClassElement classM = ElementFactory.classElement2('M', []); |
1402 WithClause withClause = | 1410 WithClause withClause = |
1403 AstFactory.withClause([AstFactory.typeName(classM, [])]); | 1411 AstTestFactory.withClause([AstTestFactory.typeName(classM, [])]); |
1404 ClassTypeAlias alias = AstFactory.classTypeAlias('C', null, | 1412 ClassTypeAlias alias = AstTestFactory.classTypeAlias( |
1405 Keyword.ABSTRACT, AstFactory.typeName(classB, []), withClause, null); | 1413 'C', |
| 1414 null, |
| 1415 Keyword.ABSTRACT, |
| 1416 AstTestFactory.typeName(classB, []), |
| 1417 withClause, |
| 1418 null); |
1406 | 1419 |
1407 ElementHolder holder = buildElementsForAst(alias); | 1420 ElementHolder holder = buildElementsForAst(alias); |
1408 List<ClassElement> types = holder.types; | 1421 List<ClassElement> types = holder.types; |
1409 expect(types, hasLength(1)); | 1422 expect(types, hasLength(1)); |
1410 ClassElement type = types[0]; | 1423 ClassElement type = types[0]; |
1411 expect(type.isAbstract, isTrue); | 1424 expect(type.isAbstract, isTrue); |
1412 expect(type.isMixinApplication, isTrue); | 1425 expect(type.isMixinApplication, isTrue); |
1413 } | 1426 } |
1414 | 1427 |
1415 void test_visitClassTypeAlias_typeParams() { | 1428 void test_visitClassTypeAlias_typeParams() { |
1416 // class B {} | 1429 // class B {} |
1417 // class M {} | 1430 // class M {} |
1418 // class C<T> = B with M | 1431 // class C<T> = B with M |
1419 ClassElementImpl classB = ElementFactory.classElement2('B', []); | 1432 ClassElementImpl classB = ElementFactory.classElement2('B', []); |
1420 ConstructorElementImpl constructorB = | 1433 ConstructorElementImpl constructorB = |
1421 ElementFactory.constructorElement2(classB, '', []); | 1434 ElementFactory.constructorElement2(classB, '', []); |
1422 constructorB.setModifier(Modifier.SYNTHETIC, true); | 1435 constructorB.setModifier(Modifier.SYNTHETIC, true); |
1423 classB.constructors = [constructorB]; | 1436 classB.constructors = [constructorB]; |
1424 ClassElementImpl classM = ElementFactory.classElement2('M', []); | 1437 ClassElementImpl classM = ElementFactory.classElement2('M', []); |
1425 WithClause withClause = | 1438 WithClause withClause = |
1426 AstFactory.withClause([AstFactory.typeName(classM, [])]); | 1439 AstTestFactory.withClause([AstTestFactory.typeName(classM, [])]); |
1427 ClassTypeAlias alias = AstFactory.classTypeAlias( | 1440 ClassTypeAlias alias = AstTestFactory.classTypeAlias( |
1428 'C', | 1441 'C', |
1429 AstFactory.typeParameterList(['T']), | 1442 AstTestFactory.typeParameterList(['T']), |
1430 null, | 1443 null, |
1431 AstFactory.typeName(classB, []), | 1444 AstTestFactory.typeName(classB, []), |
1432 withClause, | 1445 withClause, |
1433 null); | 1446 null); |
1434 | 1447 |
1435 ElementHolder holder = buildElementsForAst(alias); | 1448 ElementHolder holder = buildElementsForAst(alias); |
1436 List<ClassElement> types = holder.types; | 1449 List<ClassElement> types = holder.types; |
1437 expect(types, hasLength(1)); | 1450 expect(types, hasLength(1)); |
1438 ClassElement type = types[0]; | 1451 ClassElement type = types[0]; |
1439 expect(type.typeParameters, hasLength(1)); | 1452 expect(type.typeParameters, hasLength(1)); |
1440 expect(type.typeParameters[0].name, equals('T')); | 1453 expect(type.typeParameters[0].name, equals('T')); |
1441 } | 1454 } |
1442 | 1455 |
1443 void test_visitConstructorDeclaration_external() { | 1456 void test_visitConstructorDeclaration_external() { |
1444 String className = "A"; | 1457 String className = "A"; |
1445 ConstructorDeclaration constructorDeclaration = | 1458 ConstructorDeclaration constructorDeclaration = |
1446 AstFactory.constructorDeclaration2( | 1459 AstTestFactory.constructorDeclaration2( |
1447 null, | 1460 null, |
1448 null, | 1461 null, |
1449 AstFactory.identifier3(className), | 1462 AstTestFactory.identifier3(className), |
1450 null, | 1463 null, |
1451 AstFactory.formalParameterList(), | 1464 AstTestFactory.formalParameterList(), |
1452 null, | 1465 null, |
1453 AstFactory.blockFunctionBody2()); | 1466 AstTestFactory.blockFunctionBody2()); |
1454 constructorDeclaration.externalKeyword = | 1467 constructorDeclaration.externalKeyword = |
1455 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 1468 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
1456 | 1469 |
1457 ElementHolder holder = buildElementsForAst(constructorDeclaration); | 1470 ElementHolder holder = buildElementsForAst(constructorDeclaration); |
1458 List<ConstructorElement> constructors = holder.constructors; | 1471 List<ConstructorElement> constructors = holder.constructors; |
1459 expect(constructors, hasLength(1)); | 1472 expect(constructors, hasLength(1)); |
1460 ConstructorElement constructor = constructors[0]; | 1473 ConstructorElement constructor = constructors[0]; |
1461 expect(constructor, isNotNull); | 1474 expect(constructor, isNotNull); |
1462 expect(constructor.isExternal, isTrue); | 1475 expect(constructor.isExternal, isTrue); |
1463 expect(constructor.isFactory, isFalse); | 1476 expect(constructor.isFactory, isFalse); |
1464 expect(constructor.name, ""); | 1477 expect(constructor.name, ""); |
1465 expect(constructor.functions, hasLength(0)); | 1478 expect(constructor.functions, hasLength(0)); |
1466 expect(constructor.labels, hasLength(0)); | 1479 expect(constructor.labels, hasLength(0)); |
1467 expect(constructor.localVariables, hasLength(0)); | 1480 expect(constructor.localVariables, hasLength(0)); |
1468 expect(constructor.parameters, hasLength(0)); | 1481 expect(constructor.parameters, hasLength(0)); |
1469 } | 1482 } |
1470 | 1483 |
1471 void test_visitConstructorDeclaration_factory() { | 1484 void test_visitConstructorDeclaration_factory() { |
1472 String className = "A"; | 1485 String className = "A"; |
1473 ConstructorDeclaration constructorDeclaration = | 1486 ConstructorDeclaration constructorDeclaration = |
1474 AstFactory.constructorDeclaration2( | 1487 AstTestFactory.constructorDeclaration2( |
1475 null, | 1488 null, |
1476 Keyword.FACTORY, | 1489 Keyword.FACTORY, |
1477 AstFactory.identifier3(className), | 1490 AstTestFactory.identifier3(className), |
1478 null, | 1491 null, |
1479 AstFactory.formalParameterList(), | 1492 AstTestFactory.formalParameterList(), |
1480 null, | 1493 null, |
1481 AstFactory.blockFunctionBody2()); | 1494 AstTestFactory.blockFunctionBody2()); |
1482 | 1495 |
1483 ElementHolder holder = buildElementsForAst(constructorDeclaration); | 1496 ElementHolder holder = buildElementsForAst(constructorDeclaration); |
1484 List<ConstructorElement> constructors = holder.constructors; | 1497 List<ConstructorElement> constructors = holder.constructors; |
1485 expect(constructors, hasLength(1)); | 1498 expect(constructors, hasLength(1)); |
1486 ConstructorElement constructor = constructors[0]; | 1499 ConstructorElement constructor = constructors[0]; |
1487 expect(constructor, isNotNull); | 1500 expect(constructor, isNotNull); |
1488 expect(constructor.isExternal, isFalse); | 1501 expect(constructor.isExternal, isFalse); |
1489 expect(constructor.isFactory, isTrue); | 1502 expect(constructor.isFactory, isTrue); |
1490 expect(constructor.name, ""); | 1503 expect(constructor.name, ""); |
1491 expect(constructor.functions, hasLength(0)); | 1504 expect(constructor.functions, hasLength(0)); |
1492 expect(constructor.labels, hasLength(0)); | 1505 expect(constructor.labels, hasLength(0)); |
1493 expect(constructor.localVariables, hasLength(0)); | 1506 expect(constructor.localVariables, hasLength(0)); |
1494 expect(constructor.parameters, hasLength(0)); | 1507 expect(constructor.parameters, hasLength(0)); |
1495 } | 1508 } |
1496 | 1509 |
1497 void test_visitConstructorDeclaration_minimal() { | 1510 void test_visitConstructorDeclaration_minimal() { |
1498 String className = "A"; | 1511 String className = "A"; |
1499 ConstructorDeclaration constructorDeclaration = | 1512 ConstructorDeclaration constructorDeclaration = |
1500 AstFactory.constructorDeclaration2( | 1513 AstTestFactory.constructorDeclaration2( |
1501 null, | 1514 null, |
1502 null, | 1515 null, |
1503 AstFactory.identifier3(className), | 1516 AstTestFactory.identifier3(className), |
1504 null, | 1517 null, |
1505 AstFactory.formalParameterList(), | 1518 AstTestFactory.formalParameterList(), |
1506 null, | 1519 null, |
1507 AstFactory.blockFunctionBody2()); | 1520 AstTestFactory.blockFunctionBody2()); |
1508 constructorDeclaration.documentationComment = AstFactory | 1521 constructorDeclaration.documentationComment = AstTestFactory |
1509 .documentationComment( | 1522 .documentationComment( |
1510 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1523 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1511 constructorDeclaration.endToken.offset = 80; | 1524 constructorDeclaration.endToken.offset = 80; |
1512 | 1525 |
1513 ElementHolder holder = buildElementsForAst(constructorDeclaration); | 1526 ElementHolder holder = buildElementsForAst(constructorDeclaration); |
1514 List<ConstructorElement> constructors = holder.constructors; | 1527 List<ConstructorElement> constructors = holder.constructors; |
1515 expect(constructors, hasLength(1)); | 1528 expect(constructors, hasLength(1)); |
1516 ConstructorElement constructor = constructors[0]; | 1529 ConstructorElement constructor = constructors[0]; |
1517 expect(constructor, isNotNull); | 1530 expect(constructor, isNotNull); |
1518 assertHasCodeRange(constructor, 50, 31); | 1531 assertHasCodeRange(constructor, 50, 31); |
1519 expect(constructor.documentationComment, '/// aaa'); | 1532 expect(constructor.documentationComment, '/// aaa'); |
1520 expect(constructor.isExternal, isFalse); | 1533 expect(constructor.isExternal, isFalse); |
1521 expect(constructor.isFactory, isFalse); | 1534 expect(constructor.isFactory, isFalse); |
1522 expect(constructor.name, ""); | 1535 expect(constructor.name, ""); |
1523 expect(constructor.functions, hasLength(0)); | 1536 expect(constructor.functions, hasLength(0)); |
1524 expect(constructor.labels, hasLength(0)); | 1537 expect(constructor.labels, hasLength(0)); |
1525 expect(constructor.localVariables, hasLength(0)); | 1538 expect(constructor.localVariables, hasLength(0)); |
1526 expect(constructor.parameters, hasLength(0)); | 1539 expect(constructor.parameters, hasLength(0)); |
1527 } | 1540 } |
1528 | 1541 |
1529 void test_visitConstructorDeclaration_named() { | 1542 void test_visitConstructorDeclaration_named() { |
1530 String className = "A"; | 1543 String className = "A"; |
1531 String constructorName = "c"; | 1544 String constructorName = "c"; |
1532 ConstructorDeclaration constructorDeclaration = | 1545 ConstructorDeclaration constructorDeclaration = |
1533 AstFactory.constructorDeclaration2( | 1546 AstTestFactory.constructorDeclaration2( |
1534 null, | 1547 null, |
1535 null, | 1548 null, |
1536 AstFactory.identifier3(className), | 1549 AstTestFactory.identifier3(className), |
1537 constructorName, | 1550 constructorName, |
1538 AstFactory.formalParameterList(), | 1551 AstTestFactory.formalParameterList(), |
1539 null, | 1552 null, |
1540 AstFactory.blockFunctionBody2()); | 1553 AstTestFactory.blockFunctionBody2()); |
1541 | 1554 |
1542 ElementHolder holder = buildElementsForAst(constructorDeclaration); | 1555 ElementHolder holder = buildElementsForAst(constructorDeclaration); |
1543 List<ConstructorElement> constructors = holder.constructors; | 1556 List<ConstructorElement> constructors = holder.constructors; |
1544 expect(constructors, hasLength(1)); | 1557 expect(constructors, hasLength(1)); |
1545 ConstructorElement constructor = constructors[0]; | 1558 ConstructorElement constructor = constructors[0]; |
1546 expect(constructor, isNotNull); | 1559 expect(constructor, isNotNull); |
1547 expect(constructor.isExternal, isFalse); | 1560 expect(constructor.isExternal, isFalse); |
1548 expect(constructor.isFactory, isFalse); | 1561 expect(constructor.isFactory, isFalse); |
1549 expect(constructor.name, constructorName); | 1562 expect(constructor.name, constructorName); |
1550 expect(constructor.functions, hasLength(0)); | 1563 expect(constructor.functions, hasLength(0)); |
1551 expect(constructor.labels, hasLength(0)); | 1564 expect(constructor.labels, hasLength(0)); |
1552 expect(constructor.localVariables, hasLength(0)); | 1565 expect(constructor.localVariables, hasLength(0)); |
1553 expect(constructor.parameters, hasLength(0)); | 1566 expect(constructor.parameters, hasLength(0)); |
1554 expect(constructorDeclaration.name.staticElement, same(constructor)); | 1567 expect(constructorDeclaration.name.staticElement, same(constructor)); |
1555 expect(constructorDeclaration.element, same(constructor)); | 1568 expect(constructorDeclaration.element, same(constructor)); |
1556 } | 1569 } |
1557 | 1570 |
1558 void test_visitConstructorDeclaration_unnamed() { | 1571 void test_visitConstructorDeclaration_unnamed() { |
1559 String className = "A"; | 1572 String className = "A"; |
1560 ConstructorDeclaration constructorDeclaration = | 1573 ConstructorDeclaration constructorDeclaration = |
1561 AstFactory.constructorDeclaration2( | 1574 AstTestFactory.constructorDeclaration2( |
1562 null, | 1575 null, |
1563 null, | 1576 null, |
1564 AstFactory.identifier3(className), | 1577 AstTestFactory.identifier3(className), |
1565 null, | 1578 null, |
1566 AstFactory.formalParameterList(), | 1579 AstTestFactory.formalParameterList(), |
1567 null, | 1580 null, |
1568 AstFactory.blockFunctionBody2()); | 1581 AstTestFactory.blockFunctionBody2()); |
1569 | 1582 |
1570 ElementHolder holder = buildElementsForAst(constructorDeclaration); | 1583 ElementHolder holder = buildElementsForAst(constructorDeclaration); |
1571 List<ConstructorElement> constructors = holder.constructors; | 1584 List<ConstructorElement> constructors = holder.constructors; |
1572 expect(constructors, hasLength(1)); | 1585 expect(constructors, hasLength(1)); |
1573 ConstructorElement constructor = constructors[0]; | 1586 ConstructorElement constructor = constructors[0]; |
1574 expect(constructor, isNotNull); | 1587 expect(constructor, isNotNull); |
1575 expect(constructor.isExternal, isFalse); | 1588 expect(constructor.isExternal, isFalse); |
1576 expect(constructor.isFactory, isFalse); | 1589 expect(constructor.isFactory, isFalse); |
1577 expect(constructor.name, ""); | 1590 expect(constructor.name, ""); |
1578 expect(constructor.functions, hasLength(0)); | 1591 expect(constructor.functions, hasLength(0)); |
1579 expect(constructor.labels, hasLength(0)); | 1592 expect(constructor.labels, hasLength(0)); |
1580 expect(constructor.localVariables, hasLength(0)); | 1593 expect(constructor.localVariables, hasLength(0)); |
1581 expect(constructor.parameters, hasLength(0)); | 1594 expect(constructor.parameters, hasLength(0)); |
1582 expect(constructorDeclaration.element, same(constructor)); | 1595 expect(constructorDeclaration.element, same(constructor)); |
1583 } | 1596 } |
1584 | 1597 |
1585 void test_visitEnumDeclaration() { | 1598 void test_visitEnumDeclaration() { |
1586 String enumName = "E"; | 1599 String enumName = "E"; |
1587 EnumDeclaration enumDeclaration = | 1600 EnumDeclaration enumDeclaration = |
1588 AstFactory.enumDeclaration2(enumName, ["ONE"]); | 1601 AstTestFactory.enumDeclaration2(enumName, ["ONE"]); |
1589 enumDeclaration.documentationComment = AstFactory.documentationComment( | 1602 enumDeclaration.documentationComment = AstTestFactory.documentationComment( |
1590 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1603 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1591 enumDeclaration.endToken.offset = 80; | 1604 enumDeclaration.endToken.offset = 80; |
1592 ElementHolder holder = buildElementsForAst(enumDeclaration); | 1605 ElementHolder holder = buildElementsForAst(enumDeclaration); |
1593 List<ClassElement> enums = holder.enums; | 1606 List<ClassElement> enums = holder.enums; |
1594 expect(enums, hasLength(1)); | 1607 expect(enums, hasLength(1)); |
1595 ClassElement enumElement = enums[0]; | 1608 ClassElement enumElement = enums[0]; |
1596 expect(enumElement, isNotNull); | 1609 expect(enumElement, isNotNull); |
1597 assertHasCodeRange(enumElement, 50, 31); | 1610 assertHasCodeRange(enumElement, 50, 31); |
1598 expect(enumElement.documentationComment, '/// aaa'); | 1611 expect(enumElement.documentationComment, '/// aaa'); |
1599 expect(enumElement.name, enumName); | 1612 expect(enumElement.name, enumName); |
1600 } | 1613 } |
1601 | 1614 |
1602 void test_visitFieldDeclaration() { | 1615 void test_visitFieldDeclaration() { |
1603 String firstFieldName = "x"; | 1616 String firstFieldName = "x"; |
1604 String secondFieldName = "y"; | 1617 String secondFieldName = "y"; |
1605 FieldDeclaration fieldDeclaration = | 1618 FieldDeclaration fieldDeclaration = |
1606 AstFactory.fieldDeclaration2(false, null, [ | 1619 AstTestFactory.fieldDeclaration2(false, null, [ |
1607 AstFactory.variableDeclaration(firstFieldName), | 1620 AstTestFactory.variableDeclaration(firstFieldName), |
1608 AstFactory.variableDeclaration(secondFieldName) | 1621 AstTestFactory.variableDeclaration(secondFieldName) |
1609 ]); | 1622 ]); |
1610 fieldDeclaration.documentationComment = AstFactory.documentationComment( | 1623 fieldDeclaration.documentationComment = AstTestFactory.documentationComment( |
1611 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1624 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1612 fieldDeclaration.endToken.offset = 110; | 1625 fieldDeclaration.endToken.offset = 110; |
1613 | 1626 |
1614 ElementHolder holder = buildElementsForAst(fieldDeclaration); | 1627 ElementHolder holder = buildElementsForAst(fieldDeclaration); |
1615 List<FieldElement> fields = holder.fields; | 1628 List<FieldElement> fields = holder.fields; |
1616 expect(fields, hasLength(2)); | 1629 expect(fields, hasLength(2)); |
1617 | 1630 |
1618 FieldElement firstField = fields[0]; | 1631 FieldElement firstField = fields[0]; |
1619 expect(firstField, isNotNull); | 1632 expect(firstField, isNotNull); |
1620 assertHasCodeRange(firstField, 50, 61); | 1633 assertHasCodeRange(firstField, 50, 61); |
(...skipping 11 matching lines...) Expand all Loading... |
1632 expect(secondField.name, secondFieldName); | 1645 expect(secondField.name, secondFieldName); |
1633 expect(secondField.initializer, isNull); | 1646 expect(secondField.initializer, isNull); |
1634 expect(secondField.isConst, isFalse); | 1647 expect(secondField.isConst, isFalse); |
1635 expect(secondField.isFinal, isFalse); | 1648 expect(secondField.isFinal, isFalse); |
1636 expect(secondField.isSynthetic, isFalse); | 1649 expect(secondField.isSynthetic, isFalse); |
1637 } | 1650 } |
1638 | 1651 |
1639 void test_visitFieldFormalParameter() { | 1652 void test_visitFieldFormalParameter() { |
1640 String parameterName = "p"; | 1653 String parameterName = "p"; |
1641 FieldFormalParameter formalParameter = | 1654 FieldFormalParameter formalParameter = |
1642 AstFactory.fieldFormalParameter(null, null, parameterName); | 1655 AstTestFactory.fieldFormalParameter(null, null, parameterName); |
1643 formalParameter.beginToken.offset = 50; | 1656 formalParameter.beginToken.offset = 50; |
1644 formalParameter.endToken.offset = 80; | 1657 formalParameter.endToken.offset = 80; |
1645 ElementHolder holder = buildElementsForAst(formalParameter); | 1658 ElementHolder holder = buildElementsForAst(formalParameter); |
1646 List<ParameterElement> parameters = holder.parameters; | 1659 List<ParameterElement> parameters = holder.parameters; |
1647 expect(parameters, hasLength(1)); | 1660 expect(parameters, hasLength(1)); |
1648 ParameterElement parameter = parameters[0]; | 1661 ParameterElement parameter = parameters[0]; |
1649 expect(parameter, isNotNull); | 1662 expect(parameter, isNotNull); |
1650 assertHasCodeRange(parameter, 50, 31); | 1663 assertHasCodeRange(parameter, 50, 31); |
1651 expect(parameter.name, parameterName); | 1664 expect(parameter.name, parameterName); |
1652 expect(parameter.initializer, isNull); | 1665 expect(parameter.initializer, isNull); |
1653 expect(parameter.isConst, isFalse); | 1666 expect(parameter.isConst, isFalse); |
1654 expect(parameter.isFinal, isFalse); | 1667 expect(parameter.isFinal, isFalse); |
1655 expect(parameter.isSynthetic, isFalse); | 1668 expect(parameter.isSynthetic, isFalse); |
1656 expect(parameter.parameterKind, ParameterKind.REQUIRED); | 1669 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
1657 expect(parameter.parameters, hasLength(0)); | 1670 expect(parameter.parameters, hasLength(0)); |
1658 } | 1671 } |
1659 | 1672 |
1660 void test_visitFieldFormalParameter_functionTyped() { | 1673 void test_visitFieldFormalParameter_functionTyped() { |
1661 String parameterName = "p"; | 1674 String parameterName = "p"; |
1662 FieldFormalParameter formalParameter = AstFactory.fieldFormalParameter( | 1675 FieldFormalParameter formalParameter = AstTestFactory.fieldFormalParameter( |
1663 null, | 1676 null, |
1664 null, | 1677 null, |
1665 parameterName, | 1678 parameterName, |
1666 AstFactory | 1679 AstTestFactory |
1667 .formalParameterList([AstFactory.simpleFormalParameter3("a")])); | 1680 .formalParameterList([AstTestFactory.simpleFormalParameter3("a")])); |
1668 ElementHolder holder = buildElementsForAst(formalParameter); | 1681 ElementHolder holder = buildElementsForAst(formalParameter); |
1669 List<ParameterElement> parameters = holder.parameters; | 1682 List<ParameterElement> parameters = holder.parameters; |
1670 expect(parameters, hasLength(1)); | 1683 expect(parameters, hasLength(1)); |
1671 ParameterElement parameter = parameters[0]; | 1684 ParameterElement parameter = parameters[0]; |
1672 expect(parameter, isNotNull); | 1685 expect(parameter, isNotNull); |
1673 expect(parameter.name, parameterName); | 1686 expect(parameter.name, parameterName); |
1674 expect(parameter.initializer, isNull); | 1687 expect(parameter.initializer, isNull); |
1675 expect(parameter.isConst, isFalse); | 1688 expect(parameter.isConst, isFalse); |
1676 expect(parameter.isFinal, isFalse); | 1689 expect(parameter.isFinal, isFalse); |
1677 expect(parameter.isSynthetic, isFalse); | 1690 expect(parameter.isSynthetic, isFalse); |
1678 expect(parameter.parameterKind, ParameterKind.REQUIRED); | 1691 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
1679 expect(parameter.parameters, hasLength(1)); | 1692 expect(parameter.parameters, hasLength(1)); |
1680 } | 1693 } |
1681 | 1694 |
1682 void test_visitFormalParameterList() { | 1695 void test_visitFormalParameterList() { |
1683 String firstParameterName = "a"; | 1696 String firstParameterName = "a"; |
1684 String secondParameterName = "b"; | 1697 String secondParameterName = "b"; |
1685 FormalParameterList parameterList = AstFactory.formalParameterList([ | 1698 FormalParameterList parameterList = AstTestFactory.formalParameterList([ |
1686 AstFactory.simpleFormalParameter3(firstParameterName), | 1699 AstTestFactory.simpleFormalParameter3(firstParameterName), |
1687 AstFactory.simpleFormalParameter3(secondParameterName) | 1700 AstTestFactory.simpleFormalParameter3(secondParameterName) |
1688 ]); | 1701 ]); |
1689 ElementHolder holder = buildElementsForAst(parameterList); | 1702 ElementHolder holder = buildElementsForAst(parameterList); |
1690 List<ParameterElement> parameters = holder.parameters; | 1703 List<ParameterElement> parameters = holder.parameters; |
1691 expect(parameters, hasLength(2)); | 1704 expect(parameters, hasLength(2)); |
1692 expect(parameters[0].name, firstParameterName); | 1705 expect(parameters[0].name, firstParameterName); |
1693 expect(parameters[1].name, secondParameterName); | 1706 expect(parameters[1].name, secondParameterName); |
1694 } | 1707 } |
1695 | 1708 |
1696 void test_visitFunctionDeclaration_external() { | 1709 void test_visitFunctionDeclaration_external() { |
1697 // external f(); | 1710 // external f(); |
1698 String functionName = "f"; | 1711 String functionName = "f"; |
1699 FunctionDeclaration declaration = AstFactory.functionDeclaration( | 1712 FunctionDeclaration declaration = AstTestFactory.functionDeclaration( |
1700 null, | 1713 null, |
1701 null, | 1714 null, |
1702 functionName, | 1715 functionName, |
1703 AstFactory.functionExpression2( | 1716 AstTestFactory.functionExpression2(AstTestFactory.formalParameterList(), |
1704 AstFactory.formalParameterList(), AstFactory.emptyFunctionBody())); | 1717 AstTestFactory.emptyFunctionBody())); |
1705 declaration.externalKeyword = | 1718 declaration.externalKeyword = |
1706 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 1719 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
1707 | 1720 |
1708 ElementHolder holder = buildElementsForAst(declaration); | 1721 ElementHolder holder = buildElementsForAst(declaration); |
1709 List<FunctionElement> functions = holder.functions; | 1722 List<FunctionElement> functions = holder.functions; |
1710 expect(functions, hasLength(1)); | 1723 expect(functions, hasLength(1)); |
1711 FunctionElement function = functions[0]; | 1724 FunctionElement function = functions[0]; |
1712 expect(function, isNotNull); | 1725 expect(function, isNotNull); |
1713 expect(function.name, functionName); | 1726 expect(function.name, functionName); |
1714 expect(declaration.element, same(function)); | 1727 expect(declaration.element, same(function)); |
1715 expect(declaration.functionExpression.element, same(function)); | 1728 expect(declaration.functionExpression.element, same(function)); |
1716 expect(function.hasImplicitReturnType, isTrue); | 1729 expect(function.hasImplicitReturnType, isTrue); |
1717 expect(function.isExternal, isTrue); | 1730 expect(function.isExternal, isTrue); |
1718 expect(function.isSynthetic, isFalse); | 1731 expect(function.isSynthetic, isFalse); |
1719 expect(function.typeParameters, hasLength(0)); | 1732 expect(function.typeParameters, hasLength(0)); |
1720 } | 1733 } |
1721 | 1734 |
1722 void test_visitFunctionDeclaration_getter() { | 1735 void test_visitFunctionDeclaration_getter() { |
1723 // get f() {} | 1736 // get f() {} |
1724 String functionName = "f"; | 1737 String functionName = "f"; |
1725 FunctionDeclaration declaration = AstFactory.functionDeclaration( | 1738 FunctionDeclaration declaration = AstTestFactory.functionDeclaration( |
1726 null, | 1739 null, |
1727 Keyword.GET, | 1740 Keyword.GET, |
1728 functionName, | 1741 functionName, |
1729 AstFactory.functionExpression2( | 1742 AstTestFactory.functionExpression2(AstTestFactory.formalParameterList(), |
1730 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); | 1743 AstTestFactory.blockFunctionBody2())); |
1731 declaration.documentationComment = AstFactory.documentationComment( | 1744 declaration.documentationComment = AstTestFactory.documentationComment( |
1732 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1745 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1733 declaration.endToken.offset = 80; | 1746 declaration.endToken.offset = 80; |
1734 | 1747 |
1735 ElementHolder holder = buildElementsForAst(declaration); | 1748 ElementHolder holder = buildElementsForAst(declaration); |
1736 List<PropertyAccessorElement> accessors = holder.accessors; | 1749 List<PropertyAccessorElement> accessors = holder.accessors; |
1737 expect(accessors, hasLength(1)); | 1750 expect(accessors, hasLength(1)); |
1738 PropertyAccessorElement accessor = accessors[0]; | 1751 PropertyAccessorElement accessor = accessors[0]; |
1739 expect(accessor, isNotNull); | 1752 expect(accessor, isNotNull); |
1740 assertHasCodeRange(accessor, 50, 31); | 1753 assertHasCodeRange(accessor, 50, 31); |
1741 expect(accessor.documentationComment, '/// aaa'); | 1754 expect(accessor.documentationComment, '/// aaa'); |
1742 expect(accessor.name, functionName); | 1755 expect(accessor.name, functionName); |
1743 expect(declaration.element, same(accessor)); | 1756 expect(declaration.element, same(accessor)); |
1744 expect(declaration.functionExpression.element, same(accessor)); | 1757 expect(declaration.functionExpression.element, same(accessor)); |
1745 expect(accessor.hasImplicitReturnType, isTrue); | 1758 expect(accessor.hasImplicitReturnType, isTrue); |
1746 expect(accessor.isGetter, isTrue); | 1759 expect(accessor.isGetter, isTrue); |
1747 expect(accessor.isExternal, isFalse); | 1760 expect(accessor.isExternal, isFalse); |
1748 expect(accessor.isSetter, isFalse); | 1761 expect(accessor.isSetter, isFalse); |
1749 expect(accessor.isSynthetic, isFalse); | 1762 expect(accessor.isSynthetic, isFalse); |
1750 expect(accessor.typeParameters, hasLength(0)); | 1763 expect(accessor.typeParameters, hasLength(0)); |
1751 PropertyInducingElement variable = accessor.variable; | 1764 PropertyInducingElement variable = accessor.variable; |
1752 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, | 1765 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, |
1753 TopLevelVariableElement, variable); | 1766 TopLevelVariableElement, variable); |
1754 expect(variable.isSynthetic, isTrue); | 1767 expect(variable.isSynthetic, isTrue); |
1755 } | 1768 } |
1756 | 1769 |
1757 void test_visitFunctionDeclaration_plain() { | 1770 void test_visitFunctionDeclaration_plain() { |
1758 // T f() {} | 1771 // T f() {} |
1759 String functionName = "f"; | 1772 String functionName = "f"; |
1760 FunctionDeclaration declaration = AstFactory.functionDeclaration( | 1773 FunctionDeclaration declaration = AstTestFactory.functionDeclaration( |
1761 AstFactory.typeName4('T'), | 1774 AstTestFactory.typeName4('T'), |
1762 null, | 1775 null, |
1763 functionName, | 1776 functionName, |
1764 AstFactory.functionExpression2( | 1777 AstTestFactory.functionExpression2(AstTestFactory.formalParameterList(), |
1765 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); | 1778 AstTestFactory.blockFunctionBody2())); |
1766 declaration.documentationComment = AstFactory.documentationComment( | 1779 declaration.documentationComment = AstTestFactory.documentationComment( |
1767 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1780 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1768 declaration.endToken.offset = 80; | 1781 declaration.endToken.offset = 80; |
1769 | 1782 |
1770 ElementHolder holder = buildElementsForAst(declaration); | 1783 ElementHolder holder = buildElementsForAst(declaration); |
1771 List<FunctionElement> functions = holder.functions; | 1784 List<FunctionElement> functions = holder.functions; |
1772 expect(functions, hasLength(1)); | 1785 expect(functions, hasLength(1)); |
1773 FunctionElement function = functions[0]; | 1786 FunctionElement function = functions[0]; |
1774 expect(function, isNotNull); | 1787 expect(function, isNotNull); |
1775 assertHasCodeRange(function, 50, 31); | 1788 assertHasCodeRange(function, 50, 31); |
1776 expect(function.documentationComment, '/// aaa'); | 1789 expect(function.documentationComment, '/// aaa'); |
1777 expect(function.hasImplicitReturnType, isFalse); | 1790 expect(function.hasImplicitReturnType, isFalse); |
1778 expect(function.name, functionName); | 1791 expect(function.name, functionName); |
1779 expect(declaration.element, same(function)); | 1792 expect(declaration.element, same(function)); |
1780 expect(declaration.functionExpression.element, same(function)); | 1793 expect(declaration.functionExpression.element, same(function)); |
1781 expect(function.isExternal, isFalse); | 1794 expect(function.isExternal, isFalse); |
1782 expect(function.isSynthetic, isFalse); | 1795 expect(function.isSynthetic, isFalse); |
1783 expect(function.typeParameters, hasLength(0)); | 1796 expect(function.typeParameters, hasLength(0)); |
1784 } | 1797 } |
1785 | 1798 |
1786 void test_visitFunctionDeclaration_setter() { | 1799 void test_visitFunctionDeclaration_setter() { |
1787 // set f() {} | 1800 // set f() {} |
1788 String functionName = "f"; | 1801 String functionName = "f"; |
1789 FunctionDeclaration declaration = AstFactory.functionDeclaration( | 1802 FunctionDeclaration declaration = AstTestFactory.functionDeclaration( |
1790 null, | 1803 null, |
1791 Keyword.SET, | 1804 Keyword.SET, |
1792 functionName, | 1805 functionName, |
1793 AstFactory.functionExpression2( | 1806 AstTestFactory.functionExpression2(AstTestFactory.formalParameterList(), |
1794 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); | 1807 AstTestFactory.blockFunctionBody2())); |
1795 declaration.documentationComment = AstFactory.documentationComment( | 1808 declaration.documentationComment = AstTestFactory.documentationComment( |
1796 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1809 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1797 declaration.endToken.offset = 80; | 1810 declaration.endToken.offset = 80; |
1798 | 1811 |
1799 ElementHolder holder = buildElementsForAst(declaration); | 1812 ElementHolder holder = buildElementsForAst(declaration); |
1800 List<PropertyAccessorElement> accessors = holder.accessors; | 1813 List<PropertyAccessorElement> accessors = holder.accessors; |
1801 expect(accessors, hasLength(1)); | 1814 expect(accessors, hasLength(1)); |
1802 PropertyAccessorElement accessor = accessors[0]; | 1815 PropertyAccessorElement accessor = accessors[0]; |
1803 expect(accessor, isNotNull); | 1816 expect(accessor, isNotNull); |
1804 assertHasCodeRange(accessor, 50, 31); | 1817 assertHasCodeRange(accessor, 50, 31); |
1805 expect(accessor.documentationComment, '/// aaa'); | 1818 expect(accessor.documentationComment, '/// aaa'); |
1806 expect(accessor.hasImplicitReturnType, isTrue); | 1819 expect(accessor.hasImplicitReturnType, isTrue); |
1807 expect(accessor.name, "$functionName="); | 1820 expect(accessor.name, "$functionName="); |
1808 expect(declaration.element, same(accessor)); | 1821 expect(declaration.element, same(accessor)); |
1809 expect(declaration.functionExpression.element, same(accessor)); | 1822 expect(declaration.functionExpression.element, same(accessor)); |
1810 expect(accessor.isGetter, isFalse); | 1823 expect(accessor.isGetter, isFalse); |
1811 expect(accessor.isExternal, isFalse); | 1824 expect(accessor.isExternal, isFalse); |
1812 expect(accessor.isSetter, isTrue); | 1825 expect(accessor.isSetter, isTrue); |
1813 expect(accessor.isSynthetic, isFalse); | 1826 expect(accessor.isSynthetic, isFalse); |
1814 expect(accessor.typeParameters, hasLength(0)); | 1827 expect(accessor.typeParameters, hasLength(0)); |
1815 PropertyInducingElement variable = accessor.variable; | 1828 PropertyInducingElement variable = accessor.variable; |
1816 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, | 1829 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, |
1817 TopLevelVariableElement, variable); | 1830 TopLevelVariableElement, variable); |
1818 expect(variable.isSynthetic, isTrue); | 1831 expect(variable.isSynthetic, isTrue); |
1819 } | 1832 } |
1820 | 1833 |
1821 void test_visitFunctionDeclaration_typeParameters() { | 1834 void test_visitFunctionDeclaration_typeParameters() { |
1822 // f<E>() {} | 1835 // f<E>() {} |
1823 String functionName = 'f'; | 1836 String functionName = 'f'; |
1824 String typeParameterName = 'E'; | 1837 String typeParameterName = 'E'; |
1825 FunctionExpression expression = AstFactory.functionExpression3( | 1838 FunctionExpression expression = AstTestFactory.functionExpression3( |
1826 AstFactory.typeParameterList([typeParameterName]), | 1839 AstTestFactory.typeParameterList([typeParameterName]), |
1827 AstFactory.formalParameterList(), | 1840 AstTestFactory.formalParameterList(), |
1828 AstFactory.blockFunctionBody2()); | 1841 AstTestFactory.blockFunctionBody2()); |
1829 FunctionDeclaration declaration = | 1842 FunctionDeclaration declaration = AstTestFactory.functionDeclaration( |
1830 AstFactory.functionDeclaration(null, null, functionName, expression); | 1843 null, null, functionName, expression); |
1831 | 1844 |
1832 ElementHolder holder = buildElementsForAst(declaration); | 1845 ElementHolder holder = buildElementsForAst(declaration); |
1833 List<FunctionElement> functions = holder.functions; | 1846 List<FunctionElement> functions = holder.functions; |
1834 expect(functions, hasLength(1)); | 1847 expect(functions, hasLength(1)); |
1835 FunctionElement function = functions[0]; | 1848 FunctionElement function = functions[0]; |
1836 expect(function, isNotNull); | 1849 expect(function, isNotNull); |
1837 expect(function.hasImplicitReturnType, isTrue); | 1850 expect(function.hasImplicitReturnType, isTrue); |
1838 expect(function.name, functionName); | 1851 expect(function.name, functionName); |
1839 expect(function.isExternal, isFalse); | 1852 expect(function.isExternal, isFalse); |
1840 expect(function.isSynthetic, isFalse); | 1853 expect(function.isSynthetic, isFalse); |
1841 expect(declaration.element, same(function)); | 1854 expect(declaration.element, same(function)); |
1842 expect(expression.element, same(function)); | 1855 expect(expression.element, same(function)); |
1843 List<TypeParameterElement> typeParameters = function.typeParameters; | 1856 List<TypeParameterElement> typeParameters = function.typeParameters; |
1844 expect(typeParameters, hasLength(1)); | 1857 expect(typeParameters, hasLength(1)); |
1845 TypeParameterElement typeParameter = typeParameters[0]; | 1858 TypeParameterElement typeParameter = typeParameters[0]; |
1846 expect(typeParameter, isNotNull); | 1859 expect(typeParameter, isNotNull); |
1847 expect(typeParameter.name, typeParameterName); | 1860 expect(typeParameter.name, typeParameterName); |
1848 } | 1861 } |
1849 | 1862 |
1850 void test_visitMethodDeclaration_abstract() { | 1863 void test_visitMethodDeclaration_abstract() { |
1851 // m(); | 1864 // m(); |
1852 String methodName = "m"; | 1865 String methodName = "m"; |
1853 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 1866 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
1854 null, | 1867 null, |
1855 null, | 1868 null, |
1856 null, | 1869 null, |
1857 null, | 1870 null, |
1858 AstFactory.identifier3(methodName), | 1871 AstTestFactory.identifier3(methodName), |
1859 AstFactory.formalParameterList(), | 1872 AstTestFactory.formalParameterList(), |
1860 AstFactory.emptyFunctionBody()); | 1873 AstTestFactory.emptyFunctionBody()); |
1861 | 1874 |
1862 ElementHolder holder = buildElementsForAst(methodDeclaration); | 1875 ElementHolder holder = buildElementsForAst(methodDeclaration); |
1863 List<MethodElement> methods = holder.methods; | 1876 List<MethodElement> methods = holder.methods; |
1864 expect(methods, hasLength(1)); | 1877 expect(methods, hasLength(1)); |
1865 MethodElement method = methods[0]; | 1878 MethodElement method = methods[0]; |
1866 expect(method, isNotNull); | 1879 expect(method, isNotNull); |
1867 expect(method.hasImplicitReturnType, isTrue); | 1880 expect(method.hasImplicitReturnType, isTrue); |
1868 expect(method.name, methodName); | 1881 expect(method.name, methodName); |
1869 expect(method.functions, hasLength(0)); | 1882 expect(method.functions, hasLength(0)); |
1870 expect(method.labels, hasLength(0)); | 1883 expect(method.labels, hasLength(0)); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1910 FieldDeclaration fieldDeclNode = classNode.members[0]; | 1923 FieldDeclaration fieldDeclNode = classNode.members[0]; |
1911 VariableDeclaration fieldNode = fieldDeclNode.fields.variables.single; | 1924 VariableDeclaration fieldNode = fieldDeclNode.fields.variables.single; |
1912 MethodDeclaration getterNode = classNode.members[1]; | 1925 MethodDeclaration getterNode = classNode.members[1]; |
1913 expect(fieldNode.element, notSyntheticFieldElement); | 1926 expect(fieldNode.element, notSyntheticFieldElement); |
1914 expect(getterNode.element, notSyntheticGetterElement); | 1927 expect(getterNode.element, notSyntheticGetterElement); |
1915 } | 1928 } |
1916 | 1929 |
1917 void test_visitMethodDeclaration_external() { | 1930 void test_visitMethodDeclaration_external() { |
1918 // external m(); | 1931 // external m(); |
1919 String methodName = "m"; | 1932 String methodName = "m"; |
1920 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 1933 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
1921 null, | 1934 null, |
1922 null, | 1935 null, |
1923 null, | 1936 null, |
1924 null, | 1937 null, |
1925 AstFactory.identifier3(methodName), | 1938 AstTestFactory.identifier3(methodName), |
1926 AstFactory.formalParameterList(), | 1939 AstTestFactory.formalParameterList(), |
1927 AstFactory.emptyFunctionBody()); | 1940 AstTestFactory.emptyFunctionBody()); |
1928 methodDeclaration.externalKeyword = | 1941 methodDeclaration.externalKeyword = |
1929 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 1942 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
1930 | 1943 |
1931 ElementHolder holder = buildElementsForAst(methodDeclaration); | 1944 ElementHolder holder = buildElementsForAst(methodDeclaration); |
1932 List<MethodElement> methods = holder.methods; | 1945 List<MethodElement> methods = holder.methods; |
1933 expect(methods, hasLength(1)); | 1946 expect(methods, hasLength(1)); |
1934 MethodElement method = methods[0]; | 1947 MethodElement method = methods[0]; |
1935 expect(method, isNotNull); | 1948 expect(method, isNotNull); |
1936 expect(method.hasImplicitReturnType, isTrue); | 1949 expect(method.hasImplicitReturnType, isTrue); |
1937 expect(method.name, methodName); | 1950 expect(method.name, methodName); |
1938 expect(method.functions, hasLength(0)); | 1951 expect(method.functions, hasLength(0)); |
1939 expect(method.labels, hasLength(0)); | 1952 expect(method.labels, hasLength(0)); |
1940 expect(method.localVariables, hasLength(0)); | 1953 expect(method.localVariables, hasLength(0)); |
1941 expect(method.parameters, hasLength(0)); | 1954 expect(method.parameters, hasLength(0)); |
1942 expect(method.typeParameters, hasLength(0)); | 1955 expect(method.typeParameters, hasLength(0)); |
1943 expect(method.isAbstract, isFalse); | 1956 expect(method.isAbstract, isFalse); |
1944 expect(method.isExternal, isTrue); | 1957 expect(method.isExternal, isTrue); |
1945 expect(method.isStatic, isFalse); | 1958 expect(method.isStatic, isFalse); |
1946 expect(method.isSynthetic, isFalse); | 1959 expect(method.isSynthetic, isFalse); |
1947 } | 1960 } |
1948 | 1961 |
1949 void test_visitMethodDeclaration_getter() { | 1962 void test_visitMethodDeclaration_getter() { |
1950 // get m() {} | 1963 // get m() {} |
1951 String methodName = "m"; | 1964 String methodName = "m"; |
1952 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 1965 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
1953 null, | 1966 null, |
1954 null, | 1967 null, |
1955 Keyword.GET, | 1968 Keyword.GET, |
1956 null, | 1969 null, |
1957 AstFactory.identifier3(methodName), | 1970 AstTestFactory.identifier3(methodName), |
1958 AstFactory.formalParameterList(), | 1971 AstTestFactory.formalParameterList(), |
1959 AstFactory.blockFunctionBody2()); | 1972 AstTestFactory.blockFunctionBody2()); |
1960 methodDeclaration.documentationComment = AstFactory.documentationComment( | 1973 methodDeclaration.documentationComment = AstTestFactory |
1961 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 1974 .documentationComment( |
| 1975 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
1962 methodDeclaration.endToken.offset = 80; | 1976 methodDeclaration.endToken.offset = 80; |
1963 | 1977 |
1964 ElementHolder holder = buildElementsForAst(methodDeclaration); | 1978 ElementHolder holder = buildElementsForAst(methodDeclaration); |
1965 List<FieldElement> fields = holder.fields; | 1979 List<FieldElement> fields = holder.fields; |
1966 expect(fields, hasLength(1)); | 1980 expect(fields, hasLength(1)); |
1967 FieldElement field = fields[0]; | 1981 FieldElement field = fields[0]; |
1968 expect(field, isNotNull); | 1982 expect(field, isNotNull); |
1969 expect(field.name, methodName); | 1983 expect(field.name, methodName); |
1970 expect(field.isSynthetic, isTrue); | 1984 expect(field.isSynthetic, isTrue); |
1971 expect(field.setter, isNull); | 1985 expect(field.setter, isNull); |
(...skipping 10 matching lines...) Expand all Loading... |
1982 expect(getter.variable, field); | 1996 expect(getter.variable, field); |
1983 expect(getter.functions, hasLength(0)); | 1997 expect(getter.functions, hasLength(0)); |
1984 expect(getter.labels, hasLength(0)); | 1998 expect(getter.labels, hasLength(0)); |
1985 expect(getter.localVariables, hasLength(0)); | 1999 expect(getter.localVariables, hasLength(0)); |
1986 expect(getter.parameters, hasLength(0)); | 2000 expect(getter.parameters, hasLength(0)); |
1987 } | 2001 } |
1988 | 2002 |
1989 void test_visitMethodDeclaration_getter_abstract() { | 2003 void test_visitMethodDeclaration_getter_abstract() { |
1990 // get m(); | 2004 // get m(); |
1991 String methodName = "m"; | 2005 String methodName = "m"; |
1992 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 2006 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
1993 null, | 2007 null, |
1994 null, | 2008 null, |
1995 Keyword.GET, | 2009 Keyword.GET, |
1996 null, | 2010 null, |
1997 AstFactory.identifier3(methodName), | 2011 AstTestFactory.identifier3(methodName), |
1998 AstFactory.formalParameterList(), | 2012 AstTestFactory.formalParameterList(), |
1999 AstFactory.emptyFunctionBody()); | 2013 AstTestFactory.emptyFunctionBody()); |
2000 | 2014 |
2001 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2015 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2002 List<FieldElement> fields = holder.fields; | 2016 List<FieldElement> fields = holder.fields; |
2003 expect(fields, hasLength(1)); | 2017 expect(fields, hasLength(1)); |
2004 FieldElement field = fields[0]; | 2018 FieldElement field = fields[0]; |
2005 expect(field, isNotNull); | 2019 expect(field, isNotNull); |
2006 expect(field.name, methodName); | 2020 expect(field.name, methodName); |
2007 expect(field.isSynthetic, isTrue); | 2021 expect(field.isSynthetic, isTrue); |
2008 expect(field.setter, isNull); | 2022 expect(field.setter, isNull); |
2009 PropertyAccessorElement getter = field.getter; | 2023 PropertyAccessorElement getter = field.getter; |
2010 expect(getter, isNotNull); | 2024 expect(getter, isNotNull); |
2011 expect(getter.hasImplicitReturnType, isTrue); | 2025 expect(getter.hasImplicitReturnType, isTrue); |
2012 expect(getter.isAbstract, isTrue); | 2026 expect(getter.isAbstract, isTrue); |
2013 expect(getter.isExternal, isFalse); | 2027 expect(getter.isExternal, isFalse); |
2014 expect(getter.isGetter, isTrue); | 2028 expect(getter.isGetter, isTrue); |
2015 expect(getter.isSynthetic, isFalse); | 2029 expect(getter.isSynthetic, isFalse); |
2016 expect(getter.name, methodName); | 2030 expect(getter.name, methodName); |
2017 expect(getter.variable, field); | 2031 expect(getter.variable, field); |
2018 expect(getter.functions, hasLength(0)); | 2032 expect(getter.functions, hasLength(0)); |
2019 expect(getter.labels, hasLength(0)); | 2033 expect(getter.labels, hasLength(0)); |
2020 expect(getter.localVariables, hasLength(0)); | 2034 expect(getter.localVariables, hasLength(0)); |
2021 expect(getter.parameters, hasLength(0)); | 2035 expect(getter.parameters, hasLength(0)); |
2022 } | 2036 } |
2023 | 2037 |
2024 void test_visitMethodDeclaration_getter_external() { | 2038 void test_visitMethodDeclaration_getter_external() { |
2025 // external get m(); | 2039 // external get m(); |
2026 String methodName = "m"; | 2040 String methodName = "m"; |
2027 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration( | 2041 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration( |
2028 null, | 2042 null, |
2029 null, | 2043 null, |
2030 Keyword.GET, | 2044 Keyword.GET, |
2031 null, | 2045 null, |
2032 AstFactory.identifier3(methodName), | 2046 AstTestFactory.identifier3(methodName), |
2033 AstFactory.formalParameterList()); | 2047 AstTestFactory.formalParameterList()); |
2034 methodDeclaration.externalKeyword = | 2048 methodDeclaration.externalKeyword = |
2035 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 2049 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
2036 | 2050 |
2037 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2051 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2038 List<FieldElement> fields = holder.fields; | 2052 List<FieldElement> fields = holder.fields; |
2039 expect(fields, hasLength(1)); | 2053 expect(fields, hasLength(1)); |
2040 FieldElement field = fields[0]; | 2054 FieldElement field = fields[0]; |
2041 expect(field, isNotNull); | 2055 expect(field, isNotNull); |
2042 expect(field.name, methodName); | 2056 expect(field.name, methodName); |
2043 expect(field.isSynthetic, isTrue); | 2057 expect(field.isSynthetic, isTrue); |
2044 expect(field.setter, isNull); | 2058 expect(field.setter, isNull); |
2045 PropertyAccessorElement getter = field.getter; | 2059 PropertyAccessorElement getter = field.getter; |
2046 expect(getter, isNotNull); | 2060 expect(getter, isNotNull); |
2047 expect(getter.hasImplicitReturnType, isTrue); | 2061 expect(getter.hasImplicitReturnType, isTrue); |
2048 expect(getter.isAbstract, isFalse); | 2062 expect(getter.isAbstract, isFalse); |
2049 expect(getter.isExternal, isTrue); | 2063 expect(getter.isExternal, isTrue); |
2050 expect(getter.isGetter, isTrue); | 2064 expect(getter.isGetter, isTrue); |
2051 expect(getter.isSynthetic, isFalse); | 2065 expect(getter.isSynthetic, isFalse); |
2052 expect(getter.name, methodName); | 2066 expect(getter.name, methodName); |
2053 expect(getter.variable, field); | 2067 expect(getter.variable, field); |
2054 expect(getter.functions, hasLength(0)); | 2068 expect(getter.functions, hasLength(0)); |
2055 expect(getter.labels, hasLength(0)); | 2069 expect(getter.labels, hasLength(0)); |
2056 expect(getter.localVariables, hasLength(0)); | 2070 expect(getter.localVariables, hasLength(0)); |
2057 expect(getter.parameters, hasLength(0)); | 2071 expect(getter.parameters, hasLength(0)); |
2058 } | 2072 } |
2059 | 2073 |
2060 void test_visitMethodDeclaration_minimal() { | 2074 void test_visitMethodDeclaration_minimal() { |
2061 // T m() {} | 2075 // T m() {} |
2062 String methodName = "m"; | 2076 String methodName = "m"; |
2063 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 2077 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
2064 null, | 2078 null, |
2065 AstFactory.typeName4('T'), | 2079 AstTestFactory.typeName4('T'), |
2066 null, | 2080 null, |
2067 null, | 2081 null, |
2068 AstFactory.identifier3(methodName), | 2082 AstTestFactory.identifier3(methodName), |
2069 AstFactory.formalParameterList(), | 2083 AstTestFactory.formalParameterList(), |
2070 AstFactory.blockFunctionBody2()); | 2084 AstTestFactory.blockFunctionBody2()); |
2071 methodDeclaration.documentationComment = AstFactory.documentationComment( | 2085 methodDeclaration.documentationComment = AstTestFactory |
2072 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 2086 .documentationComment( |
| 2087 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
2073 methodDeclaration.endToken.offset = 80; | 2088 methodDeclaration.endToken.offset = 80; |
2074 | 2089 |
2075 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2090 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2076 List<MethodElement> methods = holder.methods; | 2091 List<MethodElement> methods = holder.methods; |
2077 expect(methods, hasLength(1)); | 2092 expect(methods, hasLength(1)); |
2078 MethodElement method = methods[0]; | 2093 MethodElement method = methods[0]; |
2079 expect(method, isNotNull); | 2094 expect(method, isNotNull); |
2080 assertHasCodeRange(method, 50, 31); | 2095 assertHasCodeRange(method, 50, 31); |
2081 expect(method.documentationComment, '/// aaa'); | 2096 expect(method.documentationComment, '/// aaa'); |
2082 expect(method.hasImplicitReturnType, isFalse); | 2097 expect(method.hasImplicitReturnType, isFalse); |
2083 expect(method.name, methodName); | 2098 expect(method.name, methodName); |
2084 expect(method.functions, hasLength(0)); | 2099 expect(method.functions, hasLength(0)); |
2085 expect(method.labels, hasLength(0)); | 2100 expect(method.labels, hasLength(0)); |
2086 expect(method.localVariables, hasLength(0)); | 2101 expect(method.localVariables, hasLength(0)); |
2087 expect(method.parameters, hasLength(0)); | 2102 expect(method.parameters, hasLength(0)); |
2088 expect(method.typeParameters, hasLength(0)); | 2103 expect(method.typeParameters, hasLength(0)); |
2089 expect(method.isAbstract, isFalse); | 2104 expect(method.isAbstract, isFalse); |
2090 expect(method.isExternal, isFalse); | 2105 expect(method.isExternal, isFalse); |
2091 expect(method.isStatic, isFalse); | 2106 expect(method.isStatic, isFalse); |
2092 expect(method.isSynthetic, isFalse); | 2107 expect(method.isSynthetic, isFalse); |
2093 } | 2108 } |
2094 | 2109 |
2095 void test_visitMethodDeclaration_operator() { | 2110 void test_visitMethodDeclaration_operator() { |
2096 // operator +(addend) {} | 2111 // operator +(addend) {} |
2097 String methodName = "+"; | 2112 String methodName = "+"; |
2098 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 2113 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
2099 null, | 2114 null, |
2100 null, | 2115 null, |
2101 null, | 2116 null, |
2102 Keyword.OPERATOR, | 2117 Keyword.OPERATOR, |
2103 AstFactory.identifier3(methodName), | 2118 AstTestFactory.identifier3(methodName), |
2104 AstFactory | 2119 AstTestFactory.formalParameterList( |
2105 .formalParameterList([AstFactory.simpleFormalParameter3("addend")]), | 2120 [AstTestFactory.simpleFormalParameter3("addend")]), |
2106 AstFactory.blockFunctionBody2()); | 2121 AstTestFactory.blockFunctionBody2()); |
2107 | 2122 |
2108 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2123 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2109 List<MethodElement> methods = holder.methods; | 2124 List<MethodElement> methods = holder.methods; |
2110 expect(methods, hasLength(1)); | 2125 expect(methods, hasLength(1)); |
2111 MethodElement method = methods[0]; | 2126 MethodElement method = methods[0]; |
2112 expect(method, isNotNull); | 2127 expect(method, isNotNull); |
2113 expect(method.hasImplicitReturnType, isTrue); | 2128 expect(method.hasImplicitReturnType, isTrue); |
2114 expect(method.name, methodName); | 2129 expect(method.name, methodName); |
2115 expect(method.functions, hasLength(0)); | 2130 expect(method.functions, hasLength(0)); |
2116 expect(method.labels, hasLength(0)); | 2131 expect(method.labels, hasLength(0)); |
2117 expect(method.localVariables, hasLength(0)); | 2132 expect(method.localVariables, hasLength(0)); |
2118 expect(method.parameters, hasLength(1)); | 2133 expect(method.parameters, hasLength(1)); |
2119 expect(method.typeParameters, hasLength(0)); | 2134 expect(method.typeParameters, hasLength(0)); |
2120 expect(method.isAbstract, isFalse); | 2135 expect(method.isAbstract, isFalse); |
2121 expect(method.isExternal, isFalse); | 2136 expect(method.isExternal, isFalse); |
2122 expect(method.isStatic, isFalse); | 2137 expect(method.isStatic, isFalse); |
2123 expect(method.isSynthetic, isFalse); | 2138 expect(method.isSynthetic, isFalse); |
2124 } | 2139 } |
2125 | 2140 |
2126 void test_visitMethodDeclaration_setter() { | 2141 void test_visitMethodDeclaration_setter() { |
2127 // set m() {} | 2142 // set m() {} |
2128 String methodName = "m"; | 2143 String methodName = "m"; |
2129 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 2144 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
2130 null, | 2145 null, |
2131 null, | 2146 null, |
2132 Keyword.SET, | 2147 Keyword.SET, |
2133 null, | 2148 null, |
2134 AstFactory.identifier3(methodName), | 2149 AstTestFactory.identifier3(methodName), |
2135 AstFactory.formalParameterList(), | 2150 AstTestFactory.formalParameterList(), |
2136 AstFactory.blockFunctionBody2()); | 2151 AstTestFactory.blockFunctionBody2()); |
2137 methodDeclaration.documentationComment = AstFactory.documentationComment( | 2152 methodDeclaration.documentationComment = AstTestFactory |
2138 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); | 2153 .documentationComment( |
| 2154 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); |
2139 methodDeclaration.endToken.offset = 80; | 2155 methodDeclaration.endToken.offset = 80; |
2140 | 2156 |
2141 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2157 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2142 List<FieldElement> fields = holder.fields; | 2158 List<FieldElement> fields = holder.fields; |
2143 expect(fields, hasLength(1)); | 2159 expect(fields, hasLength(1)); |
2144 FieldElement field = fields[0]; | 2160 FieldElement field = fields[0]; |
2145 expect(field, isNotNull); | 2161 expect(field, isNotNull); |
2146 expect(field.name, methodName); | 2162 expect(field.name, methodName); |
2147 expect(field.isSynthetic, isTrue); | 2163 expect(field.isSynthetic, isTrue); |
2148 expect(field.getter, isNull); | 2164 expect(field.getter, isNull); |
(...skipping 12 matching lines...) Expand all Loading... |
2161 expect(setter.variable, field); | 2177 expect(setter.variable, field); |
2162 expect(setter.functions, hasLength(0)); | 2178 expect(setter.functions, hasLength(0)); |
2163 expect(setter.labels, hasLength(0)); | 2179 expect(setter.labels, hasLength(0)); |
2164 expect(setter.localVariables, hasLength(0)); | 2180 expect(setter.localVariables, hasLength(0)); |
2165 expect(setter.parameters, hasLength(0)); | 2181 expect(setter.parameters, hasLength(0)); |
2166 } | 2182 } |
2167 | 2183 |
2168 void test_visitMethodDeclaration_setter_abstract() { | 2184 void test_visitMethodDeclaration_setter_abstract() { |
2169 // set m(); | 2185 // set m(); |
2170 String methodName = "m"; | 2186 String methodName = "m"; |
2171 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 2187 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
2172 null, | 2188 null, |
2173 null, | 2189 null, |
2174 Keyword.SET, | 2190 Keyword.SET, |
2175 null, | 2191 null, |
2176 AstFactory.identifier3(methodName), | 2192 AstTestFactory.identifier3(methodName), |
2177 AstFactory.formalParameterList(), | 2193 AstTestFactory.formalParameterList(), |
2178 AstFactory.emptyFunctionBody()); | 2194 AstTestFactory.emptyFunctionBody()); |
2179 | 2195 |
2180 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2196 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2181 List<FieldElement> fields = holder.fields; | 2197 List<FieldElement> fields = holder.fields; |
2182 expect(fields, hasLength(1)); | 2198 expect(fields, hasLength(1)); |
2183 FieldElement field = fields[0]; | 2199 FieldElement field = fields[0]; |
2184 expect(field, isNotNull); | 2200 expect(field, isNotNull); |
2185 expect(field.name, methodName); | 2201 expect(field.name, methodName); |
2186 expect(field.isSynthetic, isTrue); | 2202 expect(field.isSynthetic, isTrue); |
2187 expect(field.getter, isNull); | 2203 expect(field.getter, isNull); |
2188 PropertyAccessorElement setter = field.setter; | 2204 PropertyAccessorElement setter = field.setter; |
2189 expect(setter, isNotNull); | 2205 expect(setter, isNotNull); |
2190 expect(setter.hasImplicitReturnType, isTrue); | 2206 expect(setter.hasImplicitReturnType, isTrue); |
2191 expect(setter.isAbstract, isTrue); | 2207 expect(setter.isAbstract, isTrue); |
2192 expect(setter.isExternal, isFalse); | 2208 expect(setter.isExternal, isFalse); |
2193 expect(setter.isSetter, isTrue); | 2209 expect(setter.isSetter, isTrue); |
2194 expect(setter.isSynthetic, isFalse); | 2210 expect(setter.isSynthetic, isFalse); |
2195 expect(setter.name, "$methodName="); | 2211 expect(setter.name, "$methodName="); |
2196 expect(setter.displayName, methodName); | 2212 expect(setter.displayName, methodName); |
2197 expect(setter.variable, field); | 2213 expect(setter.variable, field); |
2198 expect(setter.functions, hasLength(0)); | 2214 expect(setter.functions, hasLength(0)); |
2199 expect(setter.labels, hasLength(0)); | 2215 expect(setter.labels, hasLength(0)); |
2200 expect(setter.localVariables, hasLength(0)); | 2216 expect(setter.localVariables, hasLength(0)); |
2201 expect(setter.parameters, hasLength(0)); | 2217 expect(setter.parameters, hasLength(0)); |
2202 } | 2218 } |
2203 | 2219 |
2204 void test_visitMethodDeclaration_setter_external() { | 2220 void test_visitMethodDeclaration_setter_external() { |
2205 // external m(); | 2221 // external m(); |
2206 String methodName = "m"; | 2222 String methodName = "m"; |
2207 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration( | 2223 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration( |
2208 null, | 2224 null, |
2209 null, | 2225 null, |
2210 Keyword.SET, | 2226 Keyword.SET, |
2211 null, | 2227 null, |
2212 AstFactory.identifier3(methodName), | 2228 AstTestFactory.identifier3(methodName), |
2213 AstFactory.formalParameterList()); | 2229 AstTestFactory.formalParameterList()); |
2214 methodDeclaration.externalKeyword = | 2230 methodDeclaration.externalKeyword = |
2215 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); | 2231 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); |
2216 | 2232 |
2217 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2233 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2218 List<FieldElement> fields = holder.fields; | 2234 List<FieldElement> fields = holder.fields; |
2219 expect(fields, hasLength(1)); | 2235 expect(fields, hasLength(1)); |
2220 FieldElement field = fields[0]; | 2236 FieldElement field = fields[0]; |
2221 expect(field, isNotNull); | 2237 expect(field, isNotNull); |
2222 expect(field.name, methodName); | 2238 expect(field.name, methodName); |
2223 expect(field.isSynthetic, isTrue); | 2239 expect(field.isSynthetic, isTrue); |
(...skipping 10 matching lines...) Expand all Loading... |
2234 expect(setter.variable, field); | 2250 expect(setter.variable, field); |
2235 expect(setter.functions, hasLength(0)); | 2251 expect(setter.functions, hasLength(0)); |
2236 expect(setter.labels, hasLength(0)); | 2252 expect(setter.labels, hasLength(0)); |
2237 expect(setter.localVariables, hasLength(0)); | 2253 expect(setter.localVariables, hasLength(0)); |
2238 expect(setter.parameters, hasLength(0)); | 2254 expect(setter.parameters, hasLength(0)); |
2239 } | 2255 } |
2240 | 2256 |
2241 void test_visitMethodDeclaration_static() { | 2257 void test_visitMethodDeclaration_static() { |
2242 // static m() {} | 2258 // static m() {} |
2243 String methodName = "m"; | 2259 String methodName = "m"; |
2244 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 2260 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
2245 Keyword.STATIC, | 2261 Keyword.STATIC, |
2246 null, | 2262 null, |
2247 null, | 2263 null, |
2248 null, | 2264 null, |
2249 AstFactory.identifier3(methodName), | 2265 AstTestFactory.identifier3(methodName), |
2250 AstFactory.formalParameterList(), | 2266 AstTestFactory.formalParameterList(), |
2251 AstFactory.blockFunctionBody2()); | 2267 AstTestFactory.blockFunctionBody2()); |
2252 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2268 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2253 List<MethodElement> methods = holder.methods; | 2269 List<MethodElement> methods = holder.methods; |
2254 expect(methods, hasLength(1)); | 2270 expect(methods, hasLength(1)); |
2255 MethodElement method = methods[0]; | 2271 MethodElement method = methods[0]; |
2256 expect(method, isNotNull); | 2272 expect(method, isNotNull); |
2257 expect(method.hasImplicitReturnType, isTrue); | 2273 expect(method.hasImplicitReturnType, isTrue); |
2258 expect(method.name, methodName); | 2274 expect(method.name, methodName); |
2259 expect(method.functions, hasLength(0)); | 2275 expect(method.functions, hasLength(0)); |
2260 expect(method.labels, hasLength(0)); | 2276 expect(method.labels, hasLength(0)); |
2261 expect(method.localVariables, hasLength(0)); | 2277 expect(method.localVariables, hasLength(0)); |
2262 expect(method.parameters, hasLength(0)); | 2278 expect(method.parameters, hasLength(0)); |
2263 expect(method.typeParameters, hasLength(0)); | 2279 expect(method.typeParameters, hasLength(0)); |
2264 expect(method.isAbstract, isFalse); | 2280 expect(method.isAbstract, isFalse); |
2265 expect(method.isExternal, isFalse); | 2281 expect(method.isExternal, isFalse); |
2266 expect(method.isStatic, isTrue); | 2282 expect(method.isStatic, isTrue); |
2267 expect(method.isSynthetic, isFalse); | 2283 expect(method.isSynthetic, isFalse); |
2268 } | 2284 } |
2269 | 2285 |
2270 void test_visitMethodDeclaration_typeParameters() { | 2286 void test_visitMethodDeclaration_typeParameters() { |
2271 // m<E>() {} | 2287 // m<E>() {} |
2272 String methodName = "m"; | 2288 String methodName = "m"; |
2273 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( | 2289 MethodDeclaration methodDeclaration = AstTestFactory.methodDeclaration2( |
2274 null, | 2290 null, |
2275 null, | 2291 null, |
2276 null, | 2292 null, |
2277 null, | 2293 null, |
2278 AstFactory.identifier3(methodName), | 2294 AstTestFactory.identifier3(methodName), |
2279 AstFactory.formalParameterList(), | 2295 AstTestFactory.formalParameterList(), |
2280 AstFactory.blockFunctionBody2()); | 2296 AstTestFactory.blockFunctionBody2()); |
2281 methodDeclaration.typeParameters = AstFactory.typeParameterList(['E']); | 2297 methodDeclaration.typeParameters = AstTestFactory.typeParameterList(['E']); |
2282 | 2298 |
2283 ElementHolder holder = buildElementsForAst(methodDeclaration); | 2299 ElementHolder holder = buildElementsForAst(methodDeclaration); |
2284 List<MethodElement> methods = holder.methods; | 2300 List<MethodElement> methods = holder.methods; |
2285 expect(methods, hasLength(1)); | 2301 expect(methods, hasLength(1)); |
2286 MethodElement method = methods[0]; | 2302 MethodElement method = methods[0]; |
2287 expect(method, isNotNull); | 2303 expect(method, isNotNull); |
2288 expect(method.hasImplicitReturnType, isTrue); | 2304 expect(method.hasImplicitReturnType, isTrue); |
2289 expect(method.name, methodName); | 2305 expect(method.name, methodName); |
2290 expect(method.functions, hasLength(0)); | 2306 expect(method.functions, hasLength(0)); |
2291 expect(method.labels, hasLength(0)); | 2307 expect(method.labels, hasLength(0)); |
2292 expect(method.localVariables, hasLength(0)); | 2308 expect(method.localVariables, hasLength(0)); |
2293 expect(method.parameters, hasLength(0)); | 2309 expect(method.parameters, hasLength(0)); |
2294 expect(method.typeParameters, hasLength(1)); | 2310 expect(method.typeParameters, hasLength(1)); |
2295 expect(method.isAbstract, isFalse); | 2311 expect(method.isAbstract, isFalse); |
2296 expect(method.isExternal, isFalse); | 2312 expect(method.isExternal, isFalse); |
2297 expect(method.isStatic, isFalse); | 2313 expect(method.isStatic, isFalse); |
2298 expect(method.isSynthetic, isFalse); | 2314 expect(method.isSynthetic, isFalse); |
2299 } | 2315 } |
2300 | 2316 |
2301 void test_visitTypeAlias_minimal() { | 2317 void test_visitTypeAlias_minimal() { |
2302 String aliasName = "F"; | 2318 String aliasName = "F"; |
2303 TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, null, null); | 2319 TypeAlias typeAlias = AstTestFactory.typeAlias(null, aliasName, null, null); |
2304 ElementHolder holder = buildElementsForAst(typeAlias); | 2320 ElementHolder holder = buildElementsForAst(typeAlias); |
2305 List<FunctionTypeAliasElement> aliases = holder.typeAliases; | 2321 List<FunctionTypeAliasElement> aliases = holder.typeAliases; |
2306 expect(aliases, hasLength(1)); | 2322 expect(aliases, hasLength(1)); |
2307 FunctionTypeAliasElement alias = aliases[0]; | 2323 FunctionTypeAliasElement alias = aliases[0]; |
2308 expect(alias, isNotNull); | 2324 expect(alias, isNotNull); |
2309 expect(alias.name, aliasName); | 2325 expect(alias.name, aliasName); |
2310 expect(alias.type, isNotNull); | 2326 expect(alias.type, isNotNull); |
2311 expect(alias.isSynthetic, isFalse); | 2327 expect(alias.isSynthetic, isFalse); |
2312 } | 2328 } |
2313 | 2329 |
2314 void test_visitTypeAlias_withFormalParameters() { | 2330 void test_visitTypeAlias_withFormalParameters() { |
2315 String aliasName = "F"; | 2331 String aliasName = "F"; |
2316 String firstParameterName = "x"; | 2332 String firstParameterName = "x"; |
2317 String secondParameterName = "y"; | 2333 String secondParameterName = "y"; |
2318 TypeAlias typeAlias = AstFactory.typeAlias( | 2334 TypeAlias typeAlias = AstTestFactory.typeAlias( |
2319 null, | 2335 null, |
2320 aliasName, | 2336 aliasName, |
2321 AstFactory.typeParameterList(), | 2337 AstTestFactory.typeParameterList(), |
2322 AstFactory.formalParameterList([ | 2338 AstTestFactory.formalParameterList([ |
2323 AstFactory.simpleFormalParameter3(firstParameterName), | 2339 AstTestFactory.simpleFormalParameter3(firstParameterName), |
2324 AstFactory.simpleFormalParameter3(secondParameterName) | 2340 AstTestFactory.simpleFormalParameter3(secondParameterName) |
2325 ])); | 2341 ])); |
2326 typeAlias.beginToken.offset = 50; | 2342 typeAlias.beginToken.offset = 50; |
2327 typeAlias.endToken.offset = 80; | 2343 typeAlias.endToken.offset = 80; |
2328 ElementHolder holder = buildElementsForAst(typeAlias); | 2344 ElementHolder holder = buildElementsForAst(typeAlias); |
2329 List<FunctionTypeAliasElement> aliases = holder.typeAliases; | 2345 List<FunctionTypeAliasElement> aliases = holder.typeAliases; |
2330 expect(aliases, hasLength(1)); | 2346 expect(aliases, hasLength(1)); |
2331 FunctionTypeAliasElement alias = aliases[0]; | 2347 FunctionTypeAliasElement alias = aliases[0]; |
2332 expect(alias, isNotNull); | 2348 expect(alias, isNotNull); |
2333 assertHasCodeRange(alias, 50, 31); | 2349 assertHasCodeRange(alias, 50, 31); |
2334 expect(alias.name, aliasName); | 2350 expect(alias.name, aliasName); |
2335 expect(alias.type, isNotNull); | 2351 expect(alias.type, isNotNull); |
2336 expect(alias.isSynthetic, isFalse); | 2352 expect(alias.isSynthetic, isFalse); |
2337 List<VariableElement> parameters = alias.parameters; | 2353 List<VariableElement> parameters = alias.parameters; |
2338 expect(parameters, hasLength(2)); | 2354 expect(parameters, hasLength(2)); |
2339 expect(parameters[0].name, firstParameterName); | 2355 expect(parameters[0].name, firstParameterName); |
2340 expect(parameters[1].name, secondParameterName); | 2356 expect(parameters[1].name, secondParameterName); |
2341 List<TypeParameterElement> typeParameters = alias.typeParameters; | 2357 List<TypeParameterElement> typeParameters = alias.typeParameters; |
2342 expect(typeParameters, isNotNull); | 2358 expect(typeParameters, isNotNull); |
2343 expect(typeParameters, hasLength(0)); | 2359 expect(typeParameters, hasLength(0)); |
2344 } | 2360 } |
2345 | 2361 |
2346 void test_visitTypeAlias_withTypeParameters() { | 2362 void test_visitTypeAlias_withTypeParameters() { |
2347 String aliasName = "F"; | 2363 String aliasName = "F"; |
2348 String firstTypeParameterName = "A"; | 2364 String firstTypeParameterName = "A"; |
2349 String secondTypeParameterName = "B"; | 2365 String secondTypeParameterName = "B"; |
2350 TypeAlias typeAlias = AstFactory.typeAlias( | 2366 TypeAlias typeAlias = AstTestFactory.typeAlias( |
2351 null, | 2367 null, |
2352 aliasName, | 2368 aliasName, |
2353 AstFactory.typeParameterList( | 2369 AstTestFactory.typeParameterList( |
2354 [firstTypeParameterName, secondTypeParameterName]), | 2370 [firstTypeParameterName, secondTypeParameterName]), |
2355 AstFactory.formalParameterList()); | 2371 AstTestFactory.formalParameterList()); |
2356 ElementHolder holder = buildElementsForAst(typeAlias); | 2372 ElementHolder holder = buildElementsForAst(typeAlias); |
2357 List<FunctionTypeAliasElement> aliases = holder.typeAliases; | 2373 List<FunctionTypeAliasElement> aliases = holder.typeAliases; |
2358 expect(aliases, hasLength(1)); | 2374 expect(aliases, hasLength(1)); |
2359 FunctionTypeAliasElement alias = aliases[0]; | 2375 FunctionTypeAliasElement alias = aliases[0]; |
2360 expect(alias, isNotNull); | 2376 expect(alias, isNotNull); |
2361 expect(alias.name, aliasName); | 2377 expect(alias.name, aliasName); |
2362 expect(alias.type, isNotNull); | 2378 expect(alias.type, isNotNull); |
2363 expect(alias.isSynthetic, isFalse); | 2379 expect(alias.isSynthetic, isFalse); |
2364 List<VariableElement> parameters = alias.parameters; | 2380 List<VariableElement> parameters = alias.parameters; |
2365 expect(parameters, isNotNull); | 2381 expect(parameters, isNotNull); |
2366 expect(parameters, hasLength(0)); | 2382 expect(parameters, hasLength(0)); |
2367 List<TypeParameterElement> typeParameters = alias.typeParameters; | 2383 List<TypeParameterElement> typeParameters = alias.typeParameters; |
2368 expect(typeParameters, hasLength(2)); | 2384 expect(typeParameters, hasLength(2)); |
2369 expect(typeParameters[0].name, firstTypeParameterName); | 2385 expect(typeParameters[0].name, firstTypeParameterName); |
2370 expect(typeParameters[1].name, secondTypeParameterName); | 2386 expect(typeParameters[1].name, secondTypeParameterName); |
2371 } | 2387 } |
2372 | 2388 |
2373 void test_visitTypeParameter() { | 2389 void test_visitTypeParameter() { |
2374 String parameterName = "E"; | 2390 String parameterName = "E"; |
2375 TypeParameter typeParameter = AstFactory.typeParameter(parameterName); | 2391 TypeParameter typeParameter = AstTestFactory.typeParameter(parameterName); |
2376 typeParameter.beginToken.offset = 50; | 2392 typeParameter.beginToken.offset = 50; |
2377 ElementHolder holder = buildElementsForAst(typeParameter); | 2393 ElementHolder holder = buildElementsForAst(typeParameter); |
2378 List<TypeParameterElement> typeParameters = holder.typeParameters; | 2394 List<TypeParameterElement> typeParameters = holder.typeParameters; |
2379 expect(typeParameters, hasLength(1)); | 2395 expect(typeParameters, hasLength(1)); |
2380 TypeParameterElement typeParameterElement = typeParameters[0]; | 2396 TypeParameterElement typeParameterElement = typeParameters[0]; |
2381 expect(typeParameterElement, isNotNull); | 2397 expect(typeParameterElement, isNotNull); |
2382 assertHasCodeRange(typeParameterElement, 50, 1); | 2398 assertHasCodeRange(typeParameterElement, 50, 1); |
2383 expect(typeParameterElement.name, parameterName); | 2399 expect(typeParameterElement.name, parameterName); |
2384 expect(typeParameterElement.bound, isNull); | 2400 expect(typeParameterElement.bound, isNull); |
2385 expect(typeParameterElement.isSynthetic, isFalse); | 2401 expect(typeParameterElement.isSynthetic, isFalse); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2468 AnalysisEngine.instance.logger = logger; | 2484 AnalysisEngine.instance.logger = logger; |
2469 try { | 2485 try { |
2470 _compilationUnit = ParserTestCase.parseCompilationUnit(code); | 2486 _compilationUnit = ParserTestCase.parseCompilationUnit(code); |
2471 compilationUnit.accept(visitor); | 2487 compilationUnit.accept(visitor); |
2472 } finally { | 2488 } finally { |
2473 expect(logger.log, hasLength(0)); | 2489 expect(logger.log, hasLength(0)); |
2474 AnalysisEngine.instance.logger = Logger.NULL; | 2490 AnalysisEngine.instance.logger = Logger.NULL; |
2475 } | 2491 } |
2476 } | 2492 } |
2477 } | 2493 } |
OLD | NEW |