diff --git a/src/generate/index.js b/src/generate/index.js index b54b5217a0..54e4e73982 100644 --- a/src/generate/index.js +++ b/src/generate/index.js @@ -5,6 +5,7 @@ import isReference from '../utils/isReference.js'; import counter from './utils/counter.js'; import flattenReference from '../utils/flattenReference.js'; import namespaces from '../utils/namespaces.js'; +import globalWhitelist from '../utils/globalWhitelist.js'; import getIntro from './utils/getIntro.js'; import getOutro from './utils/getOutro.js'; import visitors from './visitors/index.js'; @@ -153,7 +154,7 @@ export default function generate ( parsed, source, options, names ) { } else if ( indexes[ name ] ) { const context = indexes[ name ]; if ( !~usedContexts.indexOf( context ) ) usedContexts.push( context ); - } else { + } else if ( !globalWhitelist[ name ] ) { dependencies.push( name ); generator.code.prependRight( node.start, `root.` ); if ( !~usedContexts.indexOf( 'root' ) ) usedContexts.push( 'root' ); diff --git a/src/utils/globalWhitelist.js b/src/utils/globalWhitelist.js new file mode 100644 index 0000000000..8320b179d7 --- /dev/null +++ b/src/utils/globalWhitelist.js @@ -0,0 +1,27 @@ +export default { + Array: true, + Boolean: true, + console: true, + Date: true, + decodeURI: true, + decodeURIComponent: true, + encodeURI: true, + encodeURIComponent: true, + Infinity: true, + Intl: true, + isFinite: true, + isNaN: true, + JSON: true, + Map: true, + Math: true, + NaN: true, + Number: true, + null: true, + Object: true, + parseFloat: true, + parseInt: true, + RegExp: true, + Set: true, + String: true, + undefined: true, +}; diff --git a/test/generator/globals-not-dereferenced/_config.js b/test/generator/globals-not-dereferenced/_config.js new file mode 100644 index 0000000000..9a0d6175be --- /dev/null +++ b/test/generator/globals-not-dereferenced/_config.js @@ -0,0 +1,12 @@ +export default { + data: { + x: 10 + }, + + html: '5', + + test ( assert, component, target ) { + component.set({ x: 3 }); + assert.htmlEqual( target.innerHTML, '3' ); + } +}; diff --git a/test/generator/globals-not-dereferenced/main.html b/test/generator/globals-not-dereferenced/main.html new file mode 100644 index 0000000000..771042ed07 --- /dev/null +++ b/test/generator/globals-not-dereferenced/main.html @@ -0,0 +1 @@ +{{Math.min(x, 5)}}