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.src.dart.element.element; | 5 library analyzer.src.dart.element.element; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 import 'dart:math' show min; | 8 import 'dart:math' show min; |
9 | 9 |
10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
11 import 'package:analyzer/dart/ast/token.dart'; | 11 import 'package:analyzer/dart/ast/token.dart'; |
12 import 'package:analyzer/dart/constant/value.dart'; | 12 import 'package:analyzer/dart/constant/value.dart'; |
13 import 'package:analyzer/dart/element/element.dart'; | 13 import 'package:analyzer/dart/element/element.dart'; |
14 import 'package:analyzer/dart/element/type.dart'; | 14 import 'package:analyzer/dart/element/type.dart'; |
15 import 'package:analyzer/dart/element/visitor.dart'; | 15 import 'package:analyzer/dart/element/visitor.dart'; |
16 import 'package:analyzer/src/dart/ast/utilities.dart'; | 16 import 'package:analyzer/src/dart/ast/utilities.dart'; |
17 import 'package:analyzer/src/dart/constant/value.dart'; | 17 import 'package:analyzer/src/dart/constant/value.dart'; |
18 import 'package:analyzer/src/dart/element/handle.dart'; | 18 import 'package:analyzer/src/dart/element/handle.dart'; |
19 import 'package:analyzer/src/dart/element/type.dart'; | 19 import 'package:analyzer/src/dart/element/type.dart'; |
20 import 'package:analyzer/src/error/codes.dart' show CompileTimeErrorCode; | 20 import 'package:analyzer/src/error/codes.dart' show CompileTimeErrorCode; |
21 import 'package:analyzer/src/generated/constant.dart' show EvaluationResultImpl; | 21 import 'package:analyzer/src/generated/constant.dart' show EvaluationResultImpl; |
22 import 'package:analyzer/src/generated/engine.dart' | 22 import 'package:analyzer/src/generated/engine.dart' |
23 show AnalysisContext, AnalysisEngine; | 23 show AnalysisContext, AnalysisEngine; |
24 import 'package:analyzer/src/generated/java_engine.dart'; | 24 import 'package:analyzer/src/generated/java_engine.dart'; |
25 import 'package:analyzer/src/generated/resolver.dart'; | 25 import 'package:analyzer/src/generated/resolver.dart'; |
26 import 'package:analyzer/src/generated/sdk.dart' show DartSdk; | 26 import 'package:analyzer/src/generated/sdk.dart' show DartSdk; |
27 import 'package:analyzer/src/generated/source.dart'; | 27 import 'package:analyzer/src/generated/source.dart'; |
28 import 'package:analyzer/src/generated/testing/ast_factory.dart'; | 28 import 'package:analyzer/src/generated/testing/ast_test_factory.dart'; |
29 import 'package:analyzer/src/generated/utilities_collection.dart'; | 29 import 'package:analyzer/src/generated/utilities_collection.dart'; |
30 import 'package:analyzer/src/generated/utilities_dart.dart'; | 30 import 'package:analyzer/src/generated/utilities_dart.dart'; |
31 import 'package:analyzer/src/generated/utilities_general.dart'; | 31 import 'package:analyzer/src/generated/utilities_general.dart'; |
32 import 'package:analyzer/src/summary/idl.dart'; | 32 import 'package:analyzer/src/summary/idl.dart'; |
33 import 'package:analyzer/src/task/dart.dart'; | 33 import 'package:analyzer/src/task/dart.dart'; |
34 | 34 |
35 /** | 35 /** |
36 * Assert that the given [object] is null, which in the places where this | 36 * Assert that the given [object] is null, which in the places where this |
37 * function is called means that the element is not resynthesized. | 37 * function is called means that the element is not resynthesized. |
38 */ | 38 */ |
(...skipping 2171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2210 String name = serialized.name; | 2210 String name = serialized.name; |
2211 List<Expression> arguments = <Expression>[]; | 2211 List<Expression> arguments = <Expression>[]; |
2212 { | 2212 { |
2213 int numArguments = serialized.arguments.length; | 2213 int numArguments = serialized.arguments.length; |
2214 int numNames = serialized.argumentNames.length; | 2214 int numNames = serialized.argumentNames.length; |
2215 for (int i = 0; i < numArguments; i++) { | 2215 for (int i = 0; i < numArguments; i++) { |
2216 Expression expression = enclosingUnit.resynthesizerContext | 2216 Expression expression = enclosingUnit.resynthesizerContext |
2217 .buildExpression(this, serialized.arguments[i]); | 2217 .buildExpression(this, serialized.arguments[i]); |
2218 int nameIndex = numNames + i - numArguments; | 2218 int nameIndex = numNames + i - numArguments; |
2219 if (nameIndex >= 0) { | 2219 if (nameIndex >= 0) { |
2220 expression = AstFactory.namedExpression2( | 2220 expression = AstTestFactory.namedExpression2( |
2221 serialized.argumentNames[nameIndex], expression); | 2221 serialized.argumentNames[nameIndex], expression); |
2222 } | 2222 } |
2223 arguments.add(expression); | 2223 arguments.add(expression); |
2224 } | 2224 } |
2225 } | 2225 } |
2226 switch (kind) { | 2226 switch (kind) { |
2227 case UnlinkedConstructorInitializerKind.field: | 2227 case UnlinkedConstructorInitializerKind.field: |
2228 ConstructorFieldInitializer initializer = | 2228 ConstructorFieldInitializer initializer = |
2229 AstFactory.constructorFieldInitializer( | 2229 AstTestFactory.constructorFieldInitializer( |
2230 false, | 2230 false, |
2231 name, | 2231 name, |
2232 enclosingUnit.resynthesizerContext | 2232 enclosingUnit.resynthesizerContext |
2233 .buildExpression(this, serialized.expression)); | 2233 .buildExpression(this, serialized.expression)); |
2234 initializer.fieldName.staticElement = enclosingElement.getField(name); | 2234 initializer.fieldName.staticElement = enclosingElement.getField(name); |
2235 return initializer; | 2235 return initializer; |
2236 case UnlinkedConstructorInitializerKind.superInvocation: | 2236 case UnlinkedConstructorInitializerKind.superInvocation: |
2237 SuperConstructorInvocation initializer = | 2237 SuperConstructorInvocation initializer = |
2238 AstFactory.superConstructorInvocation2( | 2238 AstTestFactory.superConstructorInvocation2( |
2239 name.isNotEmpty ? name : null, arguments); | 2239 name.isNotEmpty ? name : null, arguments); |
2240 ClassElement superElement = enclosingElement.supertype.element; | 2240 ClassElement superElement = enclosingElement.supertype.element; |
2241 ConstructorElement element = name.isEmpty | 2241 ConstructorElement element = name.isEmpty |
2242 ? superElement.unnamedConstructor | 2242 ? superElement.unnamedConstructor |
2243 : superElement.getNamedConstructor(name); | 2243 : superElement.getNamedConstructor(name); |
2244 initializer.staticElement = element; | 2244 initializer.staticElement = element; |
2245 initializer.constructorName?.staticElement = element; | 2245 initializer.constructorName?.staticElement = element; |
2246 return initializer; | 2246 return initializer; |
2247 case UnlinkedConstructorInitializerKind.thisInvocation: | 2247 case UnlinkedConstructorInitializerKind.thisInvocation: |
2248 RedirectingConstructorInvocation initializer = | 2248 RedirectingConstructorInvocation initializer = |
2249 AstFactory.redirectingConstructorInvocation2( | 2249 AstTestFactory.redirectingConstructorInvocation2( |
2250 name.isNotEmpty ? name : null, arguments); | 2250 name.isNotEmpty ? name : null, arguments); |
2251 ConstructorElement element = name.isEmpty | 2251 ConstructorElement element = name.isEmpty |
2252 ? enclosingElement.unnamedConstructor | 2252 ? enclosingElement.unnamedConstructor |
2253 : enclosingElement.getNamedConstructor(name); | 2253 : enclosingElement.getNamedConstructor(name); |
2254 initializer.staticElement = element; | 2254 initializer.staticElement = element; |
2255 initializer.constructorName?.staticElement = element; | 2255 initializer.constructorName?.staticElement = element; |
2256 return initializer; | 2256 return initializer; |
2257 } | 2257 } |
2258 return null; | 2258 return null; |
2259 } | 2259 } |
(...skipping 6227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8487 | 8487 |
8488 @override | 8488 @override |
8489 void visitElement(Element element) { | 8489 void visitElement(Element element) { |
8490 int offset = element.nameOffset; | 8490 int offset = element.nameOffset; |
8491 if (offset != -1) { | 8491 if (offset != -1) { |
8492 map[offset] = element; | 8492 map[offset] = element; |
8493 } | 8493 } |
8494 super.visitElement(element); | 8494 super.visitElement(element); |
8495 } | 8495 } |
8496 } | 8496 } |
OLD | NEW |