OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 dart2js.resolution.members; | 5 library dart2js.resolution.members; |
6 | 6 |
7 import '../common.dart'; | 7 import '../common.dart'; |
8 import '../common/names.dart' show Selectors; | 8 import '../common/names.dart' show Selectors; |
9 import '../common/resolution.dart' show Feature; | 9 import '../common/resolution.dart' show Feature; |
10 import '../compiler.dart' show Compiler; | 10 import '../compiler.dart' show Compiler; |
(...skipping 2993 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3004 } | 3004 } |
3005 } | 3005 } |
3006 | 3006 |
3007 /// Callback for native enqueuer to parse a type. Returns [:null:] on error. | 3007 /// Callback for native enqueuer to parse a type. Returns [:null:] on error. |
3008 DartType resolveTypeFromString(Node node, String typeName) { | 3008 DartType resolveTypeFromString(Node node, String typeName) { |
3009 Element element = lookupInScope(reporter, node, scope, typeName); | 3009 Element element = lookupInScope(reporter, node, scope, typeName); |
3010 if (element == null) return null; | 3010 if (element == null) return null; |
3011 if (element is! ClassElement) return null; | 3011 if (element is! ClassElement) return null; |
3012 ClassElement cls = element; | 3012 ClassElement cls = element; |
3013 cls.ensureResolved(resolution); | 3013 cls.ensureResolved(resolution); |
3014 return cls.computeType(resolution); | 3014 cls.computeType(resolution); |
| 3015 return cls.rawType; |
3015 } | 3016 } |
3016 | 3017 |
3017 /// Handle index operations like `a[b] = c`, `a[b] += c`, and `a[b]++`. | 3018 /// Handle index operations like `a[b] = c`, `a[b] += c`, and `a[b]++`. |
3018 ResolutionResult handleIndexSendSet(SendSet node) { | 3019 ResolutionResult handleIndexSendSet(SendSet node) { |
3019 String operatorText = node.assignmentOperator.source; | 3020 String operatorText = node.assignmentOperator.source; |
3020 Node receiver = node.receiver; | 3021 Node receiver = node.receiver; |
3021 Node index = node.arguments.head; | 3022 Node index = node.arguments.head; |
3022 visitExpression(receiver); | 3023 visitExpression(receiver); |
3023 visitExpression(index); | 3024 visitExpression(index); |
3024 AccessSemantics semantics = const DynamicAccess.expression(); | 3025 AccessSemantics semantics = const DynamicAccess.expression(); |
(...skipping 1671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4696 } | 4697 } |
4697 return const NoneResult(); | 4698 return const NoneResult(); |
4698 } | 4699 } |
4699 } | 4700 } |
4700 | 4701 |
4701 /// Looks up [name] in [scope] and unwraps the result. | 4702 /// Looks up [name] in [scope] and unwraps the result. |
4702 Element lookupInScope( | 4703 Element lookupInScope( |
4703 DiagnosticReporter reporter, Node node, Scope scope, String name) { | 4704 DiagnosticReporter reporter, Node node, Scope scope, String name) { |
4704 return Elements.unwrap(scope.lookup(name), reporter, node); | 4705 return Elements.unwrap(scope.lookup(name), reporter, node); |
4705 } | 4706 } |
OLD | NEW |