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 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 /// This method is called immediately after the [library] and its parts have | 382 /// This method is called immediately after the [library] and its parts have |
383 /// been scanned. | 383 /// been scanned. |
384 Future onLibraryScanned(LibraryElement library, LibraryLoader loader) { | 384 Future onLibraryScanned(LibraryElement library, LibraryLoader loader) { |
385 if (library.isPlatformLibrary && !library.isPatched) { | 385 if (library.isPlatformLibrary && !library.isPatched) { |
386 // Apply patch, if any. | 386 // Apply patch, if any. |
387 Uri patchUri = compiler.resolvePatchUri(library.canonicalUri.path); | 387 Uri patchUri = compiler.resolvePatchUri(library.canonicalUri.path); |
388 if (patchUri != null) { | 388 if (patchUri != null) { |
389 return compiler.patchParser.patchLibrary(loader, patchUri, library); | 389 return compiler.patchParser.patchLibrary(loader, patchUri, library); |
390 } | 390 } |
391 } | 391 } |
| 392 if (library.canUseNative) { |
| 393 library.forEachLocalMember((Element element) { |
| 394 if (element.isClass) { |
| 395 checkNativeAnnotation(compiler, element); |
| 396 } |
| 397 }); |
| 398 } |
392 return new Future.value(); | 399 return new Future.value(); |
393 } | 400 } |
394 | 401 |
395 /// This method is called when all new libraries loaded through | 402 /// This method is called when all new libraries loaded through |
396 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports | 403 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports |
397 /// have been computed. | 404 /// have been computed. |
398 Future onLibrariesLoaded(Map<Uri, LibraryElement> loadedLibraries) { | 405 Future onLibrariesLoaded(Map<Uri, LibraryElement> loadedLibraries) { |
399 return new Future.value(); | 406 return new Future.value(); |
400 } | 407 } |
401 | 408 |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 ClassElement stackTraceClass; | 722 ClassElement stackTraceClass; |
716 ClassElement typedDataClass; | 723 ClassElement typedDataClass; |
717 | 724 |
718 /// The constant for the [proxy] variable defined in dart:core. | 725 /// The constant for the [proxy] variable defined in dart:core. |
719 Constant proxyConstant; | 726 Constant proxyConstant; |
720 | 727 |
721 // TODO(johnniwinther): Move this to the JavaScriptBackend. | 728 // TODO(johnniwinther): Move this to the JavaScriptBackend. |
722 /// The constant for the [patch] variable defined in dart:_js_helper. | 729 /// The constant for the [patch] variable defined in dart:_js_helper. |
723 Constant patchConstant; | 730 Constant patchConstant; |
724 | 731 |
| 732 // TODO(johnniwinther): Move this to the JavaScriptBackend. |
| 733 ClassElement nativeAnnotationClass; |
| 734 |
725 // Initialized after symbolClass has been resolved. | 735 // Initialized after symbolClass has been resolved. |
726 FunctionElement symbolConstructor; | 736 FunctionElement symbolConstructor; |
727 | 737 |
728 // Initialized when dart:mirrors is loaded. | 738 // Initialized when dart:mirrors is loaded. |
729 ClassElement mirrorSystemClass; | 739 ClassElement mirrorSystemClass; |
730 | 740 |
731 // Initialized when dart:mirrors is loaded. | 741 // Initialized when dart:mirrors is loaded. |
732 ClassElement mirrorsUsedClass; | 742 ClassElement mirrorsUsedClass; |
733 | 743 |
734 // Initialized after mirrorSystemClass has been resolved. | 744 // Initialized after mirrorSystemClass has been resolved. |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 identicalFunction = coreLibrary.find('identical'); | 1121 identicalFunction = coreLibrary.find('identical'); |
1112 } else if (uri == DART_INTERNAL) { | 1122 } else if (uri == DART_INTERNAL) { |
1113 symbolImplementationClass = findRequiredElement(library, 'Symbol'); | 1123 symbolImplementationClass = findRequiredElement(library, 'Symbol'); |
1114 } else if (uri == DART_MIRRORS) { | 1124 } else if (uri == DART_MIRRORS) { |
1115 mirrorSystemClass = findRequiredElement(library, 'MirrorSystem'); | 1125 mirrorSystemClass = findRequiredElement(library, 'MirrorSystem'); |
1116 mirrorsUsedClass = findRequiredElement(library, 'MirrorsUsed'); | 1126 mirrorsUsedClass = findRequiredElement(library, 'MirrorsUsed'); |
1117 } else if (uri == DART_ASYNC) { | 1127 } else if (uri == DART_ASYNC) { |
1118 deferredLibraryClass = findRequiredElement(library, 'DeferredLibrary'); | 1128 deferredLibraryClass = findRequiredElement(library, 'DeferredLibrary'); |
1119 } else if (uri == DART_NATIVE_TYPED_DATA) { | 1129 } else if (uri == DART_NATIVE_TYPED_DATA) { |
1120 typedDataClass = findRequiredElement(library, 'NativeTypedData'); | 1130 typedDataClass = findRequiredElement(library, 'NativeTypedData'); |
| 1131 } else if (uri == js_backend.JavaScriptBackend.DART_JS_HELPER) { |
| 1132 nativeAnnotationClass = findRequiredElement(library, 'Native'); |
1121 } | 1133 } |
1122 return backend.onLibraryScanned(library, loader); | 1134 return backend.onLibraryScanned(library, loader); |
1123 } | 1135 } |
1124 | 1136 |
1125 /// This method is called when all new libraries loaded through | 1137 /// This method is called when all new libraries loaded through |
1126 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports | 1138 /// [LibraryLoader.loadLibrary] has been loaded and their imports/exports |
1127 /// have been computed. | 1139 /// have been computed. |
1128 /// | 1140 /// |
1129 /// [loadedLibraries] contains the newly loaded libraries. | 1141 /// [loadedLibraries] contains the newly loaded libraries. |
1130 /// | 1142 /// |
(...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2023 static NullSink outputProvider(String name, String extension) { | 2035 static NullSink outputProvider(String name, String extension) { |
2024 return new NullSink('$name.$extension'); | 2036 return new NullSink('$name.$extension'); |
2025 } | 2037 } |
2026 } | 2038 } |
2027 | 2039 |
2028 /// Information about suppressed warnings and hints for a given library. | 2040 /// Information about suppressed warnings and hints for a given library. |
2029 class SuppressionInfo { | 2041 class SuppressionInfo { |
2030 int warnings = 0; | 2042 int warnings = 0; |
2031 int hints = 0; | 2043 int hints = 0; |
2032 } | 2044 } |
OLD | NEW |