| 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.src.dart.element.element_test; | 5 library analyzer.test.src.dart.element.element_test; |
| 6 | 6 |
| 7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
| 8 import 'package:analyzer/dart/constant/value.dart'; |
| 8 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
| 9 import 'package:analyzer/dart/element/type.dart'; | 10 import 'package:analyzer/dart/element/type.dart'; |
| 10 import 'package:analyzer/src/dart/element/element.dart'; | 11 import 'package:analyzer/src/dart/element/element.dart'; |
| 11 import 'package:analyzer/src/dart/element/handle.dart'; | 12 import 'package:analyzer/src/dart/element/handle.dart'; |
| 12 import 'package:analyzer/src/dart/element/type.dart'; | 13 import 'package:analyzer/src/dart/element/type.dart'; |
| 13 import 'package:analyzer/src/generated/engine.dart' | 14 import 'package:analyzer/src/generated/engine.dart' |
| 14 show AnalysisContext, AnalysisOptionsImpl; | 15 show AnalysisContext, AnalysisOptionsImpl; |
| 15 import 'package:analyzer/src/generated/java_core.dart'; | 16 import 'package:analyzer/src/generated/java_core.dart'; |
| 16 import 'package:analyzer/src/generated/source_io.dart'; | 17 import 'package:analyzer/src/generated/source_io.dart'; |
| 17 import 'package:analyzer/src/generated/testing/ast_factory.dart'; | 18 import 'package:analyzer/src/generated/testing/ast_factory.dart'; |
| 18 import 'package:analyzer/src/generated/testing/element_factory.dart'; | 19 import 'package:analyzer/src/generated/testing/element_factory.dart'; |
| 19 import 'package:analyzer/src/generated/testing/test_type_provider.dart'; | 20 import 'package:analyzer/src/generated/testing/test_type_provider.dart'; |
| 20 import 'package:unittest/unittest.dart'; | 21 import 'package:unittest/unittest.dart'; |
| 21 | 22 |
| 22 import '../../../generated/analysis_context_factory.dart' | 23 import '../../../generated/analysis_context_factory.dart' |
| 23 show AnalysisContextHelper; | 24 show AnalysisContextHelper; |
| 25 import '../../../generated/resolver_test_case.dart'; |
| 24 import '../../../generated/test_support.dart'; | 26 import '../../../generated/test_support.dart'; |
| 25 import '../../../reflective_tests.dart'; | 27 import '../../../reflective_tests.dart'; |
| 26 import '../../../utils.dart'; | 28 import '../../../utils.dart'; |
| 27 | 29 |
| 28 main() { | 30 main() { |
| 29 initializeTestEnvironment(); | 31 initializeTestEnvironment(); |
| 32 runReflectiveTests(ElementAnnotationImplTest); |
| 30 runReflectiveTests(FieldElementImplTest); | 33 runReflectiveTests(FieldElementImplTest); |
| 31 runReflectiveTests(FunctionTypeImplTest); | 34 runReflectiveTests(FunctionTypeImplTest); |
| 32 runReflectiveTests(InterfaceTypeImplTest); | 35 runReflectiveTests(InterfaceTypeImplTest); |
| 33 runReflectiveTests(LocalVariableElementImplTest); | 36 runReflectiveTests(LocalVariableElementImplTest); |
| 34 runReflectiveTests(TypeParameterTypeImplTest); | 37 runReflectiveTests(TypeParameterTypeImplTest); |
| 35 runReflectiveTests(VoidTypeImplTest); | 38 runReflectiveTests(VoidTypeImplTest); |
| 36 runReflectiveTests(ClassElementImplTest); | 39 runReflectiveTests(ClassElementImplTest); |
| 37 runReflectiveTests(CompilationUnitElementImplTest); | 40 runReflectiveTests(CompilationUnitElementImplTest); |
| 38 runReflectiveTests(ElementLocationImplTest); | 41 runReflectiveTests(ElementLocationImplTest); |
| 39 runReflectiveTests(ElementImplTest); | 42 runReflectiveTests(ElementImplTest); |
| 40 runReflectiveTests(LibraryElementImplTest); | 43 runReflectiveTests(LibraryElementImplTest); |
| 41 runReflectiveTests(MethodElementImplTest); | 44 runReflectiveTests(MethodElementImplTest); |
| 42 runReflectiveTests(MultiplyDefinedElementImplTest); | 45 runReflectiveTests(MultiplyDefinedElementImplTest); |
| 43 runReflectiveTests(ParameterElementImplTest); | 46 runReflectiveTests(ParameterElementImplTest); |
| 47 runReflectiveTests(TopLevelVariableElementImplTest); |
| 44 } | 48 } |
| 45 | 49 |
| 46 @reflectiveTest | 50 @reflectiveTest |
| 47 class ClassElementImplTest extends EngineTestCase { | 51 class ClassElementImplTest extends EngineTestCase { |
| 48 void test_computeNode_ClassDeclaration() { | 52 void test_computeNode_ClassDeclaration() { |
| 49 AnalysisContextHelper contextHelper = new AnalysisContextHelper(); | 53 AnalysisContextHelper contextHelper = new AnalysisContextHelper(); |
| 50 AnalysisContext context = contextHelper.context; | 54 AnalysisContext context = contextHelper.context; |
| 51 Source source = contextHelper.addSource( | 55 Source source = contextHelper.addSource( |
| 52 "/test.dart", | 56 "/test.dart", |
| 53 r''' | 57 r''' |
| (...skipping 1030 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1084 CompilationUnitElementImpl unit = | 1088 CompilationUnitElementImpl unit = |
| 1085 ElementFactory.compilationUnit("/lib.dart"); | 1089 ElementFactory.compilationUnit("/lib.dart"); |
| 1086 String className = "C"; | 1090 String className = "C"; |
| 1087 ClassElement classElement = ElementFactory.classElement2(className); | 1091 ClassElement classElement = ElementFactory.classElement2(className); |
| 1088 unit.types = <ClassElement>[classElement]; | 1092 unit.types = <ClassElement>[classElement]; |
| 1089 expect(unit.getType("${className}x"), isNull); | 1093 expect(unit.getType("${className}x"), isNull); |
| 1090 } | 1094 } |
| 1091 } | 1095 } |
| 1092 | 1096 |
| 1093 @reflectiveTest | 1097 @reflectiveTest |
| 1098 class ElementAnnotationImplTest extends ResolverTestCase { |
| 1099 void test_computeConstantValue() { |
| 1100 addNamedSource( |
| 1101 '/a.dart', |
| 1102 r''' |
| 1103 class A { |
| 1104 final String f; |
| 1105 const A(this.f); |
| 1106 } |
| 1107 void f(@A('x') int p) {} |
| 1108 '''); |
| 1109 Source source = addSource(r''' |
| 1110 import 'a.dart'; |
| 1111 main() { |
| 1112 f(3); |
| 1113 } |
| 1114 '''); |
| 1115 LibraryElement library = resolve2(source); |
| 1116 CompilationUnit unit = resolveCompilationUnit(source, library); |
| 1117 FunctionDeclaration main = unit.declarations[0]; |
| 1118 BlockFunctionBody body = main.functionExpression.body; |
| 1119 ExpressionStatement statement = body.block.statements[0]; |
| 1120 MethodInvocation invocation = statement.expression; |
| 1121 ParameterElement parameter = |
| 1122 invocation.argumentList.arguments[0].bestParameterElement; |
| 1123 ElementAnnotation annotation = parameter.metadata[0]; |
| 1124 expect(annotation.constantValue, isNull); |
| 1125 DartObject value = annotation.computeConstantValue(); |
| 1126 expect(value, isNotNull); |
| 1127 expect(value.getField('f').toStringValue(), 'x'); |
| 1128 expect(annotation.constantValue, value); |
| 1129 } |
| 1130 } |
| 1131 |
| 1132 @reflectiveTest |
| 1094 class ElementImplTest extends EngineTestCase { | 1133 class ElementImplTest extends EngineTestCase { |
| 1095 void test_equals() { | 1134 void test_equals() { |
| 1096 LibraryElementImpl library = | 1135 LibraryElementImpl library = |
| 1097 ElementFactory.library(createAnalysisContext(), "lib"); | 1136 ElementFactory.library(createAnalysisContext(), "lib"); |
| 1098 ClassElementImpl classElement = ElementFactory.classElement2("C"); | 1137 ClassElementImpl classElement = ElementFactory.classElement2("C"); |
| 1099 (library.definingCompilationUnit as CompilationUnitElementImpl).types = | 1138 (library.definingCompilationUnit as CompilationUnitElementImpl).types = |
| 1100 <ClassElement>[classElement]; | 1139 <ClassElement>[classElement]; |
| 1101 FieldElement field = ElementFactory.fieldElement( | 1140 FieldElement field = ElementFactory.fieldElement( |
| 1102 "next", false, false, false, classElement.type); | 1141 "next", false, false, false, classElement.type); |
| 1103 classElement.fields = <FieldElement>[field]; | 1142 classElement.fields = <FieldElement>[field]; |
| (...skipping 3047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4151 TestElementResynthesizer(AnalysisContext context, this.locationMap) | 4190 TestElementResynthesizer(AnalysisContext context, this.locationMap) |
| 4152 : super(context); | 4191 : super(context); |
| 4153 | 4192 |
| 4154 @override | 4193 @override |
| 4155 Element getElement(ElementLocation location) { | 4194 Element getElement(ElementLocation location) { |
| 4156 return locationMap[location]; | 4195 return locationMap[location]; |
| 4157 } | 4196 } |
| 4158 } | 4197 } |
| 4159 | 4198 |
| 4160 @reflectiveTest | 4199 @reflectiveTest |
| 4200 class TopLevelVariableElementImplTest extends ResolverTestCase { |
| 4201 void test_computeConstantValue() { |
| 4202 addNamedSource( |
| 4203 '/a.dart', |
| 4204 r''' |
| 4205 const int C = 42; |
| 4206 '''); |
| 4207 Source source = addSource(r''' |
| 4208 import 'a.dart'; |
| 4209 main() { |
| 4210 print(C); |
| 4211 } |
| 4212 '''); |
| 4213 LibraryElement library = resolve2(source); |
| 4214 CompilationUnit unit = resolveCompilationUnit(source, library); |
| 4215 FunctionDeclaration main = unit.declarations[0]; |
| 4216 BlockFunctionBody body = main.functionExpression.body; |
| 4217 ExpressionStatement statement = body.block.statements[0]; |
| 4218 MethodInvocation invocation = statement.expression; |
| 4219 SimpleIdentifier argument = invocation.argumentList.arguments[0]; |
| 4220 PropertyAccessorElementImpl getter = argument.bestElement; |
| 4221 TopLevelVariableElement constant = getter.variable; |
| 4222 expect(constant.constantValue, isNull); |
| 4223 DartObject value = constant.computeConstantValue(); |
| 4224 expect(value, isNotNull); |
| 4225 expect(value.toIntValue(), 42); |
| 4226 expect(constant.constantValue, value); |
| 4227 } |
| 4228 } |
| 4229 |
| 4230 @reflectiveTest |
| 4161 class TypeParameterTypeImplTest extends EngineTestCase { | 4231 class TypeParameterTypeImplTest extends EngineTestCase { |
| 4162 void test_creation() { | 4232 void test_creation() { |
| 4163 expect( | 4233 expect( |
| 4164 new TypeParameterTypeImpl( | 4234 new TypeParameterTypeImpl( |
| 4165 new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"))), | 4235 new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"))), |
| 4166 isNotNull); | 4236 isNotNull); |
| 4167 } | 4237 } |
| 4168 | 4238 |
| 4169 void test_getElement() { | 4239 void test_getElement() { |
| 4170 TypeParameterElementImpl element = | 4240 TypeParameterElementImpl element = |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4358 } | 4428 } |
| 4359 | 4429 |
| 4360 class _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction | 4430 class _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction |
| 4361 extends InterfaceTypeImpl { | 4431 extends InterfaceTypeImpl { |
| 4362 _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction(ClassElement arg0) | 4432 _FunctionTypeImplTest_isSubtypeOf_baseCase_classFunction(ClassElement arg0) |
| 4363 : super(arg0); | 4433 : super(arg0); |
| 4364 | 4434 |
| 4365 @override | 4435 @override |
| 4366 bool get isDartCoreFunction => true; | 4436 bool get isDartCoreFunction => true; |
| 4367 } | 4437 } |
| OLD | NEW |