diff --git a/lib/HiddenStackError.js b/lib/HiddenStackError.js new file mode 100644 index 000000000..f3e715970 --- /dev/null +++ b/lib/HiddenStackError.js @@ -0,0 +1,11 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php +*/ +"use strict"; + +module.exports = class HiddenStackError extends Error { + constructor(...args) { + super(...args); + this.hideStack = true; + } +}; diff --git a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js index 0b8544d4d..1cee0f454 100644 --- a/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +++ b/lib/dependencies/HarmonyExportImportedSpecifierDependency.js @@ -5,6 +5,7 @@ "use strict"; const HarmonyImportDependency = require("./HarmonyImportDependency"); const Template = require("../Template"); +const HiddenStackError = require("../HiddenStackError"); class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency { constructor( @@ -340,10 +341,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency { const exportName = this.id ? `the named export '${this.id}'` : "the namespace object"; - const err = new Error( + const err = new HiddenStackError( `Can't reexport ${exportName} from non EcmaScript module (only default export is available)` ); - err.hideStack = true; return [err]; } return; @@ -364,8 +364,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency { const errorMessage = `"export '${ this.id }'${idIsNotNameMessage} was not found in '${this.userRequest}'`; - const err = new Error(errorMessage); - err.hideStack = true; + const err = new HiddenStackError(errorMessage); return [err]; } diff --git a/lib/dependencies/HarmonyImportSpecifierDependency.js b/lib/dependencies/HarmonyImportSpecifierDependency.js index d7a797fbf..d52e29b0b 100644 --- a/lib/dependencies/HarmonyImportSpecifierDependency.js +++ b/lib/dependencies/HarmonyImportSpecifierDependency.js @@ -4,6 +4,7 @@ */ "use strict"; const HarmonyImportDependency = require("./HarmonyImportDependency"); +const HiddenStackError = require("../HiddenStackError"); class HarmonyImportSpecifierDependency extends HarmonyImportDependency { constructor( @@ -76,10 +77,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency { const exportName = this.id ? `the named export '${this.id}'` : "the namespace object"; - const err = new Error( + const err = new HiddenStackError( `Can't import ${exportName} from non EcmaScript module (only default export is available)` ); - err.hideStack = true; return [err]; } return; @@ -100,8 +100,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency { const errorMessage = `"export '${ this.id }'${idIsNotNameMessage} was not found in '${this.userRequest}'`; - const err = new Error(errorMessage); - err.hideStack = true; + const err = new HiddenStackError(errorMessage); return [err]; } diff --git a/test/cases/compile/error-hide-stack/loader.js b/test/cases/compile/error-hide-stack/loader.js index 0ad3ad091..674e66c65 100644 --- a/test/cases/compile/error-hide-stack/loader.js +++ b/test/cases/compile/error-hide-stack/loader.js @@ -3,4 +3,4 @@ module.exports = function() { err.stack = "Stack"; err.hideStack = true; throw err; -}; \ No newline at end of file +};