From 4fc588ea9f919193b2e99472e448d0a306deb492 Mon Sep 17 00:00:00 2001 From: Brian Donovan Date: Mon, 21 Mar 2016 14:37:08 -0700 Subject: [PATCH] Rewrite an entire member expression for namespace imports. Closes #565. --- src/Declaration.js | 3 +-- .../_config.js | 3 +++ .../_expected/amd.js | 9 +++++++++ .../_expected/cjs.js | 7 +++++++ .../_expected/es6.js | 5 +++++ .../_expected/iife.js | 10 ++++++++++ .../_expected/umd.js | 13 +++++++++++++ .../foo.js | 3 +++ .../main.js | 2 ++ 9 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 test/form/whitespace-around-namespace-member-expression/_config.js create mode 100644 test/form/whitespace-around-namespace-member-expression/_expected/amd.js create mode 100644 test/form/whitespace-around-namespace-member-expression/_expected/cjs.js create mode 100644 test/form/whitespace-around-namespace-member-expression/_expected/es6.js create mode 100644 test/form/whitespace-around-namespace-member-expression/_expected/iife.js create mode 100644 test/form/whitespace-around-namespace-member-expression/_expected/umd.js create mode 100644 test/form/whitespace-around-namespace-member-expression/foo.js create mode 100644 test/form/whitespace-around-namespace-member-expression/main.js diff --git a/src/Declaration.js b/src/Declaration.js index f8a308d..7755cdd 100644 --- a/src/Declaration.js +++ b/src/Declaration.js @@ -196,8 +196,7 @@ export class SyntheticNamespaceDeclaration { // the reference by pointing directly to `bar` if ( reference.parts.length ) { reference.name = reference.parts.shift(); - - reference.end += reference.name.length + 1; // TODO this is brittle + reference.end = reference.node.end; const original = this.originals[ reference.name ]; diff --git a/test/form/whitespace-around-namespace-member-expression/_config.js b/test/form/whitespace-around-namespace-member-expression/_config.js new file mode 100644 index 0000000..a97b168 --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: 'whitespace around the "." in member expressions does not mess up renaming' +}; diff --git a/test/form/whitespace-around-namespace-member-expression/_expected/amd.js b/test/form/whitespace-around-namespace-member-expression/_expected/amd.js new file mode 100644 index 0000000..00fa37b --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/_expected/amd.js @@ -0,0 +1,9 @@ +define(function () { 'use strict'; + + function yar() { + console.log('yar?'); + } + + yar(); + +}); \ No newline at end of file diff --git a/test/form/whitespace-around-namespace-member-expression/_expected/cjs.js b/test/form/whitespace-around-namespace-member-expression/_expected/cjs.js new file mode 100644 index 0000000..c47867c --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/_expected/cjs.js @@ -0,0 +1,7 @@ +'use strict'; + +function yar() { + console.log('yar?'); +} + +yar(); \ No newline at end of file diff --git a/test/form/whitespace-around-namespace-member-expression/_expected/es6.js b/test/form/whitespace-around-namespace-member-expression/_expected/es6.js new file mode 100644 index 0000000..9ad6744 --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/_expected/es6.js @@ -0,0 +1,5 @@ +function yar() { + console.log('yar?'); +} + +yar(); \ No newline at end of file diff --git a/test/form/whitespace-around-namespace-member-expression/_expected/iife.js b/test/form/whitespace-around-namespace-member-expression/_expected/iife.js new file mode 100644 index 0000000..5a0d920 --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/_expected/iife.js @@ -0,0 +1,10 @@ +(function () { + 'use strict'; + + function yar() { + console.log('yar?'); + } + + yar(); + +}()); \ No newline at end of file diff --git a/test/form/whitespace-around-namespace-member-expression/_expected/umd.js b/test/form/whitespace-around-namespace-member-expression/_expected/umd.js new file mode 100644 index 0000000..ae6ce6f --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/_expected/umd.js @@ -0,0 +1,13 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, function () { 'use strict'; + + function yar() { + console.log('yar?'); + } + + yar(); + +})); \ No newline at end of file diff --git a/test/form/whitespace-around-namespace-member-expression/foo.js b/test/form/whitespace-around-namespace-member-expression/foo.js new file mode 100644 index 0000000..1479860 --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/foo.js @@ -0,0 +1,3 @@ +export function yar() { + console.log('yar?'); +} diff --git a/test/form/whitespace-around-namespace-member-expression/main.js b/test/form/whitespace-around-namespace-member-expression/main.js new file mode 100644 index 0000000..eba0ddf --- /dev/null +++ b/test/form/whitespace-around-namespace-member-expression/main.js @@ -0,0 +1,2 @@ +import * as foo from './foo.js'; +foo .yar();