change execution order of module metadata visitor to resolve module source before building up metadata tree - fixes #1720

This commit is contained in:
Sebastian McKenzie 2015-06-10 01:15:11 +01:00
parent de195e5bfc
commit 4061bea528

View File

@ -69,54 +69,58 @@ var remapVisitor = {
}; };
var metadataVisitor = { var metadataVisitor = {
ModuleDeclaration(node, parent, scope, formatter) { ModuleDeclaration: {
if (node.source) { enter(node, parent, scope, formatter) {
node.source.value = formatter.file.resolveModuleSource(node.source.value); if (node.source) {
node.source.value = formatter.file.resolveModuleSource(node.source.value);
}
} }
}, },
ImportDeclaration(node, parent, scope, formatter) { ImportDeclaration: {
formatter.hasLocalImports = true; exit(node, parent, scope, formatter) {
formatter.hasLocalImports = true;
var specifiers = []; var specifiers = [];
var imported = []; var imported = [];
formatter.metadata.imports.push({ formatter.metadata.imports.push({
source: node.source.value, source: node.source.value,
imported, imported,
specifiers specifiers
}); });
for (var specifier of (this.get("specifiers"): Array)) { for (var specifier of (this.get("specifiers"): Array)) {
var ids = specifier.getBindingIdentifiers(); var ids = specifier.getBindingIdentifiers();
extend(formatter.localImports, ids); extend(formatter.localImports, ids);
var local = specifier.node.local.name; var local = specifier.node.local.name;
if (specifier.isImportDefaultSpecifier()) { if (specifier.isImportDefaultSpecifier()) {
imported.push("default"); imported.push("default");
specifiers.push({ specifiers.push({
kind: "named", kind: "named",
imported: "default", imported: "default",
local local
}); });
} }
if (specifier.isImportSpecifier()) { if (specifier.isImportSpecifier()) {
var importedName = specifier.node.imported.name; var importedName = specifier.node.imported.name;
imported.push(importedName); imported.push(importedName);
specifiers.push({ specifiers.push({
kind: "named", kind: "named",
imported: importedName, imported: importedName,
local local
}); });
} }
if (specifier.isImportNamespaceSpecifier()) { if (specifier.isImportNamespaceSpecifier()) {
imported.push("*"); imported.push("*");
specifiers.push({ specifiers.push({
kind: "namespace", kind: "namespace",
local local
}); });
}
} }
} }
}, },