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

Side by Side Diff: pkg/compiler/lib/src/deferred_load.dart

Issue 2982733002: Use entities in most of MirrorsData (Closed)
Patch Set: Created 3 years, 5 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 deferred_load; 5 library deferred_load;
6 6
7 import 'common/tasks.dart' show CompilerTask; 7 import 'common/tasks.dart' show CompilerTask;
8 import 'common.dart'; 8 import 'common.dart';
9 import 'compiler.dart' show Compiler; 9 import 'compiler.dart' show Compiler;
10 import 'constants/expressions.dart' show ConstantExpression; 10 import 'constants/expressions.dart' show ConstantExpression;
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 /// The elements are added with [_mapDependencies]. 585 /// The elements are added with [_mapDependencies].
586 void _addMirrorElements() { 586 void _addMirrorElements() {
587 void mapDependenciesIfResolved( 587 void mapDependenciesIfResolved(
588 Element element, _DeferredImport deferredImport) { 588 Element element, _DeferredImport deferredImport) {
589 // If an element is the target of a MirrorsUsed annotation but never used 589 // If an element is the target of a MirrorsUsed annotation but never used
590 // It will not be resolved, and we should not call isNeededForReflection. 590 // It will not be resolved, and we should not call isNeededForReflection.
591 // TODO(sigurdm): Unresolved elements should just answer false when 591 // TODO(sigurdm): Unresolved elements should just answer false when
592 // asked isNeededForReflection. Instead an internal error is triggered. 592 // asked isNeededForReflection. Instead an internal error is triggered.
593 // So we have to filter them out here. 593 // So we have to filter them out here.
594 if (element is AnalyzableElementX && !element.hasTreeElements) return; 594 if (element is AnalyzableElementX && !element.hasTreeElements) return;
595 if (compiler.backend.mirrorsData.isAccessibleByReflection(element)) { 595
596 bool isAccessibleByReflection(Element element) {
597 if (element.isLibrary) {
598 return false;
599 } else if (element.isClass) {
600 ClassElement cls = element;
601 return compiler.backend.mirrorsData
602 .isClassAccessibleByReflection(cls);
603 } else if (element.isTypedef) {
604 TypedefElement typedef = element;
605 return compiler.backend.mirrorsData
606 .isTypedefAccessibleByReflection(typedef);
607 } else {
608 MemberElement member = element;
609 return compiler.backend.mirrorsData
610 .isMemberAccessibleByReflection(member);
611 }
612 }
613
614 if (isAccessibleByReflection(element)) {
596 _mapDependencies( 615 _mapDependencies(
597 element: element, import: deferredImport, isMirrorUsage: true); 616 element: element, import: deferredImport, isMirrorUsage: true);
598 } 617 }
599 } 618 }
600 619
601 // For each deferred import we analyze all elements reachable from the 620 // For each deferred import we analyze all elements reachable from the
602 // imported library through non-deferred imports. 621 // imported library through non-deferred imports.
603 void handleLibrary(LibraryElement library, _DeferredImport deferredImport) { 622 void handleLibrary(LibraryElement library, _DeferredImport deferredImport) {
604 library.implementation.forEachLocalMember((Element element) { 623 library.implementation.forEachLocalMember((Element element) {
605 mapDependenciesIfResolved(element, deferredImport); 624 mapDependenciesIfResolved(element, deferredImport);
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 1122
1104 bool operator ==(other) { 1123 bool operator ==(other) {
1105 if (other is! _DeclaredDeferredImport) return false; 1124 if (other is! _DeclaredDeferredImport) return false;
1106 return declaration == other.declaration; 1125 return declaration == other.declaration;
1107 } 1126 }
1108 1127
1109 int get hashCode => declaration.hashCode * 17; 1128 int get hashCode => declaration.hashCode * 17;
1110 1129
1111 String toString() => '$declaration'; 1130 String toString() => '$declaration';
1112 } 1131 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/common_elements.dart ('k') | pkg/compiler/lib/src/js_backend/mirrors_analysis.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698