Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: pkg/analyzer/test/generated/all_the_rest_test.dart

Issue 1289283004: Initial steps toward adding strong mode to the new task model (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 engine.all_the_rest_test; 5 library engine.all_the_rest_test;
6 6
7 import 'package:analyzer/file_system/physical_file_system.dart'; 7 import 'package:analyzer/file_system/physical_file_system.dart';
8 import 'package:analyzer/src/generated/ast.dart' hide ConstantEvaluator; 8 import 'package:analyzer/src/generated/ast.dart' hide ConstantEvaluator;
9 import 'package:analyzer/src/generated/constant.dart'; 9 import 'package:analyzer/src/generated/constant.dart';
10 import 'package:analyzer/src/generated/element.dart'; 10 import 'package:analyzer/src/generated/element.dart';
(...skipping 4956 matching lines...) Expand 10 before | Expand all | Expand 10 after
4967 new DirectoryBasedSourceContainer.con1(dir); 4967 new DirectoryBasedSourceContainer.con1(dir);
4968 expect(container.contains(source1), isTrue); 4968 expect(container.contains(source1), isTrue);
4969 expect(container.contains(source2), isTrue); 4969 expect(container.contains(source2), isTrue);
4970 expect(container.contains(source3), isFalse); 4970 expect(container.contains(source3), isFalse);
4971 } 4971 }
4972 } 4972 }
4973 4973
4974 @reflectiveTest 4974 @reflectiveTest
4975 class ElementBuilderTest extends EngineTestCase { 4975 class ElementBuilderTest extends EngineTestCase {
4976 void test_visitCatchClause() { 4976 void test_visitCatchClause() {
4977 // } catch (e, s) {
4977 ElementHolder holder = new ElementHolder(); 4978 ElementHolder holder = new ElementHolder();
4978 ElementBuilder builder = new ElementBuilder(holder); 4979 ElementBuilder builder = new ElementBuilder(holder);
4979 String exceptionParameterName = "e"; 4980 String exceptionParameterName = "e";
4980 String stackParameterName = "s"; 4981 String stackParameterName = "s";
4981 CatchClause clause = 4982 CatchClause clause =
4982 AstFactory.catchClause2(exceptionParameterName, stackParameterName); 4983 AstFactory.catchClause2(exceptionParameterName, stackParameterName);
4983 clause.accept(builder); 4984 clause.accept(builder);
4985
4984 List<LocalVariableElement> variables = holder.localVariables; 4986 List<LocalVariableElement> variables = holder.localVariables;
4985 expect(variables, hasLength(2)); 4987 expect(variables, hasLength(2));
4986 VariableElement exceptionVariable = variables[0]; 4988 VariableElement exceptionVariable = variables[0];
4987 expect(exceptionVariable, isNotNull); 4989 expect(exceptionVariable, isNotNull);
4988 expect(exceptionVariable.name, exceptionParameterName); 4990 expect(exceptionVariable.name, exceptionParameterName);
4991 expect(exceptionVariable.hasImplicitType, isTrue);
4989 expect(exceptionVariable.isSynthetic, isFalse); 4992 expect(exceptionVariable.isSynthetic, isFalse);
4990 expect(exceptionVariable.isConst, isFalse); 4993 expect(exceptionVariable.isConst, isFalse);
4991 expect(exceptionVariable.isFinal, isFalse); 4994 expect(exceptionVariable.isFinal, isFalse);
4992 expect(exceptionVariable.initializer, isNull); 4995 expect(exceptionVariable.initializer, isNull);
4993 VariableElement stackVariable = variables[1]; 4996 VariableElement stackVariable = variables[1];
4994 expect(stackVariable, isNotNull); 4997 expect(stackVariable, isNotNull);
4995 expect(stackVariable.name, stackParameterName); 4998 expect(stackVariable.name, stackParameterName);
4996 expect(stackVariable.isSynthetic, isFalse); 4999 expect(stackVariable.isSynthetic, isFalse);
4997 expect(stackVariable.isConst, isFalse); 5000 expect(stackVariable.isConst, isFalse);
4998 expect(stackVariable.isFinal, isFalse); 5001 expect(stackVariable.isFinal, isFalse);
4999 expect(stackVariable.initializer, isNull); 5002 expect(stackVariable.initializer, isNull);
5000 } 5003 }
5001 5004
5005 void test_visitCatchClause_withType() {
5006 // } on E catch (e) {
5007 ElementHolder holder = new ElementHolder();
5008 ElementBuilder builder = new ElementBuilder(holder);
5009 String exceptionParameterName = "e";
5010 CatchClause clause = AstFactory.catchClause4(
5011 AstFactory.typeName4('E'), exceptionParameterName);
5012 clause.accept(builder);
5013
5014 List<LocalVariableElement> variables = holder.localVariables;
5015 expect(variables, hasLength(1));
5016 VariableElement exceptionVariable = variables[0];
5017 expect(exceptionVariable, isNotNull);
5018 expect(exceptionVariable.name, exceptionParameterName);
5019 expect(exceptionVariable.hasImplicitType, isFalse);
5020 }
5021
5002 void test_visitClassDeclaration_abstract() { 5022 void test_visitClassDeclaration_abstract() {
5003 ElementHolder holder = new ElementHolder(); 5023 ElementHolder holder = new ElementHolder();
5004 ElementBuilder builder = new ElementBuilder(holder); 5024 ElementBuilder builder = new ElementBuilder(holder);
5005 String className = "C"; 5025 String className = "C";
5006 ClassDeclaration classDeclaration = AstFactory.classDeclaration( 5026 ClassDeclaration classDeclaration = AstFactory.classDeclaration(
5007 Keyword.ABSTRACT, className, null, null, null, null); 5027 Keyword.ABSTRACT, className, null, null, null, null);
5008 classDeclaration.accept(builder); 5028 classDeclaration.accept(builder);
5009 List<ClassElement> types = holder.types; 5029 List<ClassElement> types = holder.types;
5010 expect(types, hasLength(1)); 5030 expect(types, hasLength(1));
5011 ClassElement type = types[0]; 5031 ClassElement type = types[0];
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
5333 expect(constructor.isExternal, isFalse); 5353 expect(constructor.isExternal, isFalse);
5334 expect(constructor.isFactory, isFalse); 5354 expect(constructor.isFactory, isFalse);
5335 expect(constructor.name, ""); 5355 expect(constructor.name, "");
5336 expect(constructor.functions, hasLength(0)); 5356 expect(constructor.functions, hasLength(0));
5337 expect(constructor.labels, hasLength(0)); 5357 expect(constructor.labels, hasLength(0));
5338 expect(constructor.localVariables, hasLength(0)); 5358 expect(constructor.localVariables, hasLength(0));
5339 expect(constructor.parameters, hasLength(0)); 5359 expect(constructor.parameters, hasLength(0));
5340 expect(constructorDeclaration.element, same(constructor)); 5360 expect(constructorDeclaration.element, same(constructor));
5341 } 5361 }
5342 5362
5363 void test_visitDeclaredIdentifier_noType() {
5364 // var i
5365 ElementHolder holder = new ElementHolder();
5366 ElementBuilder builder = new ElementBuilder(holder);
5367 var variableName = 'i';
5368 DeclaredIdentifier identifier =
5369 AstFactory.declaredIdentifier3(variableName);
5370 AstFactory.forEachStatement(
5371 identifier, AstFactory.nullLiteral(), AstFactory.emptyStatement());
5372 identifier.accept(builder);
5373
5374 List<LocalVariableElement> variables = holder.localVariables;
5375 expect(variables, hasLength(1));
5376 LocalVariableElement variable = variables[0];
5377 expect(variable, isNotNull);
5378 expect(variable.hasImplicitType, isTrue);
5379 expect(variable.isConst, isFalse);
5380 expect(variable.isDeprecated, isFalse);
5381 expect(variable.isFinal, isFalse);
5382 expect(variable.isOverride, isFalse);
5383 expect(variable.isPrivate, isFalse);
5384 expect(variable.isPublic, isTrue);
5385 expect(variable.isSynthetic, isFalse);
5386 expect(variable.name, variableName);
5387 }
5388
5389 void test_visitDeclaredIdentifier_type() {
5390 // E i
5391 ElementHolder holder = new ElementHolder();
5392 ElementBuilder builder = new ElementBuilder(holder);
5393 var variableName = 'i';
5394 DeclaredIdentifier identifier =
5395 AstFactory.declaredIdentifier4(AstFactory.typeName4('E'), variableName);
5396 AstFactory.forEachStatement(
5397 identifier, AstFactory.nullLiteral(), AstFactory.emptyStatement());
5398 identifier.accept(builder);
5399
5400 List<LocalVariableElement> variables = holder.localVariables;
5401 expect(variables, hasLength(1));
5402 LocalVariableElement variable = variables[0];
5403 expect(variable, isNotNull);
5404 expect(variable.hasImplicitType, isFalse);
5405 expect(variable.isConst, isFalse);
5406 expect(variable.isDeprecated, isFalse);
5407 expect(variable.isFinal, isFalse);
5408 expect(variable.isOverride, isFalse);
5409 expect(variable.isPrivate, isFalse);
5410 expect(variable.isPublic, isTrue);
5411 expect(variable.isSynthetic, isFalse);
5412 expect(variable.name, variableName);
5413 }
5414
5415 void test_visitDefaultFormalParameter_noType() {
5416 // p = 0
5417 ElementHolder holder = new ElementHolder();
5418 ElementBuilder builder = new ElementBuilder(holder);
5419 String parameterName = 'p';
5420 DefaultFormalParameter formalParameter = AstFactory
5421 .positionalFormalParameter(
5422 AstFactory.simpleFormalParameter3(parameterName),
5423 AstFactory.integer(0));
5424 formalParameter.accept(builder);
5425
5426 List<ParameterElement> parameters = holder.parameters;
5427 expect(parameters, hasLength(1));
5428 ParameterElement parameter = parameters[0];
5429 expect(parameter.hasImplicitType, isTrue);
5430 expect(parameter.isConst, isFalse);
5431 expect(parameter.isDeprecated, isFalse);
5432 expect(parameter.isFinal, isFalse);
5433 expect(parameter.isInitializingFormal, isFalse);
5434 expect(parameter.isOverride, isFalse);
5435 expect(parameter.isPrivate, isFalse);
5436 expect(parameter.isPublic, isTrue);
5437 expect(parameter.isSynthetic, isFalse);
5438 expect(parameter.name, parameterName);
5439 }
5440
5441 void test_visitDefaultFormalParameter_type() {
5442 // E p = 0
5443 ElementHolder holder = new ElementHolder();
5444 ElementBuilder builder = new ElementBuilder(holder);
5445 String parameterName = 'p';
5446 DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter(
5447 AstFactory.simpleFormalParameter4(
5448 AstFactory.typeName4('E'), parameterName),
5449 AstFactory.integer(0));
5450 formalParameter.accept(builder);
5451
5452 List<ParameterElement> parameters = holder.parameters;
5453 expect(parameters, hasLength(1));
5454 ParameterElement parameter = parameters[0];
5455 expect(parameter.hasImplicitType, isFalse);
5456 expect(parameter.isConst, isFalse);
5457 expect(parameter.isDeprecated, isFalse);
5458 expect(parameter.isFinal, isFalse);
5459 expect(parameter.isInitializingFormal, isFalse);
5460 expect(parameter.isOverride, isFalse);
5461 expect(parameter.isPrivate, isFalse);
5462 expect(parameter.isPublic, isTrue);
5463 expect(parameter.isSynthetic, isFalse);
5464 expect(parameter.name, parameterName);
5465 }
5466
5343 void test_visitEnumDeclaration() { 5467 void test_visitEnumDeclaration() {
5344 ElementHolder holder = new ElementHolder(); 5468 ElementHolder holder = new ElementHolder();
5345 ElementBuilder builder = new ElementBuilder(holder); 5469 ElementBuilder builder = new ElementBuilder(holder);
5346 String enumName = "E"; 5470 String enumName = "E";
5347 EnumDeclaration enumDeclaration = 5471 EnumDeclaration enumDeclaration =
5348 AstFactory.enumDeclaration2(enumName, ["ONE"]); 5472 AstFactory.enumDeclaration2(enumName, ["ONE"]);
5349 enumDeclaration.accept(builder); 5473 enumDeclaration.accept(builder);
5350 List<ClassElement> enums = holder.enums; 5474 List<ClassElement> enums = holder.enums;
5351 expect(enums, hasLength(1)); 5475 expect(enums, hasLength(1));
5352 ClassElement enumElement = enums[0]; 5476 ClassElement enumElement = enums[0];
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
5437 AstFactory.simpleFormalParameter3(secondParameterName) 5561 AstFactory.simpleFormalParameter3(secondParameterName)
5438 ]); 5562 ]);
5439 parameterList.accept(builder); 5563 parameterList.accept(builder);
5440 List<ParameterElement> parameters = holder.parameters; 5564 List<ParameterElement> parameters = holder.parameters;
5441 expect(parameters, hasLength(2)); 5565 expect(parameters, hasLength(2));
5442 expect(parameters[0].name, firstParameterName); 5566 expect(parameters[0].name, firstParameterName);
5443 expect(parameters[1].name, secondParameterName); 5567 expect(parameters[1].name, secondParameterName);
5444 } 5568 }
5445 5569
5446 void test_visitFunctionDeclaration_external() { 5570 void test_visitFunctionDeclaration_external() {
5571 // external f();
5447 ElementHolder holder = new ElementHolder(); 5572 ElementHolder holder = new ElementHolder();
5448 ElementBuilder builder = new ElementBuilder(holder); 5573 ElementBuilder builder = new ElementBuilder(holder);
5449 String functionName = "f"; 5574 String functionName = "f";
5450 FunctionDeclaration declaration = AstFactory.functionDeclaration( 5575 FunctionDeclaration declaration = AstFactory.functionDeclaration(
5451 null, 5576 null,
5452 null, 5577 null,
5453 functionName, 5578 functionName,
5454 AstFactory.functionExpression2( 5579 AstFactory.functionExpression2(
5455 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); 5580 AstFactory.formalParameterList(), AstFactory.emptyFunctionBody()));
5456 declaration.externalKeyword = 5581 declaration.externalKeyword =
5457 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); 5582 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
5458 declaration.accept(builder); 5583 declaration.accept(builder);
5584
5459 List<FunctionElement> functions = holder.functions; 5585 List<FunctionElement> functions = holder.functions;
5460 expect(functions, hasLength(1)); 5586 expect(functions, hasLength(1));
5461 FunctionElement function = functions[0]; 5587 FunctionElement function = functions[0];
5462 expect(function, isNotNull); 5588 expect(function, isNotNull);
5463 expect(function.name, functionName); 5589 expect(function.name, functionName);
5464 expect(declaration.element, same(function)); 5590 expect(declaration.element, same(function));
5465 expect(declaration.functionExpression.element, same(function)); 5591 expect(declaration.functionExpression.element, same(function));
5592 expect(function.hasImplicitReturnType, isTrue);
5466 expect(function.isExternal, isTrue); 5593 expect(function.isExternal, isTrue);
5467 expect(function.isSynthetic, isFalse); 5594 expect(function.isSynthetic, isFalse);
5468 expect(function.typeParameters, hasLength(0)); 5595 expect(function.typeParameters, hasLength(0));
5469 } 5596 }
5470 5597
5471 void test_visitFunctionDeclaration_getter() { 5598 void test_visitFunctionDeclaration_getter() {
5599 // get f() {}
5472 ElementHolder holder = new ElementHolder(); 5600 ElementHolder holder = new ElementHolder();
5473 ElementBuilder builder = new ElementBuilder(holder); 5601 ElementBuilder builder = new ElementBuilder(holder);
5474 String functionName = "f"; 5602 String functionName = "f";
5475 FunctionDeclaration declaration = AstFactory.functionDeclaration( 5603 FunctionDeclaration declaration = AstFactory.functionDeclaration(
5476 null, 5604 null,
5477 Keyword.GET, 5605 Keyword.GET,
5478 functionName, 5606 functionName,
5479 AstFactory.functionExpression2( 5607 AstFactory.functionExpression2(
5480 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); 5608 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
5481 declaration.accept(builder); 5609 declaration.accept(builder);
5610
5482 List<PropertyAccessorElement> accessors = holder.accessors; 5611 List<PropertyAccessorElement> accessors = holder.accessors;
5483 expect(accessors, hasLength(1)); 5612 expect(accessors, hasLength(1));
5484 PropertyAccessorElement accessor = accessors[0]; 5613 PropertyAccessorElement accessor = accessors[0];
5485 expect(accessor, isNotNull); 5614 expect(accessor, isNotNull);
5486 expect(accessor.name, functionName); 5615 expect(accessor.name, functionName);
5487 expect(declaration.element, same(accessor)); 5616 expect(declaration.element, same(accessor));
5488 expect(declaration.functionExpression.element, same(accessor)); 5617 expect(declaration.functionExpression.element, same(accessor));
5618 expect(accessor.hasImplicitReturnType, isTrue);
5489 expect(accessor.isGetter, isTrue); 5619 expect(accessor.isGetter, isTrue);
5490 expect(accessor.isExternal, isFalse); 5620 expect(accessor.isExternal, isFalse);
5491 expect(accessor.isSetter, isFalse); 5621 expect(accessor.isSetter, isFalse);
5492 expect(accessor.isSynthetic, isFalse); 5622 expect(accessor.isSynthetic, isFalse);
5493 expect(accessor.typeParameters, hasLength(0)); 5623 expect(accessor.typeParameters, hasLength(0));
5494 PropertyInducingElement variable = accessor.variable; 5624 PropertyInducingElement variable = accessor.variable;
5495 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, 5625 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement,
5496 TopLevelVariableElement, variable); 5626 TopLevelVariableElement, variable);
5497 expect(variable.isSynthetic, isTrue); 5627 expect(variable.isSynthetic, isTrue);
5498 } 5628 }
5499 5629
5500 void test_visitFunctionDeclaration_plain() { 5630 void test_visitFunctionDeclaration_plain() {
5631 // T f() {}
5501 ElementHolder holder = new ElementHolder(); 5632 ElementHolder holder = new ElementHolder();
5502 ElementBuilder builder = new ElementBuilder(holder); 5633 ElementBuilder builder = new ElementBuilder(holder);
5503 String functionName = "f"; 5634 String functionName = "f";
5504 FunctionDeclaration declaration = AstFactory.functionDeclaration( 5635 FunctionDeclaration declaration = AstFactory.functionDeclaration(
5505 null, 5636 AstFactory.typeName4('T'),
5506 null, 5637 null,
5507 functionName, 5638 functionName,
5508 AstFactory.functionExpression2( 5639 AstFactory.functionExpression2(
5509 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); 5640 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
5510 declaration.accept(builder); 5641 declaration.accept(builder);
5642
5511 List<FunctionElement> functions = holder.functions; 5643 List<FunctionElement> functions = holder.functions;
5512 expect(functions, hasLength(1)); 5644 expect(functions, hasLength(1));
5513 FunctionElement function = functions[0]; 5645 FunctionElement function = functions[0];
5514 expect(function, isNotNull); 5646 expect(function, isNotNull);
5647 expect(function.hasImplicitReturnType, isFalse);
5515 expect(function.name, functionName); 5648 expect(function.name, functionName);
5516 expect(declaration.element, same(function)); 5649 expect(declaration.element, same(function));
5517 expect(declaration.functionExpression.element, same(function)); 5650 expect(declaration.functionExpression.element, same(function));
5518 expect(function.isExternal, isFalse); 5651 expect(function.isExternal, isFalse);
5519 expect(function.isSynthetic, isFalse); 5652 expect(function.isSynthetic, isFalse);
5520 expect(function.typeParameters, hasLength(0)); 5653 expect(function.typeParameters, hasLength(0));
5521 } 5654 }
5522 5655
5523 void test_visitFunctionDeclaration_setter() { 5656 void test_visitFunctionDeclaration_setter() {
5657 // set f() {}
5524 ElementHolder holder = new ElementHolder(); 5658 ElementHolder holder = new ElementHolder();
5525 ElementBuilder builder = new ElementBuilder(holder); 5659 ElementBuilder builder = new ElementBuilder(holder);
5526 String functionName = "f"; 5660 String functionName = "f";
5527 FunctionDeclaration declaration = AstFactory.functionDeclaration( 5661 FunctionDeclaration declaration = AstFactory.functionDeclaration(
5528 null, 5662 null,
5529 Keyword.SET, 5663 Keyword.SET,
5530 functionName, 5664 functionName,
5531 AstFactory.functionExpression2( 5665 AstFactory.functionExpression2(
5532 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); 5666 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
5533 declaration.accept(builder); 5667 declaration.accept(builder);
5668
5534 List<PropertyAccessorElement> accessors = holder.accessors; 5669 List<PropertyAccessorElement> accessors = holder.accessors;
5535 expect(accessors, hasLength(1)); 5670 expect(accessors, hasLength(1));
5536 PropertyAccessorElement accessor = accessors[0]; 5671 PropertyAccessorElement accessor = accessors[0];
5537 expect(accessor, isNotNull); 5672 expect(accessor, isNotNull);
5673 expect(accessor.hasImplicitReturnType, isFalse);
5538 expect(accessor.name, "$functionName="); 5674 expect(accessor.name, "$functionName=");
5539 expect(declaration.element, same(accessor)); 5675 expect(declaration.element, same(accessor));
5540 expect(declaration.functionExpression.element, same(accessor)); 5676 expect(declaration.functionExpression.element, same(accessor));
5541 expect(accessor.isGetter, isFalse); 5677 expect(accessor.isGetter, isFalse);
5542 expect(accessor.isExternal, isFalse); 5678 expect(accessor.isExternal, isFalse);
5543 expect(accessor.isSetter, isTrue); 5679 expect(accessor.isSetter, isTrue);
5544 expect(accessor.isSynthetic, isFalse); 5680 expect(accessor.isSynthetic, isFalse);
5545 expect(accessor.typeParameters, hasLength(0)); 5681 expect(accessor.typeParameters, hasLength(0));
5546 PropertyInducingElement variable = accessor.variable; 5682 PropertyInducingElement variable = accessor.variable;
5547 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement, 5683 EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableElement,
5548 TopLevelVariableElement, variable); 5684 TopLevelVariableElement, variable);
5549 expect(variable.isSynthetic, isTrue); 5685 expect(variable.isSynthetic, isTrue);
5550 } 5686 }
5551 5687
5552 void test_visitFunctionDeclaration_typeParameters() { 5688 void test_visitFunctionDeclaration_typeParameters() {
5689 // f<E>() {}
5553 ElementHolder holder = new ElementHolder(); 5690 ElementHolder holder = new ElementHolder();
5554 ElementBuilder builder = new ElementBuilder(holder); 5691 ElementBuilder builder = new ElementBuilder(holder);
5555 String functionName = 'f'; 5692 String functionName = 'f';
5556 String typeParameterName = 'E'; 5693 String typeParameterName = 'E';
5557 FunctionExpression expression = AstFactory.functionExpression3( 5694 FunctionExpression expression = AstFactory.functionExpression3(
5558 AstFactory.typeParameterList([typeParameterName]), 5695 AstFactory.typeParameterList([typeParameterName]),
5559 AstFactory.formalParameterList(), 5696 AstFactory.formalParameterList(),
5560 AstFactory.blockFunctionBody2()); 5697 AstFactory.blockFunctionBody2());
5561 FunctionDeclaration declaration = 5698 FunctionDeclaration declaration =
5562 AstFactory.functionDeclaration(null, null, functionName, expression); 5699 AstFactory.functionDeclaration(null, null, functionName, expression);
5563 declaration.accept(builder); 5700 declaration.accept(builder);
5701
5564 List<FunctionElement> functions = holder.functions; 5702 List<FunctionElement> functions = holder.functions;
5565 expect(functions, hasLength(1)); 5703 expect(functions, hasLength(1));
5566 FunctionElement function = functions[0]; 5704 FunctionElement function = functions[0];
5567 expect(function, isNotNull); 5705 expect(function, isNotNull);
5706 expect(function.hasImplicitReturnType, isTrue);
5568 expect(function.name, functionName); 5707 expect(function.name, functionName);
5569 expect(function.isExternal, isFalse); 5708 expect(function.isExternal, isFalse);
5570 expect(function.isSynthetic, isFalse); 5709 expect(function.isSynthetic, isFalse);
5571 expect(declaration.element, same(function)); 5710 expect(declaration.element, same(function));
5572 expect(expression.element, same(function)); 5711 expect(expression.element, same(function));
5573 List<TypeParameterElement> typeParameters = function.typeParameters; 5712 List<TypeParameterElement> typeParameters = function.typeParameters;
5574 expect(typeParameters, hasLength(1)); 5713 expect(typeParameters, hasLength(1));
5575 TypeParameterElement typeParameter = typeParameters[0]; 5714 TypeParameterElement typeParameter = typeParameters[0];
5576 expect(typeParameter, isNotNull); 5715 expect(typeParameter, isNotNull);
5577 expect(typeParameter.name, typeParameterName); 5716 expect(typeParameter.name, typeParameterName);
5578 } 5717 }
5579 5718
5580 void test_visitFunctionExpression() { 5719 void test_visitFunctionExpression() {
5581 ElementHolder holder = new ElementHolder(); 5720 ElementHolder holder = new ElementHolder();
5582 ElementBuilder builder = new ElementBuilder(holder); 5721 ElementBuilder builder = new ElementBuilder(holder);
5583 FunctionExpression expression = AstFactory.functionExpression2( 5722 FunctionExpression expression = AstFactory.functionExpression2(
5584 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()); 5723 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2());
5585 expression.accept(builder); 5724 expression.accept(builder);
5586 List<FunctionElement> functions = holder.functions; 5725 List<FunctionElement> functions = holder.functions;
5587 expect(functions, hasLength(1)); 5726 expect(functions, hasLength(1));
5588 FunctionElement function = functions[0]; 5727 FunctionElement function = functions[0];
5589 expect(function, isNotNull); 5728 expect(function, isNotNull);
5590 expect(expression.element, same(function)); 5729 expect(expression.element, same(function));
5730 expect(function.hasImplicitReturnType, isTrue);
5591 expect(function.isSynthetic, isFalse); 5731 expect(function.isSynthetic, isFalse);
5592 expect(function.typeParameters, hasLength(0)); 5732 expect(function.typeParameters, hasLength(0));
5593 } 5733 }
5594 5734
5595 void test_visitFunctionTypeAlias() { 5735 void test_visitFunctionTypeAlias() {
5596 ElementHolder holder = new ElementHolder(); 5736 ElementHolder holder = new ElementHolder();
5597 ElementBuilder builder = new ElementBuilder(holder); 5737 ElementBuilder builder = new ElementBuilder(holder);
5598 String aliasName = "F"; 5738 String aliasName = "F";
5599 String parameterName = "E"; 5739 String parameterName = "E";
5600 FunctionTypeAlias aliasNode = AstFactory.typeAlias( 5740 FunctionTypeAlias aliasNode = AstFactory.typeAlias(
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
5670 statement.accept(builder); 5810 statement.accept(builder);
5671 List<LabelElement> labels = holder.labels; 5811 List<LabelElement> labels = holder.labels;
5672 expect(labels, hasLength(1)); 5812 expect(labels, hasLength(1));
5673 LabelElement label = labels[0]; 5813 LabelElement label = labels[0];
5674 expect(label, isNotNull); 5814 expect(label, isNotNull);
5675 expect(label.name, labelName); 5815 expect(label.name, labelName);
5676 expect(label.isSynthetic, isFalse); 5816 expect(label.isSynthetic, isFalse);
5677 } 5817 }
5678 5818
5679 void test_visitMethodDeclaration_abstract() { 5819 void test_visitMethodDeclaration_abstract() {
5820 // m();
5680 ElementHolder holder = new ElementHolder(); 5821 ElementHolder holder = new ElementHolder();
5681 ElementBuilder builder = new ElementBuilder(holder); 5822 ElementBuilder builder = new ElementBuilder(holder);
5682 String methodName = "m"; 5823 String methodName = "m";
5683 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 5824 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5684 null, 5825 null,
5685 null, 5826 null,
5686 null, 5827 null,
5687 null, 5828 null,
5688 AstFactory.identifier3(methodName), 5829 AstFactory.identifier3(methodName),
5689 AstFactory.formalParameterList(), 5830 AstFactory.formalParameterList(),
5690 AstFactory.emptyFunctionBody()); 5831 AstFactory.emptyFunctionBody());
5691 methodDeclaration.accept(builder); 5832 methodDeclaration.accept(builder);
5833
5692 List<MethodElement> methods = holder.methods; 5834 List<MethodElement> methods = holder.methods;
5693 expect(methods, hasLength(1)); 5835 expect(methods, hasLength(1));
5694 MethodElement method = methods[0]; 5836 MethodElement method = methods[0];
5695 expect(method, isNotNull); 5837 expect(method, isNotNull);
5838 expect(method.hasImplicitReturnType, isTrue);
5696 expect(method.name, methodName); 5839 expect(method.name, methodName);
5697 expect(method.functions, hasLength(0)); 5840 expect(method.functions, hasLength(0));
5698 expect(method.labels, hasLength(0)); 5841 expect(method.labels, hasLength(0));
5699 expect(method.localVariables, hasLength(0)); 5842 expect(method.localVariables, hasLength(0));
5700 expect(method.parameters, hasLength(0)); 5843 expect(method.parameters, hasLength(0));
5701 expect(method.typeParameters, hasLength(0)); 5844 expect(method.typeParameters, hasLength(0));
5702 expect(method.isAbstract, isTrue); 5845 expect(method.isAbstract, isTrue);
5703 expect(method.isExternal, isFalse); 5846 expect(method.isExternal, isFalse);
5704 expect(method.isStatic, isFalse); 5847 expect(method.isStatic, isFalse);
5705 expect(method.isSynthetic, isFalse); 5848 expect(method.isSynthetic, isFalse);
5706 } 5849 }
5707 5850
5708 void test_visitMethodDeclaration_external() { 5851 void test_visitMethodDeclaration_external() {
5852 // external m();
5709 ElementHolder holder = new ElementHolder(); 5853 ElementHolder holder = new ElementHolder();
5710 ElementBuilder builder = new ElementBuilder(holder); 5854 ElementBuilder builder = new ElementBuilder(holder);
5711 String methodName = "m"; 5855 String methodName = "m";
5712 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 5856 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5713 null, 5857 null,
5714 null, 5858 null,
5715 null, 5859 null,
5716 null, 5860 null,
5717 AstFactory.identifier3(methodName), 5861 AstFactory.identifier3(methodName),
5718 AstFactory.formalParameterList(), 5862 AstFactory.formalParameterList(),
5719 AstFactory.emptyFunctionBody()); 5863 AstFactory.emptyFunctionBody());
5720 methodDeclaration.externalKeyword = 5864 methodDeclaration.externalKeyword =
5721 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); 5865 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
5722 methodDeclaration.accept(builder); 5866 methodDeclaration.accept(builder);
5867
5723 List<MethodElement> methods = holder.methods; 5868 List<MethodElement> methods = holder.methods;
5724 expect(methods, hasLength(1)); 5869 expect(methods, hasLength(1));
5725 MethodElement method = methods[0]; 5870 MethodElement method = methods[0];
5726 expect(method, isNotNull); 5871 expect(method, isNotNull);
5872 expect(method.hasImplicitReturnType, isTrue);
5727 expect(method.name, methodName); 5873 expect(method.name, methodName);
5728 expect(method.functions, hasLength(0)); 5874 expect(method.functions, hasLength(0));
5729 expect(method.labels, hasLength(0)); 5875 expect(method.labels, hasLength(0));
5730 expect(method.localVariables, hasLength(0)); 5876 expect(method.localVariables, hasLength(0));
5731 expect(method.parameters, hasLength(0)); 5877 expect(method.parameters, hasLength(0));
5732 expect(method.typeParameters, hasLength(0)); 5878 expect(method.typeParameters, hasLength(0));
5733 expect(method.isAbstract, isFalse); 5879 expect(method.isAbstract, isFalse);
5734 expect(method.isExternal, isTrue); 5880 expect(method.isExternal, isTrue);
5735 expect(method.isStatic, isFalse); 5881 expect(method.isStatic, isFalse);
5736 expect(method.isSynthetic, isFalse); 5882 expect(method.isSynthetic, isFalse);
5737 } 5883 }
5738 5884
5739 void test_visitMethodDeclaration_getter() { 5885 void test_visitMethodDeclaration_getter() {
5886 // get m() {}
5740 ElementHolder holder = new ElementHolder(); 5887 ElementHolder holder = new ElementHolder();
5741 ElementBuilder builder = new ElementBuilder(holder); 5888 ElementBuilder builder = new ElementBuilder(holder);
5742 String methodName = "m"; 5889 String methodName = "m";
5743 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 5890 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5744 null, 5891 null,
5745 null, 5892 null,
5746 Keyword.GET, 5893 Keyword.GET,
5747 null, 5894 null,
5748 AstFactory.identifier3(methodName), 5895 AstFactory.identifier3(methodName),
5749 AstFactory.formalParameterList(), 5896 AstFactory.formalParameterList(),
5750 AstFactory.blockFunctionBody2()); 5897 AstFactory.blockFunctionBody2());
5751 methodDeclaration.accept(builder); 5898 methodDeclaration.accept(builder);
5899
5752 List<FieldElement> fields = holder.fields; 5900 List<FieldElement> fields = holder.fields;
5753 expect(fields, hasLength(1)); 5901 expect(fields, hasLength(1));
5754 FieldElement field = fields[0]; 5902 FieldElement field = fields[0];
5755 expect(field, isNotNull); 5903 expect(field, isNotNull);
5756 expect(field.name, methodName); 5904 expect(field.name, methodName);
5757 expect(field.isSynthetic, isTrue); 5905 expect(field.isSynthetic, isTrue);
5758 expect(field.setter, isNull); 5906 expect(field.setter, isNull);
5759 PropertyAccessorElement getter = field.getter; 5907 PropertyAccessorElement getter = field.getter;
5760 expect(getter, isNotNull); 5908 expect(getter, isNotNull);
5909 expect(getter.hasImplicitReturnType, isTrue);
5761 expect(getter.isAbstract, isFalse); 5910 expect(getter.isAbstract, isFalse);
5762 expect(getter.isExternal, isFalse); 5911 expect(getter.isExternal, isFalse);
5763 expect(getter.isGetter, isTrue); 5912 expect(getter.isGetter, isTrue);
5764 expect(getter.isSynthetic, isFalse); 5913 expect(getter.isSynthetic, isFalse);
5765 expect(getter.name, methodName); 5914 expect(getter.name, methodName);
5766 expect(getter.variable, field); 5915 expect(getter.variable, field);
5767 expect(getter.functions, hasLength(0)); 5916 expect(getter.functions, hasLength(0));
5768 expect(getter.labels, hasLength(0)); 5917 expect(getter.labels, hasLength(0));
5769 expect(getter.localVariables, hasLength(0)); 5918 expect(getter.localVariables, hasLength(0));
5770 expect(getter.parameters, hasLength(0)); 5919 expect(getter.parameters, hasLength(0));
5771 } 5920 }
5772 5921
5773 void test_visitMethodDeclaration_getter_abstract() { 5922 void test_visitMethodDeclaration_getter_abstract() {
5923 // get m();
5774 ElementHolder holder = new ElementHolder(); 5924 ElementHolder holder = new ElementHolder();
5775 ElementBuilder builder = new ElementBuilder(holder); 5925 ElementBuilder builder = new ElementBuilder(holder);
5776 String methodName = "m"; 5926 String methodName = "m";
5777 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 5927 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5778 null, 5928 null,
5779 null, 5929 null,
5780 Keyword.GET, 5930 Keyword.GET,
5781 null, 5931 null,
5782 AstFactory.identifier3(methodName), 5932 AstFactory.identifier3(methodName),
5783 AstFactory.formalParameterList(), 5933 AstFactory.formalParameterList(),
5784 AstFactory.emptyFunctionBody()); 5934 AstFactory.emptyFunctionBody());
5785 methodDeclaration.accept(builder); 5935 methodDeclaration.accept(builder);
5936
5786 List<FieldElement> fields = holder.fields; 5937 List<FieldElement> fields = holder.fields;
5787 expect(fields, hasLength(1)); 5938 expect(fields, hasLength(1));
5788 FieldElement field = fields[0]; 5939 FieldElement field = fields[0];
5789 expect(field, isNotNull); 5940 expect(field, isNotNull);
5790 expect(field.name, methodName); 5941 expect(field.name, methodName);
5791 expect(field.isSynthetic, isTrue); 5942 expect(field.isSynthetic, isTrue);
5792 expect(field.setter, isNull); 5943 expect(field.setter, isNull);
5793 PropertyAccessorElement getter = field.getter; 5944 PropertyAccessorElement getter = field.getter;
5794 expect(getter, isNotNull); 5945 expect(getter, isNotNull);
5946 expect(getter.hasImplicitReturnType, isTrue);
5795 expect(getter.isAbstract, isTrue); 5947 expect(getter.isAbstract, isTrue);
5796 expect(getter.isExternal, isFalse); 5948 expect(getter.isExternal, isFalse);
5797 expect(getter.isGetter, isTrue); 5949 expect(getter.isGetter, isTrue);
5798 expect(getter.isSynthetic, isFalse); 5950 expect(getter.isSynthetic, isFalse);
5799 expect(getter.name, methodName); 5951 expect(getter.name, methodName);
5800 expect(getter.variable, field); 5952 expect(getter.variable, field);
5801 expect(getter.functions, hasLength(0)); 5953 expect(getter.functions, hasLength(0));
5802 expect(getter.labels, hasLength(0)); 5954 expect(getter.labels, hasLength(0));
5803 expect(getter.localVariables, hasLength(0)); 5955 expect(getter.localVariables, hasLength(0));
5804 expect(getter.parameters, hasLength(0)); 5956 expect(getter.parameters, hasLength(0));
5805 } 5957 }
5806 5958
5807 void test_visitMethodDeclaration_getter_external() { 5959 void test_visitMethodDeclaration_getter_external() {
5960 // external get m();
5808 ElementHolder holder = new ElementHolder(); 5961 ElementHolder holder = new ElementHolder();
5809 ElementBuilder builder = new ElementBuilder(holder); 5962 ElementBuilder builder = new ElementBuilder(holder);
5810 String methodName = "m"; 5963 String methodName = "m";
5811 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration( 5964 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration(
5812 null, 5965 null,
5813 null, 5966 null,
5814 Keyword.GET, 5967 Keyword.GET,
5815 null, 5968 null,
5816 AstFactory.identifier3(methodName), 5969 AstFactory.identifier3(methodName),
5817 AstFactory.formalParameterList()); 5970 AstFactory.formalParameterList());
5818 methodDeclaration.externalKeyword = 5971 methodDeclaration.externalKeyword =
5819 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); 5972 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
5820 methodDeclaration.accept(builder); 5973 methodDeclaration.accept(builder);
5974
5821 List<FieldElement> fields = holder.fields; 5975 List<FieldElement> fields = holder.fields;
5822 expect(fields, hasLength(1)); 5976 expect(fields, hasLength(1));
5823 FieldElement field = fields[0]; 5977 FieldElement field = fields[0];
5824 expect(field, isNotNull); 5978 expect(field, isNotNull);
5825 expect(field.name, methodName); 5979 expect(field.name, methodName);
5826 expect(field.isSynthetic, isTrue); 5980 expect(field.isSynthetic, isTrue);
5827 expect(field.setter, isNull); 5981 expect(field.setter, isNull);
5828 PropertyAccessorElement getter = field.getter; 5982 PropertyAccessorElement getter = field.getter;
5829 expect(getter, isNotNull); 5983 expect(getter, isNotNull);
5984 expect(getter.hasImplicitReturnType, isTrue);
5830 expect(getter.isAbstract, isFalse); 5985 expect(getter.isAbstract, isFalse);
5831 expect(getter.isExternal, isTrue); 5986 expect(getter.isExternal, isTrue);
5832 expect(getter.isGetter, isTrue); 5987 expect(getter.isGetter, isTrue);
5833 expect(getter.isSynthetic, isFalse); 5988 expect(getter.isSynthetic, isFalse);
5834 expect(getter.name, methodName); 5989 expect(getter.name, methodName);
5835 expect(getter.variable, field); 5990 expect(getter.variable, field);
5836 expect(getter.functions, hasLength(0)); 5991 expect(getter.functions, hasLength(0));
5837 expect(getter.labels, hasLength(0)); 5992 expect(getter.labels, hasLength(0));
5838 expect(getter.localVariables, hasLength(0)); 5993 expect(getter.localVariables, hasLength(0));
5839 expect(getter.parameters, hasLength(0)); 5994 expect(getter.parameters, hasLength(0));
5840 } 5995 }
5841 5996
5842 void test_visitMethodDeclaration_minimal() { 5997 void test_visitMethodDeclaration_minimal() {
5998 // T m() {}
5843 ElementHolder holder = new ElementHolder(); 5999 ElementHolder holder = new ElementHolder();
5844 ElementBuilder builder = new ElementBuilder(holder); 6000 ElementBuilder builder = new ElementBuilder(holder);
5845 String methodName = "m"; 6001 String methodName = "m";
5846 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 6002 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5847 null, 6003 null,
5848 null, 6004 AstFactory.typeName4('T'),
5849 null, 6005 null,
5850 null, 6006 null,
5851 AstFactory.identifier3(methodName), 6007 AstFactory.identifier3(methodName),
5852 AstFactory.formalParameterList(), 6008 AstFactory.formalParameterList(),
5853 AstFactory.blockFunctionBody2()); 6009 AstFactory.blockFunctionBody2());
5854 methodDeclaration.accept(builder); 6010 methodDeclaration.accept(builder);
5855 List<MethodElement> methods = holder.methods; 6011 List<MethodElement> methods = holder.methods;
5856 expect(methods, hasLength(1)); 6012 expect(methods, hasLength(1));
5857 MethodElement method = methods[0]; 6013 MethodElement method = methods[0];
5858 expect(method, isNotNull); 6014 expect(method, isNotNull);
6015 expect(method.hasImplicitReturnType, isFalse);
5859 expect(method.name, methodName); 6016 expect(method.name, methodName);
5860 expect(method.functions, hasLength(0)); 6017 expect(method.functions, hasLength(0));
5861 expect(method.labels, hasLength(0)); 6018 expect(method.labels, hasLength(0));
5862 expect(method.localVariables, hasLength(0)); 6019 expect(method.localVariables, hasLength(0));
5863 expect(method.parameters, hasLength(0)); 6020 expect(method.parameters, hasLength(0));
5864 expect(method.typeParameters, hasLength(0)); 6021 expect(method.typeParameters, hasLength(0));
5865 expect(method.isAbstract, isFalse); 6022 expect(method.isAbstract, isFalse);
5866 expect(method.isExternal, isFalse); 6023 expect(method.isExternal, isFalse);
5867 expect(method.isStatic, isFalse); 6024 expect(method.isStatic, isFalse);
5868 expect(method.isSynthetic, isFalse); 6025 expect(method.isSynthetic, isFalse);
5869 } 6026 }
5870 6027
5871 void test_visitMethodDeclaration_operator() { 6028 void test_visitMethodDeclaration_operator() {
6029 // operator +(addend) {}
5872 ElementHolder holder = new ElementHolder(); 6030 ElementHolder holder = new ElementHolder();
5873 ElementBuilder builder = new ElementBuilder(holder); 6031 ElementBuilder builder = new ElementBuilder(holder);
5874 String methodName = "+"; 6032 String methodName = "+";
5875 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 6033 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5876 null, 6034 null,
5877 null, 6035 null,
5878 null, 6036 null,
5879 Keyword.OPERATOR, 6037 Keyword.OPERATOR,
5880 AstFactory.identifier3(methodName), 6038 AstFactory.identifier3(methodName),
5881 AstFactory 6039 AstFactory
5882 .formalParameterList([AstFactory.simpleFormalParameter3("addend")]), 6040 .formalParameterList([AstFactory.simpleFormalParameter3("addend")]),
5883 AstFactory.blockFunctionBody2()); 6041 AstFactory.blockFunctionBody2());
5884 methodDeclaration.accept(builder); 6042 methodDeclaration.accept(builder);
6043
5885 List<MethodElement> methods = holder.methods; 6044 List<MethodElement> methods = holder.methods;
5886 expect(methods, hasLength(1)); 6045 expect(methods, hasLength(1));
5887 MethodElement method = methods[0]; 6046 MethodElement method = methods[0];
5888 expect(method, isNotNull); 6047 expect(method, isNotNull);
6048 expect(method.hasImplicitReturnType, isTrue);
5889 expect(method.name, methodName); 6049 expect(method.name, methodName);
5890 expect(method.functions, hasLength(0)); 6050 expect(method.functions, hasLength(0));
5891 expect(method.labels, hasLength(0)); 6051 expect(method.labels, hasLength(0));
5892 expect(method.localVariables, hasLength(0)); 6052 expect(method.localVariables, hasLength(0));
5893 expect(method.parameters, hasLength(1)); 6053 expect(method.parameters, hasLength(1));
5894 expect(method.typeParameters, hasLength(0)); 6054 expect(method.typeParameters, hasLength(0));
5895 expect(method.isAbstract, isFalse); 6055 expect(method.isAbstract, isFalse);
5896 expect(method.isExternal, isFalse); 6056 expect(method.isExternal, isFalse);
5897 expect(method.isStatic, isFalse); 6057 expect(method.isStatic, isFalse);
5898 expect(method.isSynthetic, isFalse); 6058 expect(method.isSynthetic, isFalse);
5899 } 6059 }
5900 6060
5901 void test_visitMethodDeclaration_setter() { 6061 void test_visitMethodDeclaration_setter() {
6062 // set m() {}
5902 ElementHolder holder = new ElementHolder(); 6063 ElementHolder holder = new ElementHolder();
5903 ElementBuilder builder = new ElementBuilder(holder); 6064 ElementBuilder builder = new ElementBuilder(holder);
5904 String methodName = "m"; 6065 String methodName = "m";
5905 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 6066 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5906 null, 6067 null,
5907 null, 6068 null,
5908 Keyword.SET, 6069 Keyword.SET,
5909 null, 6070 null,
5910 AstFactory.identifier3(methodName), 6071 AstFactory.identifier3(methodName),
5911 AstFactory.formalParameterList(), 6072 AstFactory.formalParameterList(),
5912 AstFactory.blockFunctionBody2()); 6073 AstFactory.blockFunctionBody2());
5913 methodDeclaration.accept(builder); 6074 methodDeclaration.accept(builder);
6075
5914 List<FieldElement> fields = holder.fields; 6076 List<FieldElement> fields = holder.fields;
5915 expect(fields, hasLength(1)); 6077 expect(fields, hasLength(1));
5916 FieldElement field = fields[0]; 6078 FieldElement field = fields[0];
5917 expect(field, isNotNull); 6079 expect(field, isNotNull);
5918 expect(field.name, methodName); 6080 expect(field.name, methodName);
5919 expect(field.isSynthetic, isTrue); 6081 expect(field.isSynthetic, isTrue);
5920 expect(field.getter, isNull); 6082 expect(field.getter, isNull);
5921 PropertyAccessorElement setter = field.setter; 6083 PropertyAccessorElement setter = field.setter;
5922 expect(setter, isNotNull); 6084 expect(setter, isNotNull);
6085 expect(setter.hasImplicitReturnType, isFalse);
5923 expect(setter.isAbstract, isFalse); 6086 expect(setter.isAbstract, isFalse);
5924 expect(setter.isExternal, isFalse); 6087 expect(setter.isExternal, isFalse);
5925 expect(setter.isSetter, isTrue); 6088 expect(setter.isSetter, isTrue);
5926 expect(setter.isSynthetic, isFalse); 6089 expect(setter.isSynthetic, isFalse);
5927 expect(setter.name, "$methodName="); 6090 expect(setter.name, "$methodName=");
5928 expect(setter.displayName, methodName); 6091 expect(setter.displayName, methodName);
5929 expect(setter.variable, field); 6092 expect(setter.variable, field);
5930 expect(setter.functions, hasLength(0)); 6093 expect(setter.functions, hasLength(0));
5931 expect(setter.labels, hasLength(0)); 6094 expect(setter.labels, hasLength(0));
5932 expect(setter.localVariables, hasLength(0)); 6095 expect(setter.localVariables, hasLength(0));
5933 expect(setter.parameters, hasLength(0)); 6096 expect(setter.parameters, hasLength(0));
5934 } 6097 }
5935 6098
5936 void test_visitMethodDeclaration_setter_abstract() { 6099 void test_visitMethodDeclaration_setter_abstract() {
6100 // set m();
5937 ElementHolder holder = new ElementHolder(); 6101 ElementHolder holder = new ElementHolder();
5938 ElementBuilder builder = new ElementBuilder(holder); 6102 ElementBuilder builder = new ElementBuilder(holder);
5939 String methodName = "m"; 6103 String methodName = "m";
5940 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 6104 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
5941 null, 6105 null,
5942 null, 6106 null,
5943 Keyword.SET, 6107 Keyword.SET,
5944 null, 6108 null,
5945 AstFactory.identifier3(methodName), 6109 AstFactory.identifier3(methodName),
5946 AstFactory.formalParameterList(), 6110 AstFactory.formalParameterList(),
5947 AstFactory.emptyFunctionBody()); 6111 AstFactory.emptyFunctionBody());
5948 methodDeclaration.accept(builder); 6112 methodDeclaration.accept(builder);
6113
5949 List<FieldElement> fields = holder.fields; 6114 List<FieldElement> fields = holder.fields;
5950 expect(fields, hasLength(1)); 6115 expect(fields, hasLength(1));
5951 FieldElement field = fields[0]; 6116 FieldElement field = fields[0];
5952 expect(field, isNotNull); 6117 expect(field, isNotNull);
5953 expect(field.name, methodName); 6118 expect(field.name, methodName);
5954 expect(field.isSynthetic, isTrue); 6119 expect(field.isSynthetic, isTrue);
5955 expect(field.getter, isNull); 6120 expect(field.getter, isNull);
5956 PropertyAccessorElement setter = field.setter; 6121 PropertyAccessorElement setter = field.setter;
5957 expect(setter, isNotNull); 6122 expect(setter, isNotNull);
6123 expect(setter.hasImplicitReturnType, isFalse);
5958 expect(setter.isAbstract, isTrue); 6124 expect(setter.isAbstract, isTrue);
5959 expect(setter.isExternal, isFalse); 6125 expect(setter.isExternal, isFalse);
5960 expect(setter.isSetter, isTrue); 6126 expect(setter.isSetter, isTrue);
5961 expect(setter.isSynthetic, isFalse); 6127 expect(setter.isSynthetic, isFalse);
5962 expect(setter.name, "$methodName="); 6128 expect(setter.name, "$methodName=");
5963 expect(setter.displayName, methodName); 6129 expect(setter.displayName, methodName);
5964 expect(setter.variable, field); 6130 expect(setter.variable, field);
5965 expect(setter.functions, hasLength(0)); 6131 expect(setter.functions, hasLength(0));
5966 expect(setter.labels, hasLength(0)); 6132 expect(setter.labels, hasLength(0));
5967 expect(setter.localVariables, hasLength(0)); 6133 expect(setter.localVariables, hasLength(0));
5968 expect(setter.parameters, hasLength(0)); 6134 expect(setter.parameters, hasLength(0));
5969 } 6135 }
5970 6136
5971 void test_visitMethodDeclaration_setter_external() { 6137 void test_visitMethodDeclaration_setter_external() {
6138 // external m();
5972 ElementHolder holder = new ElementHolder(); 6139 ElementHolder holder = new ElementHolder();
5973 ElementBuilder builder = new ElementBuilder(holder); 6140 ElementBuilder builder = new ElementBuilder(holder);
5974 String methodName = "m"; 6141 String methodName = "m";
5975 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration( 6142 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration(
5976 null, 6143 null,
5977 null, 6144 null,
5978 Keyword.SET, 6145 Keyword.SET,
5979 null, 6146 null,
5980 AstFactory.identifier3(methodName), 6147 AstFactory.identifier3(methodName),
5981 AstFactory.formalParameterList()); 6148 AstFactory.formalParameterList());
5982 methodDeclaration.externalKeyword = 6149 methodDeclaration.externalKeyword =
5983 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL); 6150 TokenFactory.tokenFromKeyword(Keyword.EXTERNAL);
5984 methodDeclaration.accept(builder); 6151 methodDeclaration.accept(builder);
6152
5985 List<FieldElement> fields = holder.fields; 6153 List<FieldElement> fields = holder.fields;
5986 expect(fields, hasLength(1)); 6154 expect(fields, hasLength(1));
5987 FieldElement field = fields[0]; 6155 FieldElement field = fields[0];
5988 expect(field, isNotNull); 6156 expect(field, isNotNull);
5989 expect(field.name, methodName); 6157 expect(field.name, methodName);
5990 expect(field.isSynthetic, isTrue); 6158 expect(field.isSynthetic, isTrue);
5991 expect(field.getter, isNull); 6159 expect(field.getter, isNull);
5992 PropertyAccessorElement setter = field.setter; 6160 PropertyAccessorElement setter = field.setter;
5993 expect(setter, isNotNull); 6161 expect(setter, isNotNull);
6162 expect(setter.hasImplicitReturnType, isFalse);
5994 expect(setter.isAbstract, isFalse); 6163 expect(setter.isAbstract, isFalse);
5995 expect(setter.isExternal, isTrue); 6164 expect(setter.isExternal, isTrue);
5996 expect(setter.isSetter, isTrue); 6165 expect(setter.isSetter, isTrue);
5997 expect(setter.isSynthetic, isFalse); 6166 expect(setter.isSynthetic, isFalse);
5998 expect(setter.name, "$methodName="); 6167 expect(setter.name, "$methodName=");
5999 expect(setter.displayName, methodName); 6168 expect(setter.displayName, methodName);
6000 expect(setter.variable, field); 6169 expect(setter.variable, field);
6001 expect(setter.functions, hasLength(0)); 6170 expect(setter.functions, hasLength(0));
6002 expect(setter.labels, hasLength(0)); 6171 expect(setter.labels, hasLength(0));
6003 expect(setter.localVariables, hasLength(0)); 6172 expect(setter.localVariables, hasLength(0));
6004 expect(setter.parameters, hasLength(0)); 6173 expect(setter.parameters, hasLength(0));
6005 } 6174 }
6006 6175
6007 void test_visitMethodDeclaration_static() { 6176 void test_visitMethodDeclaration_static() {
6177 // static m() {}
6008 ElementHolder holder = new ElementHolder(); 6178 ElementHolder holder = new ElementHolder();
6009 ElementBuilder builder = new ElementBuilder(holder); 6179 ElementBuilder builder = new ElementBuilder(holder);
6010 String methodName = "m"; 6180 String methodName = "m";
6011 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 6181 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
6012 Keyword.STATIC, 6182 Keyword.STATIC,
6013 null, 6183 null,
6014 null, 6184 null,
6015 null, 6185 null,
6016 AstFactory.identifier3(methodName), 6186 AstFactory.identifier3(methodName),
6017 AstFactory.formalParameterList(), 6187 AstFactory.formalParameterList(),
6018 AstFactory.blockFunctionBody2()); 6188 AstFactory.blockFunctionBody2());
6019 methodDeclaration.accept(builder); 6189 methodDeclaration.accept(builder);
6020 List<MethodElement> methods = holder.methods; 6190 List<MethodElement> methods = holder.methods;
6021 expect(methods, hasLength(1)); 6191 expect(methods, hasLength(1));
6022 MethodElement method = methods[0]; 6192 MethodElement method = methods[0];
6023 expect(method, isNotNull); 6193 expect(method, isNotNull);
6194 expect(method.hasImplicitReturnType, isTrue);
6024 expect(method.name, methodName); 6195 expect(method.name, methodName);
6025 expect(method.functions, hasLength(0)); 6196 expect(method.functions, hasLength(0));
6026 expect(method.labels, hasLength(0)); 6197 expect(method.labels, hasLength(0));
6027 expect(method.localVariables, hasLength(0)); 6198 expect(method.localVariables, hasLength(0));
6028 expect(method.parameters, hasLength(0)); 6199 expect(method.parameters, hasLength(0));
6029 expect(method.typeParameters, hasLength(0)); 6200 expect(method.typeParameters, hasLength(0));
6030 expect(method.isAbstract, isFalse); 6201 expect(method.isAbstract, isFalse);
6031 expect(method.isExternal, isFalse); 6202 expect(method.isExternal, isFalse);
6032 expect(method.isStatic, isTrue); 6203 expect(method.isStatic, isTrue);
6033 expect(method.isSynthetic, isFalse); 6204 expect(method.isSynthetic, isFalse);
6034 } 6205 }
6035 6206
6036 void test_visitMethodDeclaration_typeParameters() { 6207 void test_visitMethodDeclaration_typeParameters() {
6208 // m<E>() {}
6037 ElementHolder holder = new ElementHolder(); 6209 ElementHolder holder = new ElementHolder();
6038 ElementBuilder builder = new ElementBuilder(holder); 6210 ElementBuilder builder = new ElementBuilder(holder);
6039 String methodName = "m"; 6211 String methodName = "m";
6040 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 6212 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
6041 null, 6213 null,
6042 null, 6214 null,
6043 null, 6215 null,
6044 null, 6216 null,
6045 AstFactory.identifier3(methodName), 6217 AstFactory.identifier3(methodName),
6046 AstFactory.formalParameterList(), 6218 AstFactory.formalParameterList(),
6047 AstFactory.blockFunctionBody2()); 6219 AstFactory.blockFunctionBody2());
6048 methodDeclaration.typeParameters = AstFactory.typeParameterList(['E']); 6220 methodDeclaration.typeParameters = AstFactory.typeParameterList(['E']);
6049 methodDeclaration.accept(builder); 6221 methodDeclaration.accept(builder);
6222
6050 List<MethodElement> methods = holder.methods; 6223 List<MethodElement> methods = holder.methods;
6051 expect(methods, hasLength(1)); 6224 expect(methods, hasLength(1));
6052 MethodElement method = methods[0]; 6225 MethodElement method = methods[0];
6053 expect(method, isNotNull); 6226 expect(method, isNotNull);
6227 expect(method.hasImplicitReturnType, isTrue);
6054 expect(method.name, methodName); 6228 expect(method.name, methodName);
6055 expect(method.functions, hasLength(0)); 6229 expect(method.functions, hasLength(0));
6056 expect(method.labels, hasLength(0)); 6230 expect(method.labels, hasLength(0));
6057 expect(method.localVariables, hasLength(0)); 6231 expect(method.localVariables, hasLength(0));
6058 expect(method.parameters, hasLength(0)); 6232 expect(method.parameters, hasLength(0));
6059 expect(method.typeParameters, hasLength(1)); 6233 expect(method.typeParameters, hasLength(1));
6060 expect(method.isAbstract, isFalse); 6234 expect(method.isAbstract, isFalse);
6061 expect(method.isExternal, isFalse); 6235 expect(method.isExternal, isFalse);
6062 expect(method.isStatic, isFalse); 6236 expect(method.isStatic, isFalse);
6063 expect(method.isSynthetic, isFalse); 6237 expect(method.isSynthetic, isFalse);
6064 } 6238 }
6065 6239
6066 void test_visitMethodDeclaration_withMembers() { 6240 void test_visitMethodDeclaration_withMembers() {
6241 // m(p) { var v; try { l: return; } catch (e) {} }
6067 ElementHolder holder = new ElementHolder(); 6242 ElementHolder holder = new ElementHolder();
6068 ElementBuilder builder = new ElementBuilder(holder); 6243 ElementBuilder builder = new ElementBuilder(holder);
6069 String methodName = "m"; 6244 String methodName = "m";
6070 String parameterName = "p"; 6245 String parameterName = "p";
6071 String localVariableName = "v"; 6246 String localVariableName = "v";
6072 String labelName = "l"; 6247 String labelName = "l";
6073 String exceptionParameterName = "e"; 6248 String exceptionParameterName = "e";
6074 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 6249 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
6075 null, 6250 null,
6076 null, 6251 null,
6077 null, 6252 null,
6078 null, 6253 null,
6079 AstFactory.identifier3(methodName), 6254 AstFactory.identifier3(methodName),
6080 AstFactory.formalParameterList( 6255 AstFactory.formalParameterList(
6081 [AstFactory.simpleFormalParameter3(parameterName)]), 6256 [AstFactory.simpleFormalParameter3(parameterName)]),
6082 AstFactory.blockFunctionBody2([ 6257 AstFactory.blockFunctionBody2([
6083 AstFactory.variableDeclarationStatement2( 6258 AstFactory.variableDeclarationStatement2(
6084 Keyword.VAR, [AstFactory.variableDeclaration(localVariableName)]), 6259 Keyword.VAR, [AstFactory.variableDeclaration(localVariableName)]),
6085 AstFactory.tryStatement2( 6260 AstFactory.tryStatement2(
6086 AstFactory.block([ 6261 AstFactory.block([
6087 AstFactory.labeledStatement([AstFactory.label2(labelName)], 6262 AstFactory.labeledStatement([AstFactory.label2(labelName)],
6088 AstFactory.returnStatement()) 6263 AstFactory.returnStatement())
6089 ]), 6264 ]),
6090 [AstFactory.catchClause(exceptionParameterName)]) 6265 [AstFactory.catchClause(exceptionParameterName)])
6091 ])); 6266 ]));
6092 methodDeclaration.accept(builder); 6267 methodDeclaration.accept(builder);
6268
6093 List<MethodElement> methods = holder.methods; 6269 List<MethodElement> methods = holder.methods;
6094 expect(methods, hasLength(1)); 6270 expect(methods, hasLength(1));
6095 MethodElement method = methods[0]; 6271 MethodElement method = methods[0];
6096 expect(method, isNotNull); 6272 expect(method, isNotNull);
6273 expect(method.hasImplicitReturnType, isTrue);
6097 expect(method.name, methodName); 6274 expect(method.name, methodName);
6098 expect(method.typeParameters, hasLength(0)); 6275 expect(method.typeParameters, hasLength(0));
6099 expect(method.isAbstract, isFalse); 6276 expect(method.isAbstract, isFalse);
6100 expect(method.isExternal, isFalse); 6277 expect(method.isExternal, isFalse);
6101 expect(method.isStatic, isFalse); 6278 expect(method.isStatic, isFalse);
6102 expect(method.isSynthetic, isFalse); 6279 expect(method.isSynthetic, isFalse);
6103 List<VariableElement> parameters = method.parameters; 6280 List<VariableElement> parameters = method.parameters;
6104 expect(parameters, hasLength(1)); 6281 expect(parameters, hasLength(1));
6105 VariableElement parameter = parameters[0]; 6282 VariableElement parameter = parameters[0];
6106 expect(parameter, isNotNull); 6283 expect(parameter, isNotNull);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
6146 SourceRange visibleRange = parameter.visibleRange; 6323 SourceRange visibleRange = parameter.visibleRange;
6147 expect(100, visibleRange.offset); 6324 expect(100, visibleRange.offset);
6148 expect(110, visibleRange.end); 6325 expect(110, visibleRange.end);
6149 } 6326 }
6150 expect(parameter.defaultValueCode, "42"); 6327 expect(parameter.defaultValueCode, "42");
6151 FunctionElement initializer = parameter.initializer; 6328 FunctionElement initializer = parameter.initializer;
6152 expect(initializer, isNotNull); 6329 expect(initializer, isNotNull);
6153 expect(initializer.isSynthetic, isTrue); 6330 expect(initializer.isSynthetic, isTrue);
6154 } 6331 }
6155 6332
6156 void test_visitSimpleFormalParameter() { 6333 void test_visitSimpleFormalParameter_noType() {
6334 // p
6157 ElementHolder holder = new ElementHolder(); 6335 ElementHolder holder = new ElementHolder();
6158 ElementBuilder builder = new ElementBuilder(holder); 6336 ElementBuilder builder = new ElementBuilder(holder);
6159 String parameterName = "p"; 6337 String parameterName = "p";
6160 SimpleFormalParameter formalParameter = 6338 SimpleFormalParameter formalParameter =
6161 AstFactory.simpleFormalParameter3(parameterName); 6339 AstFactory.simpleFormalParameter3(parameterName);
6162 _useParameterInMethod(formalParameter, 100, 110); 6340 _useParameterInMethod(formalParameter, 100, 110);
6163 formalParameter.accept(builder); 6341 formalParameter.accept(builder);
6164 List<ParameterElement> parameters = holder.parameters; 6342 List<ParameterElement> parameters = holder.parameters;
6165 expect(parameters, hasLength(1)); 6343 expect(parameters, hasLength(1));
6166 ParameterElement parameter = parameters[0]; 6344 ParameterElement parameter = parameters[0];
6167 expect(parameter, isNotNull); 6345 expect(parameter, isNotNull);
6168 expect(parameter.name, parameterName); 6346 expect(parameter.hasImplicitType, isTrue);
6169 expect(parameter.initializer, isNull); 6347 expect(parameter.initializer, isNull);
6170 expect(parameter.isConst, isFalse); 6348 expect(parameter.isConst, isFalse);
6171 expect(parameter.isFinal, isFalse); 6349 expect(parameter.isFinal, isFalse);
6172 expect(parameter.isSynthetic, isFalse); 6350 expect(parameter.isSynthetic, isFalse);
6351 expect(parameter.name, parameterName);
6173 expect(parameter.parameterKind, ParameterKind.REQUIRED); 6352 expect(parameter.parameterKind, ParameterKind.REQUIRED);
6174 { 6353 {
6175 SourceRange visibleRange = parameter.visibleRange; 6354 SourceRange visibleRange = parameter.visibleRange;
6355 expect(100, visibleRange.offset);
6356 expect(110, visibleRange.end);
6357 }
6358 }
6359
6360 void test_visitSimpleFormalParameter_type() {
6361 // T p
6362 ElementHolder holder = new ElementHolder();
6363 ElementBuilder builder = new ElementBuilder(holder);
6364 String parameterName = "p";
6365 SimpleFormalParameter formalParameter = AstFactory.simpleFormalParameter4(
6366 AstFactory.typeName4('T'), parameterName);
6367 _useParameterInMethod(formalParameter, 100, 110);
6368 formalParameter.accept(builder);
6369 List<ParameterElement> parameters = holder.parameters;
6370 expect(parameters, hasLength(1));
6371 ParameterElement parameter = parameters[0];
6372 expect(parameter, isNotNull);
6373 expect(parameter.hasImplicitType, isFalse);
6374 expect(parameter.initializer, isNull);
6375 expect(parameter.isConst, isFalse);
6376 expect(parameter.isFinal, isFalse);
6377 expect(parameter.isSynthetic, isFalse);
6378 expect(parameter.name, parameterName);
6379 expect(parameter.parameterKind, ParameterKind.REQUIRED);
6380 {
6381 SourceRange visibleRange = parameter.visibleRange;
6176 expect(100, visibleRange.offset); 6382 expect(100, visibleRange.offset);
6177 expect(110, visibleRange.end); 6383 expect(110, visibleRange.end);
6178 } 6384 }
6179 } 6385 }
6180 6386
6181 void test_visitTypeAlias_minimal() { 6387 void test_visitTypeAlias_minimal() {
6182 ElementHolder holder = new ElementHolder(); 6388 ElementHolder holder = new ElementHolder();
6183 ElementBuilder builder = new ElementBuilder(holder); 6389 ElementBuilder builder = new ElementBuilder(holder);
6184 String aliasName = "F"; 6390 String aliasName = "F";
6185 TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, null, null); 6391 TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, null, null);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
6281 AstFactory.variableDeclarationStatement2(null, [variable]); 6487 AstFactory.variableDeclarationStatement2(null, [variable]);
6282 ConstructorDeclaration constructor = AstFactory.constructorDeclaration2( 6488 ConstructorDeclaration constructor = AstFactory.constructorDeclaration2(
6283 null, 6489 null,
6284 null, 6490 null,
6285 AstFactory.identifier3("C"), 6491 AstFactory.identifier3("C"),
6286 "C", 6492 "C",
6287 AstFactory.formalParameterList(), 6493 AstFactory.formalParameterList(),
6288 null, 6494 null,
6289 AstFactory.blockFunctionBody2([statement])); 6495 AstFactory.blockFunctionBody2([statement]));
6290 constructor.accept(builder); 6496 constructor.accept(builder);
6497
6291 List<ConstructorElement> constructors = holder.constructors; 6498 List<ConstructorElement> constructors = holder.constructors;
6292 expect(constructors, hasLength(1)); 6499 expect(constructors, hasLength(1));
6293 List<LocalVariableElement> variableElements = 6500 List<LocalVariableElement> variableElements =
6294 constructors[0].localVariables; 6501 constructors[0].localVariables;
6295 expect(variableElements, hasLength(1)); 6502 expect(variableElements, hasLength(1));
6296 LocalVariableElement variableElement = variableElements[0]; 6503 LocalVariableElement variableElement = variableElements[0];
6504 expect(variableElement.hasImplicitType, isTrue);
6297 expect(variableElement.name, variableName); 6505 expect(variableElement.name, variableName);
6298 } 6506 }
6299 6507
6300 void test_visitVariableDeclaration_inMethod() { 6508 void test_visitVariableDeclaration_inMethod() {
6301 ElementHolder holder = new ElementHolder(); 6509 ElementHolder holder = new ElementHolder();
6302 ElementBuilder builder = new ElementBuilder(holder); 6510 ElementBuilder builder = new ElementBuilder(holder);
6303 // 6511 //
6304 // m() {var v;} 6512 // m() {T v;}
6305 // 6513 //
6306 String variableName = "v"; 6514 String variableName = "v";
6307 VariableDeclaration variable = 6515 VariableDeclaration variable =
6308 AstFactory.variableDeclaration2(variableName, null); 6516 AstFactory.variableDeclaration2(variableName, null);
6309 Statement statement = 6517 Statement statement = AstFactory.variableDeclarationStatement(
6310 AstFactory.variableDeclarationStatement2(null, [variable]); 6518 null, AstFactory.typeName4('T'), [variable]);
6311 MethodDeclaration constructor = AstFactory.methodDeclaration2( 6519 MethodDeclaration method = AstFactory.methodDeclaration2(
6312 null, 6520 null,
6313 null, 6521 null,
6314 null, 6522 null,
6315 null, 6523 null,
6316 AstFactory.identifier3("m"), 6524 AstFactory.identifier3("m"),
6317 AstFactory.formalParameterList(), 6525 AstFactory.formalParameterList(),
6318 AstFactory.blockFunctionBody2([statement])); 6526 AstFactory.blockFunctionBody2([statement]));
6319 constructor.accept(builder); 6527 method.accept(builder);
6528
6320 List<MethodElement> methods = holder.methods; 6529 List<MethodElement> methods = holder.methods;
6321 expect(methods, hasLength(1)); 6530 expect(methods, hasLength(1));
6322 List<LocalVariableElement> variableElements = methods[0].localVariables; 6531 List<LocalVariableElement> variableElements = methods[0].localVariables;
6323 expect(variableElements, hasLength(1)); 6532 expect(variableElements, hasLength(1));
6324 LocalVariableElement variableElement = variableElements[0]; 6533 LocalVariableElement variableElement = variableElements[0];
6534 expect(variableElement.hasImplicitType, isFalse);
6325 expect(variableElement.name, variableName); 6535 expect(variableElement.name, variableName);
6326 } 6536 }
6327 6537
6328 void test_visitVariableDeclaration_localNestedInField() { 6538 void test_visitVariableDeclaration_localNestedInFunction() {
6329 ElementHolder holder = new ElementHolder(); 6539 ElementHolder holder = new ElementHolder();
6330 ElementBuilder builder = new ElementBuilder(holder); 6540 ElementBuilder builder = new ElementBuilder(holder);
6331 // 6541 //
6332 // var f = () {var v;} 6542 // var f = () {var v;};
6333 // 6543 //
6334 String variableName = "v"; 6544 String variableName = "v";
6335 VariableDeclaration variable = 6545 VariableDeclaration variable =
6336 AstFactory.variableDeclaration2(variableName, null); 6546 AstFactory.variableDeclaration2(variableName, null);
6337 Statement statement = 6547 Statement statement =
6338 AstFactory.variableDeclarationStatement2(null, [variable]); 6548 AstFactory.variableDeclarationStatement2(null, [variable]);
6339 Expression initializer = AstFactory.functionExpression2( 6549 Expression initializer = AstFactory.functionExpression2(
6340 AstFactory.formalParameterList(), 6550 AstFactory.formalParameterList(),
6341 AstFactory.blockFunctionBody2([statement])); 6551 AstFactory.blockFunctionBody2([statement]));
6342 String fieldName = "f"; 6552 String fieldName = "f";
6343 VariableDeclaration field = 6553 VariableDeclaration field =
6344 AstFactory.variableDeclaration2(fieldName, initializer); 6554 AstFactory.variableDeclaration2(fieldName, initializer);
6345 FieldDeclaration fieldDeclaration = 6555 FieldDeclaration fieldDeclaration =
6346 AstFactory.fieldDeclaration2(false, null, [field]); 6556 AstFactory.fieldDeclaration2(false, null, [field]);
6347 fieldDeclaration.accept(builder); 6557 fieldDeclaration.accept(builder);
6558
6348 List<FieldElement> variables = holder.fields; 6559 List<FieldElement> variables = holder.fields;
6349 expect(variables, hasLength(1)); 6560 expect(variables, hasLength(1));
6350 FieldElement fieldElement = variables[0]; 6561 FieldElement fieldElement = variables[0];
6351 expect(fieldElement, isNotNull); 6562 expect(fieldElement, isNotNull);
6352 FunctionElement initializerElement = fieldElement.initializer; 6563 FunctionElement initializerElement = fieldElement.initializer;
6353 expect(initializerElement, isNotNull); 6564 expect(initializerElement, isNotNull);
6354 List<FunctionElement> functionElements = initializerElement.functions; 6565 List<FunctionElement> functionElements = initializerElement.functions;
6355 expect(functionElements, hasLength(1)); 6566 expect(functionElements, hasLength(1));
6356 List<LocalVariableElement> variableElements = 6567 List<LocalVariableElement> variableElements =
6357 functionElements[0].localVariables; 6568 functionElements[0].localVariables;
6358 expect(variableElements, hasLength(1)); 6569 expect(variableElements, hasLength(1));
6359 LocalVariableElement variableElement = variableElements[0]; 6570 LocalVariableElement variableElement = variableElements[0];
6360 expect(variableElement.name, variableName); 6571 expect(variableElement.hasImplicitType, isTrue);
6361 expect(variableElement.isConst, isFalse); 6572 expect(variableElement.isConst, isFalse);
6362 expect(variableElement.isFinal, isFalse); 6573 expect(variableElement.isFinal, isFalse);
6363 expect(variableElement.isSynthetic, isFalse); 6574 expect(variableElement.isSynthetic, isFalse);
6575 expect(variableElement.name, variableName);
6364 } 6576 }
6365 6577
6366 void test_visitVariableDeclaration_noInitializer() { 6578 void test_visitVariableDeclaration_noInitializer() {
6579 // var v;
6367 ElementHolder holder = new ElementHolder(); 6580 ElementHolder holder = new ElementHolder();
6368 ElementBuilder builder = new ElementBuilder(holder); 6581 ElementBuilder builder = new ElementBuilder(holder);
6369 String variableName = "v"; 6582 String variableName = "v";
6370 VariableDeclaration variableDeclaration = 6583 VariableDeclaration variableDeclaration =
6371 AstFactory.variableDeclaration2(variableName, null); 6584 AstFactory.variableDeclaration2(variableName, null);
6372 AstFactory.variableDeclarationList2(null, [variableDeclaration]); 6585 AstFactory.variableDeclarationList2(null, [variableDeclaration]);
6373 variableDeclaration.accept(builder); 6586 variableDeclaration.accept(builder);
6587
6374 List<TopLevelVariableElement> variables = holder.topLevelVariables; 6588 List<TopLevelVariableElement> variables = holder.topLevelVariables;
6375 expect(variables, hasLength(1)); 6589 expect(variables, hasLength(1));
6376 TopLevelVariableElement variable = variables[0]; 6590 TopLevelVariableElement variable = variables[0];
6377 expect(variable, isNotNull); 6591 expect(variable, isNotNull);
6592 expect(variable.hasImplicitType, isTrue);
6378 expect(variable.initializer, isNull); 6593 expect(variable.initializer, isNull);
6379 expect(variable.name, variableName); 6594 expect(variable.name, variableName);
6380 expect(variable.isConst, isFalse); 6595 expect(variable.isConst, isFalse);
6381 expect(variable.isFinal, isFalse); 6596 expect(variable.isFinal, isFalse);
6382 expect(variable.isSynthetic, isFalse); 6597 expect(variable.isSynthetic, isFalse);
6383 expect(variable.getter, isNotNull); 6598 expect(variable.getter, isNotNull);
6384 expect(variable.setter, isNotNull); 6599 expect(variable.setter, isNotNull);
6385 } 6600 }
6386 6601
6387 void test_visitVariableDeclaration_top_const_hasInitializer() { 6602 void test_visitVariableDeclaration_top_const_hasInitializer() {
6603 // const v = 42;
6388 ElementHolder holder = new ElementHolder(); 6604 ElementHolder holder = new ElementHolder();
6389 ElementBuilder builder = new ElementBuilder(holder); 6605 ElementBuilder builder = new ElementBuilder(holder);
6390 String variableName = "v"; 6606 String variableName = "v";
6391 VariableDeclaration variableDeclaration = 6607 VariableDeclaration variableDeclaration =
6392 AstFactory.variableDeclaration2(variableName, AstFactory.integer(42)); 6608 AstFactory.variableDeclaration2(variableName, AstFactory.integer(42));
6393 AstFactory.variableDeclarationList2(Keyword.CONST, [variableDeclaration]); 6609 AstFactory.variableDeclarationList2(Keyword.CONST, [variableDeclaration]);
6394 variableDeclaration.accept(builder); 6610 variableDeclaration.accept(builder);
6611
6395 List<TopLevelVariableElement> variables = holder.topLevelVariables; 6612 List<TopLevelVariableElement> variables = holder.topLevelVariables;
6396 expect(variables, hasLength(1)); 6613 expect(variables, hasLength(1));
6397 TopLevelVariableElement variable = variables[0]; 6614 TopLevelVariableElement variable = variables[0];
6398 expect(variable, new isInstanceOf<ConstTopLevelVariableElementImpl>()); 6615 expect(variable, new isInstanceOf<ConstTopLevelVariableElementImpl>());
6399 expect(variable.initializer, isNotNull); 6616 expect(variable.initializer, isNotNull);
6400 expect(variable.name, variableName); 6617 expect(variable.name, variableName);
6618 expect(variable.hasImplicitType, isTrue);
6401 expect(variable.isConst, isTrue); 6619 expect(variable.isConst, isTrue);
6402 expect(variable.isFinal, isFalse); 6620 expect(variable.isFinal, isFalse);
6403 expect(variable.isSynthetic, isFalse); 6621 expect(variable.isSynthetic, isFalse);
6404 expect(variable.getter, isNotNull); 6622 expect(variable.getter, isNotNull);
6405 expect(variable.setter, isNull); 6623 expect(variable.setter, isNull);
6406 } 6624 }
6407 6625
6408 void test_visitVariableDeclaration_top_final() { 6626 void test_visitVariableDeclaration_top_final() {
6627 // final v;
6409 ElementHolder holder = new ElementHolder(); 6628 ElementHolder holder = new ElementHolder();
6410 ElementBuilder builder = new ElementBuilder(holder); 6629 ElementBuilder builder = new ElementBuilder(holder);
6411 String variableName = "v"; 6630 String variableName = "v";
6412 VariableDeclaration variableDeclaration = 6631 VariableDeclaration variableDeclaration =
6413 AstFactory.variableDeclaration2(variableName, null); 6632 AstFactory.variableDeclaration2(variableName, null);
6414 AstFactory.variableDeclarationList2(Keyword.FINAL, [variableDeclaration]); 6633 AstFactory.variableDeclarationList2(Keyword.FINAL, [variableDeclaration]);
6415 variableDeclaration.accept(builder); 6634 variableDeclaration.accept(builder);
6416 List<TopLevelVariableElement> variables = holder.topLevelVariables; 6635 List<TopLevelVariableElement> variables = holder.topLevelVariables;
6417 expect(variables, hasLength(1)); 6636 expect(variables, hasLength(1));
6418 TopLevelVariableElement variable = variables[0]; 6637 TopLevelVariableElement variable = variables[0];
6419 expect(variable, isNotNull); 6638 expect(variable, isNotNull);
6639 expect(variable.hasImplicitType, isTrue);
6420 expect(variable.initializer, isNull); 6640 expect(variable.initializer, isNull);
6421 expect(variable.name, variableName); 6641 expect(variable.name, variableName);
6422 expect(variable.isConst, isFalse); 6642 expect(variable.isConst, isFalse);
6423 expect(variable.isFinal, isTrue); 6643 expect(variable.isFinal, isTrue);
6424 expect(variable.isSynthetic, isFalse); 6644 expect(variable.isSynthetic, isFalse);
6425 expect(variable.getter, isNotNull); 6645 expect(variable.getter, isNotNull);
6426 expect(variable.setter, isNull); 6646 expect(variable.setter, isNull);
6427 } 6647 }
6428 6648
6429 void _useParameterInMethod( 6649 void _useParameterInMethod(
(...skipping 2556 matching lines...) Expand 10 before | Expand all | Expand 10 after
8986 if (_expectedExternalScriptName == null) { 9206 if (_expectedExternalScriptName == null) {
8987 expect(scriptSource, isNull, reason: "script $scriptIndex"); 9207 expect(scriptSource, isNull, reason: "script $scriptIndex");
8988 } else { 9208 } else {
8989 expect(scriptSource, isNotNull, reason: "script $scriptIndex"); 9209 expect(scriptSource, isNotNull, reason: "script $scriptIndex");
8990 String actualExternalScriptName = scriptSource.shortName; 9210 String actualExternalScriptName = scriptSource.shortName;
8991 expect(actualExternalScriptName, _expectedExternalScriptName, 9211 expect(actualExternalScriptName, _expectedExternalScriptName,
8992 reason: "script $scriptIndex"); 9212 reason: "script $scriptIndex");
8993 } 9213 }
8994 } 9214 }
8995 } 9215 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698