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

Unified Diff: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart

Issue 362243003: Generate mock libraries and assert that helpers are non-null. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix after rebase. Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/native_handler.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
index 93d02784641af6493c904987245a7204a777f0ff..3dddaee07d2da3b3baad962b7192419cc0cd225d 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -376,12 +376,17 @@ class JavaScriptBackend extends Backend {
return constantCompilerTask.jsConstantCompiler;
}
- // TODO(karlklose): split into findHelperFunction and findHelperClass and
+ // TODO(karlklose): Split into findHelperFunction and findHelperClass and
// add a check that the element has the expected kind.
- Element findHelper(String name)
- => jsHelperLibrary.findLocal(name);
- Element findInterceptor(String name)
- => interceptorsLibrary.findLocal(name);
+ Element findHelper(String name) => find(jsHelperLibrary, name);
+ Element findInterceptor(String name) => find(interceptorsLibrary, name);
+
+ Element find(LibraryElement library, String name) {
+ Element element = library.findLocal(name);
+ assert(invariant(library, element != null,
+ message: "Element '$name' not found in '${library.canonicalUri}'."));
+ return element;
+ }
bool isForeign(Element element) => element.library == foreignLibrary;
@@ -780,7 +785,6 @@ class JavaScriptBackend extends Backend {
// Because we cannot enqueue elements at the time of emission,
// we make sure they are always generated.
enqueue(enqueuer, findHelper('isJsIndexable'), registry);
- enqueue(enqueuer, findInterceptor('dispatchPropertyName'), registry);
}
customElementsAnalysis.registerInstantiatedClass(cls, enqueuer);
@@ -934,12 +938,12 @@ class JavaScriptBackend extends Backend {
for (String name in const [START_ROOT_ISOLATE,
'_currentIsolate',
'_callInIsolate']) {
- Element element = isolateHelperLibrary.find(name);
+ Element element = find(isolateHelperLibrary, name);
enqueuer.addToWorkList(element);
compiler.globalDependencies.registerDependency(element);
}
} else {
- enqueuer.addToWorkList(isolateHelperLibrary.find(START_ROOT_ISOLATE));
+ enqueuer.addToWorkList(find(isolateHelperLibrary, START_ROOT_ISOLATE));
}
}
@@ -1525,7 +1529,7 @@ class JavaScriptBackend extends Backend {
void initializeHelperClasses() {
final List missingHelperClasses = [];
ClassElement lookupHelperClass(String name) {
- ClassElement result = jsHelperLibrary.find(name);
+ ClassElement result = findHelper(name);
if (result == null) {
missingHelperClasses.add(name);
}
@@ -1545,17 +1549,16 @@ class JavaScriptBackend extends Backend {
return super.onLibraryScanned(library, loader).then((_) {
Uri uri = library.canonicalUri;
- // TODO(johnniwinther): Assert that the elements are found.
VariableElement findVariable(String name) {
- return library.find(name);
+ return find(library, name);
}
FunctionElement findMethod(String name) {
- return library.find(name);
+ return find(library, name);
}
ClassElement findClass(String name) {
- return library.find(name);
+ return find(library, name);
}
if (uri == DART_INTERCEPTORS) {
@@ -1589,7 +1592,7 @@ class JavaScriptBackend extends Backend {
jsMutableIndexableClass = findClass('JSMutableIndexable');
} else if (uri == DART_JS_HELPER) {
initializeHelperClasses();
- assertMethod = jsHelperLibrary.find('assertHelper');
+ assertMethod = findHelper('assertHelper');
typeLiteralClass = findClass('TypeImpl');
constMapLiteralClass = findClass('ConstantMap');
@@ -1602,14 +1605,14 @@ class JavaScriptBackend extends Backend {
noInlineClass = findClass('NoInline');
irRepresentationClass = findClass('IrRepresentation');
- getIsolateAffinityTagMarker = library.find('getIsolateAffinityTag');
+ getIsolateAffinityTagMarker = findMethod('getIsolateAffinityTag');
- requiresPreambleMarker = library.find('requiresPreamble');
+ requiresPreambleMarker = findMethod('requiresPreamble');
} else if (uri == DART_JS_MIRRORS) {
- disableTreeShakingMarker = library.find('disableTreeShaking');
- preserveMetadataMarker = library.find('preserveMetadata');
+ disableTreeShakingMarker = find(library, 'disableTreeShaking');
+ preserveMetadataMarker = find(library, 'preserveMetadata');
} else if (uri == DART_JS_NAMES) {
- preserveNamesMarker = library.find('preserveNames');
+ preserveNamesMarker = find(library, 'preserveNames');
} else if (uri == DART_HTML) {
htmlLibraryIsLoaded = true;
}
@@ -1633,6 +1636,8 @@ class JavaScriptBackend extends Backend {
// [LinkedHashMap] is reexported from dart:collection and can therefore not
// be loaded from dart:core in [onLibraryScanned].
mapLiteralClass = compiler.coreLibrary.find('LinkedHashMap');
+ assert(invariant(compiler.coreLibrary, mapLiteralClass != null,
+ message: "Element 'LinkedHashMap' not found in 'dart:core'."));
implementationClasses = <ClassElement, ClassElement>{};
implementationClasses[compiler.intClass] = jsIntClass;
@@ -2191,14 +2196,15 @@ class JavaScriptionResolutionCallbacks extends ResolutionCallbacks {
}
if (type is FunctionType) {
registerBackendStaticInvocation(
- backend.findHelper('functionTypeTestMetaHelper'), registry);
+ backend.find(backend.jsHelperLibrary, 'functionTypeTestMetaHelper'),
+ registry);
}
if (type.element != null && type.element.isNative) {
// We will neeed to add the "$is" and "$as" properties on the
// JavaScript object prototype, so we make sure
// [:defineProperty:] is compiled.
registerBackendStaticInvocation(
- backend.findHelper('defineProperty'), registry);
+ backend.find(backend.jsHelperLibrary, 'defineProperty'), registry);
}
}
@@ -2254,7 +2260,7 @@ class JavaScriptionResolutionCallbacks extends ResolutionCallbacks {
void onConstantMap(Registry registry) {
assert(registry.isForResolution);
void enqueue(String name) {
- Element e = backend.findHelper(name);
+ Element e = backend.find(backend.jsHelperLibrary, name);
registerBackendInstantiation(e, registry);
}
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/native_handler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698