From a50d71a63e2c2c93498b42b8675013fed429ee24 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sun, 5 Jun 2016 11:00:44 -0400 Subject: [PATCH] preserve debugger statements. closes #664 --- src/utils/run.js | 4 ++++ test/form/preserve-debugger/_config.js | 3 +++ test/form/preserve-debugger/_expected/amd.js | 7 +++++++ test/form/preserve-debugger/_expected/cjs.js | 5 +++++ test/form/preserve-debugger/_expected/es6.js | 3 +++ test/form/preserve-debugger/_expected/iife.js | 8 ++++++++ test/form/preserve-debugger/_expected/umd.js | 11 +++++++++++ test/form/preserve-debugger/main.js | 3 +++ 8 files changed, 44 insertions(+) create mode 100644 test/form/preserve-debugger/_config.js create mode 100644 test/form/preserve-debugger/_expected/amd.js create mode 100644 test/form/preserve-debugger/_expected/cjs.js create mode 100644 test/form/preserve-debugger/_expected/es6.js create mode 100644 test/form/preserve-debugger/_expected/iife.js create mode 100644 test/form/preserve-debugger/_expected/umd.js create mode 100644 test/form/preserve-debugger/main.js diff --git a/src/utils/run.js b/src/utils/run.js index b57149d..3e91d63 100644 --- a/src/utils/run.js +++ b/src/utils/run.js @@ -75,6 +75,10 @@ export default function run ( node, scope, statement, strongDependencies, force } } + else if ( node.type === 'DebuggerStatement' ) { + hasSideEffect = true; + } + else if ( node.type === 'ThrowStatement' ) { // we only care about errors thrown at the top level, otherwise // any function with error checking gets included if called diff --git a/test/form/preserve-debugger/_config.js b/test/form/preserve-debugger/_config.js new file mode 100644 index 0000000..3e65815 --- /dev/null +++ b/test/form/preserve-debugger/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: 'debugger statements are preserved (#664)' +}; diff --git a/test/form/preserve-debugger/_expected/amd.js b/test/form/preserve-debugger/_expected/amd.js new file mode 100644 index 0000000..be1ef13 --- /dev/null +++ b/test/form/preserve-debugger/_expected/amd.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + before(); + debugger; + after(); + +}); diff --git a/test/form/preserve-debugger/_expected/cjs.js b/test/form/preserve-debugger/_expected/cjs.js new file mode 100644 index 0000000..ae69f57 --- /dev/null +++ b/test/form/preserve-debugger/_expected/cjs.js @@ -0,0 +1,5 @@ +'use strict'; + +before(); +debugger; +after(); diff --git a/test/form/preserve-debugger/_expected/es6.js b/test/form/preserve-debugger/_expected/es6.js new file mode 100644 index 0000000..ce1bafd --- /dev/null +++ b/test/form/preserve-debugger/_expected/es6.js @@ -0,0 +1,3 @@ +before(); +debugger; +after(); diff --git a/test/form/preserve-debugger/_expected/iife.js b/test/form/preserve-debugger/_expected/iife.js new file mode 100644 index 0000000..b40a100 --- /dev/null +++ b/test/form/preserve-debugger/_expected/iife.js @@ -0,0 +1,8 @@ +(function () { + 'use strict'; + + before(); + debugger; + after(); + +}()); diff --git a/test/form/preserve-debugger/_expected/umd.js b/test/form/preserve-debugger/_expected/umd.js new file mode 100644 index 0000000..dd19c2d --- /dev/null +++ b/test/form/preserve-debugger/_expected/umd.js @@ -0,0 +1,11 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, function () { 'use strict'; + + before(); + debugger; + after(); + +})); diff --git a/test/form/preserve-debugger/main.js b/test/form/preserve-debugger/main.js new file mode 100644 index 0000000..ce1bafd --- /dev/null +++ b/test/form/preserve-debugger/main.js @@ -0,0 +1,3 @@ +before(); +debugger; +after();