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

Side by Side Diff: dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart

Issue 21110003: Implement MirrorUsed.targets for libraries (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Merged with r25609 and added test. Created 7 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 | Annotate | Revision Log
OLDNEW
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 part of resolution; 5 part of resolution;
6 6
7 abstract class TreeElements { 7 abstract class TreeElements {
8 Element get currentElement; 8 Element get currentElement;
9 Set<Node> get superUses; 9 Set<Node> get superUses;
10 10
(...skipping 2199 matching lines...) Expand 10 before | Expand all | Expand 10 after
2210 } 2210 }
2211 } 2211 }
2212 } 2212 }
2213 2213
2214 visitSend(Send node) { 2214 visitSend(Send node) {
2215 bool oldSendIsMemberAccess = sendIsMemberAccess; 2215 bool oldSendIsMemberAccess = sendIsMemberAccess;
2216 sendIsMemberAccess = node.isPropertyAccess || node.isCall; 2216 sendIsMemberAccess = node.isPropertyAccess || node.isCall;
2217 Element target = resolveSend(node); 2217 Element target = resolveSend(node);
2218 sendIsMemberAccess = oldSendIsMemberAccess; 2218 sendIsMemberAccess = oldSendIsMemberAccess;
2219 2219
2220 if (target != null && target == compiler.mirrorSystemGetNameFunction) { 2220 if (target != null
2221 && target == compiler.mirrorSystemGetNameFunction
2222 && !compiler.mirrorUsageAnalyzerTask.hasMirrorUsage(enclosingElement)) {
2221 compiler.reportHint( 2223 compiler.reportHint(
2222 node.selector, MessageKind.STATIC_FUNCTION_BLOAT, 2224 node.selector, MessageKind.STATIC_FUNCTION_BLOAT,
2223 {'class': compiler.mirrorSystemClass.name, 2225 {'class': compiler.mirrorSystemClass.name,
2224 'name': compiler.mirrorSystemGetNameFunction.name}); 2226 'name': compiler.mirrorSystemGetNameFunction.name});
2225 } 2227 }
2226 2228
2227 if (!Elements.isUnresolved(target)) { 2229 if (!Elements.isUnresolved(target)) {
2228 if (target.isAbstractField()) { 2230 if (target.isAbstractField()) {
2229 AbstractFieldElement field = target; 2231 AbstractFieldElement field = target;
2230 target = field.getter; 2232 target = field.getter;
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
2628 compiler.reportError(argumentNode, MessageKind.STRING_EXPECTED, 2630 compiler.reportError(argumentNode, MessageKind.STRING_EXPECTED,
2629 {'type': type}); 2631 {'type': type});
2630 } else { 2632 } else {
2631 StringConstant stringConstant = name; 2633 StringConstant stringConstant = name;
2632 String nameString = stringConstant.toDartString().slowToString(); 2634 String nameString = stringConstant.toDartString().slowToString();
2633 if (validateSymbol(argumentNode, nameString)) { 2635 if (validateSymbol(argumentNode, nameString)) {
2634 world.registerConstSymbol(nameString, mapping); 2636 world.registerConstSymbol(nameString, mapping);
2635 } 2637 }
2636 } 2638 }
2637 } else { 2639 } else {
2638 compiler.reportHint( 2640 if (!compiler.mirrorUsageAnalyzerTask.hasMirrorUsage(
2639 node.newToken, MessageKind.NON_CONST_BLOAT, 2641 enclosingElement)) {
2640 {'name': compiler.symbolClass.name}); 2642 compiler.reportHint(
2643 node.newToken, MessageKind.NON_CONST_BLOAT,
2644 {'name': compiler.symbolClass.name});
2645 }
2641 world.registerNewSymbol(mapping); 2646 world.registerNewSymbol(mapping);
2642 } 2647 }
2643 } 2648 }
2644 2649
2645 return null; 2650 return null;
2646 } 2651 }
2647 2652
2648 bool validateSymbol(Node node, String name) { 2653 bool validateSymbol(Node node, String name) {
2649 if (name.isEmpty) return true; 2654 if (name.isEmpty) return true;
2650 if (name.startsWith('_')) { 2655 if (name.startsWith('_')) {
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after
4063 return e; 4068 return e;
4064 } 4069 }
4065 4070
4066 /// Assumed to be called by [resolveRedirectingFactory]. 4071 /// Assumed to be called by [resolveRedirectingFactory].
4067 Element visitReturn(Return node) { 4072 Element visitReturn(Return node) {
4068 Node expression = node.expression; 4073 Node expression = node.expression;
4069 return finishConstructorReference(visit(expression), 4074 return finishConstructorReference(visit(expression),
4070 expression, expression); 4075 expression, expression);
4071 } 4076 }
4072 } 4077 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698