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 part of dart2js; | 5 part of dart2js; |
6 | 6 |
7 /** | 7 /** |
8 * If true, print a warning for each method that was resolved, but not | 8 * If true, print a warning for each method that was resolved, but not |
9 * compiled. | 9 * compiled. |
10 */ | 10 */ |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 ClassElement get boolImplementation => compiler.boolClass; | 175 ClassElement get boolImplementation => compiler.boolClass; |
176 ClassElement get nullImplementation => compiler.nullClass; | 176 ClassElement get nullImplementation => compiler.nullClass; |
177 | 177 |
178 ClassElement defaultSuperclass(ClassElement element) => compiler.objectClass; | 178 ClassElement defaultSuperclass(ClassElement element) => compiler.objectClass; |
179 | 179 |
180 bool isDefaultNoSuchMethodImplementation(Element element) { | 180 bool isDefaultNoSuchMethodImplementation(Element element) { |
181 assert(element.name == Compiler.NO_SUCH_METHOD); | 181 assert(element.name == Compiler.NO_SUCH_METHOD); |
182 ClassElement classElement = element.getEnclosingClass(); | 182 ClassElement classElement = element.getEnclosingClass(); |
183 return classElement == compiler.objectClass; | 183 return classElement == compiler.objectClass; |
184 } | 184 } |
| 185 |
| 186 void enableMirrors() {} |
| 187 |
| 188 void registerStaticUse(Element element, Enqueuer enqueuer) {} |
185 } | 189 } |
186 | 190 |
187 /** | 191 /** |
188 * Key class used in [TokenMap] in which the hash code for a token is based | 192 * Key class used in [TokenMap] in which the hash code for a token is based |
189 * on the [charOffset]. | 193 * on the [charOffset]. |
190 */ | 194 */ |
191 class TokenKey { | 195 class TokenKey { |
192 final Token token; | 196 final Token token; |
193 TokenKey(this.token); | 197 TokenKey(this.token); |
194 int get hashCode => token.charOffset; | 198 int get hashCode => token.charOffset; |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 | 521 |
518 Universe get resolverWorld => enqueuer.resolution.universe; | 522 Universe get resolverWorld => enqueuer.resolution.universe; |
519 Universe get codegenWorld => enqueuer.codegen.universe; | 523 Universe get codegenWorld => enqueuer.codegen.universe; |
520 | 524 |
521 bool get hasBuildId => buildId != UNDETERMINED_BUILD_ID; | 525 bool get hasBuildId => buildId != UNDETERMINED_BUILD_ID; |
522 | 526 |
523 bool get mirrorsEnabled => mirrorSystemClass != null; | 527 bool get mirrorsEnabled => mirrorSystemClass != null; |
524 | 528 |
525 bool get analyzeAll => analyzeAllFlag || compileAll; | 529 bool get analyzeAll => analyzeAllFlag || compileAll; |
526 | 530 |
527 bool get compileAll => mirrorsEnabled; | 531 bool get compileAll => false; |
528 | 532 |
529 bool get disableTypeInference => disableTypeInferenceFlag || mirrorsEnabled; | 533 bool get disableTypeInference => disableTypeInferenceFlag || mirrorsEnabled; |
530 | 534 |
531 int getNextFreeClassId() => nextFreeClassId++; | 535 int getNextFreeClassId() => nextFreeClassId++; |
532 | 536 |
533 void ensure(bool condition) { | 537 void ensure(bool condition) { |
534 if (!condition) cancel('failed assertion in leg'); | 538 if (!condition) cancel('failed assertion in leg'); |
535 } | 539 } |
536 | 540 |
537 void unimplemented(String methodName, | 541 void unimplemented(String methodName, |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 if (dynamicClass != null) { | 660 if (dynamicClass != null) { |
657 // When loading the built-in libraries, dynamicClass is null. We | 661 // When loading the built-in libraries, dynamicClass is null. We |
658 // take advantage of this as core imports js_helper and sees [dynamic] | 662 // take advantage of this as core imports js_helper and sees [dynamic] |
659 // this way. | 663 // this way. |
660 withCurrentElement(dynamicClass, () { | 664 withCurrentElement(dynamicClass, () { |
661 library.addToScope(dynamicClass, this); | 665 library.addToScope(dynamicClass, this); |
662 }); | 666 }); |
663 } | 667 } |
664 if (uri == Uri.parse('dart:mirrors')) { | 668 if (uri == Uri.parse('dart:mirrors')) { |
665 mirrorSystemClass = library.find(const SourceString('MirrorSystem')); | 669 mirrorSystemClass = library.find(const SourceString('MirrorSystem')); |
| 670 backend.enableMirrors(); |
666 metadataHandler = constantHandler; | 671 metadataHandler = constantHandler; |
667 } else if (uri == Uri.parse('dart:_collection-dev')) { | 672 } else if (uri == Uri.parse('dart:_collection-dev')) { |
668 symbolImplementationClass = library.find(const SourceString('Symbol')); | 673 symbolImplementationClass = library.find(const SourceString('Symbol')); |
669 } | 674 } |
670 } | 675 } |
671 | 676 |
672 void onClassResolved(ClassElement cls) { | 677 void onClassResolved(ClassElement cls) { |
673 if (mirrorSystemClass == cls) { | 678 if (mirrorSystemClass == cls) { |
674 mirrorSystemGetNameFunction = | 679 mirrorSystemGetNameFunction = |
675 cls.lookupLocalMember(const SourceString('getName')); | 680 cls.lookupLocalMember(const SourceString('getName')); |
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1387 | 1392 |
1388 void close() {} | 1393 void close() {} |
1389 | 1394 |
1390 toString() => name; | 1395 toString() => name; |
1391 | 1396 |
1392 /// Convenience method for getting an [api.CompilerOutputProvider]. | 1397 /// Convenience method for getting an [api.CompilerOutputProvider]. |
1393 static NullSink outputProvider(String name, String extension) { | 1398 static NullSink outputProvider(String name, String extension) { |
1394 return new NullSink('$name.$extension'); | 1399 return new NullSink('$name.$extension'); |
1395 } | 1400 } |
1396 } | 1401 } |
OLD | NEW |