From 2aebfbe48ca1de63a16b82cda8182e5f47955870 Mon Sep 17 00:00:00 2001 From: Olivier Combe Date: Mon, 29 Jan 2018 15:50:57 +0100 Subject: [PATCH] fix(ConcatenatedModule): don't throw on arrays with empty values Fixes #6407 Fixes #5415 Ref https://github.com/angular/angular/issues/21809 --- lib/optimize/ConcatenatedModule.js | 1 + test/cases/scope-hoisting/issue-6407/import-one.js | 4 ++++ test/cases/scope-hoisting/issue-6407/import-two.js | 4 ++++ test/cases/scope-hoisting/issue-6407/index.js | 11 +++++++++++ 4 files changed, 20 insertions(+) create mode 100644 test/cases/scope-hoisting/issue-6407/import-one.js create mode 100644 test/cases/scope-hoisting/issue-6407/import-two.js create mode 100644 test/cases/scope-hoisting/issue-6407/index.js diff --git a/lib/optimize/ConcatenatedModule.js b/lib/optimize/ConcatenatedModule.js index 558aec96fd9..9789c1b720e 100644 --- a/lib/optimize/ConcatenatedModule.js +++ b/lib/optimize/ConcatenatedModule.js @@ -143,6 +143,7 @@ function getPathInAst(ast, node) { } function enterNode(n) { + if(!n) return undefined; const r = n.range; if(r) { if(r[0] <= nr[0] && r[1] >= nr[1]) { diff --git a/test/cases/scope-hoisting/issue-6407/import-one.js b/test/cases/scope-hoisting/issue-6407/import-one.js new file mode 100644 index 00000000000..4caae05377f --- /dev/null +++ b/test/cases/scope-hoisting/issue-6407/import-one.js @@ -0,0 +1,4 @@ +function foo(n) { + return 'bar'; +} +export default [, foo]; diff --git a/test/cases/scope-hoisting/issue-6407/import-two.js b/test/cases/scope-hoisting/issue-6407/import-two.js new file mode 100644 index 00000000000..4caae05377f --- /dev/null +++ b/test/cases/scope-hoisting/issue-6407/import-two.js @@ -0,0 +1,4 @@ +function foo(n) { + return 'bar'; +} +export default [, foo]; diff --git a/test/cases/scope-hoisting/issue-6407/index.js b/test/cases/scope-hoisting/issue-6407/index.js new file mode 100644 index 00000000000..193213228fa --- /dev/null +++ b/test/cases/scope-hoisting/issue-6407/index.js @@ -0,0 +1,11 @@ +import importOne from './import-one'; +import importTwo from './import-two'; + +it("should concatenate modules default exports and empty array values", function() { + importOne.length.should.be.eql(2); + (typeof importOne[0]).should.be.eql('undefined'); + (typeof importOne[1]).should.be.eql('function'); + importTwo.length.should.be.eql(2); + (typeof importTwo[0]).should.be.eql('undefined'); + (typeof importTwo[1]).should.be.eql('function'); +});