From b99a20005fcc868c3326408eef6fed0b586f9bec Mon Sep 17 00:00:00 2001 From: adamjmcgrath Date: Thu, 24 Sep 2015 14:29:59 +0100 Subject: [PATCH] Fix Import variable binding for esprima 2, eg `import {foo as bar} from "baz";` --- escodegen.js | 8 +++++--- test/compare-esprima2/import-with-default.expected.js | 4 ++-- test/compare-esprima2/import-with-default.expected.min.js | 2 +- test/compare-esprima2/import-with-default.js | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/escodegen.js b/escodegen.js index c6957763..8f98fbc6 100644 --- a/escodegen.js +++ b/escodegen.js @@ -2262,9 +2262,11 @@ }, ExportSpecifier: function (expr, precedence, flags) { - var result = [ (expr.id || expr.local).name ]; - if (expr.name) { - result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(expr.name)); + var exported = (expr.id || expr.imported).name; + var result = [ exported ]; + var id = expr.name || expr.local; + if (id && id.name !== exported) { + result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(id)); } return result; }, diff --git a/test/compare-esprima2/import-with-default.expected.js b/test/compare-esprima2/import-with-default.expected.js index 75d9a1fc..5e55c4ff 100644 --- a/test/compare-esprima2/import-with-default.expected.js +++ b/test/compare-esprima2/import-with-default.expected.js @@ -2,7 +2,7 @@ import foo from 'foo'; import foo, * as foo from 'foo'; import * as foo from 'foo'; import ok, { - foo, - test, + foo as bar, + test as testing, logging } from 'foo'; diff --git a/test/compare-esprima2/import-with-default.expected.min.js b/test/compare-esprima2/import-with-default.expected.min.js index 9541f438..6b6105f4 100644 --- a/test/compare-esprima2/import-with-default.expected.min.js +++ b/test/compare-esprima2/import-with-default.expected.min.js @@ -1 +1 @@ -import foo from'foo';import foo,*as foo from'foo';import*as foo from'foo';import ok,{foo,test,logging}from'foo' +import foo from'foo';import foo,*as foo from'foo';import*as foo from'foo';import ok,{foo as bar,test as testing,logging}from'foo' diff --git a/test/compare-esprima2/import-with-default.js b/test/compare-esprima2/import-with-default.js index 75d9a1fc..5e55c4ff 100644 --- a/test/compare-esprima2/import-with-default.js +++ b/test/compare-esprima2/import-with-default.js @@ -2,7 +2,7 @@ import foo from 'foo'; import foo, * as foo from 'foo'; import * as foo from 'foo'; import ok, { - foo, - test, + foo as bar, + test as testing, logging } from 'foo';