From 43260b4e20434e9e2d5827e6d3b7e7fe349190fd Mon Sep 17 00:00:00 2001 From: Jeff Jewiss Date: Thu, 20 Jul 2017 00:35:55 +0100 Subject: [PATCH 1/2] adds failing tests for linewrap semi-colon removal --- test/form/line-wrap/_config.js | 3 +++ test/form/line-wrap/_expected/amd.js | 5 +++++ test/form/line-wrap/_expected/cjs.js | 3 +++ test/form/line-wrap/_expected/es.js | 1 + test/form/line-wrap/_expected/iife.js | 5 +++++ test/form/line-wrap/_expected/umd.js | 9 +++++++++ test/form/line-wrap/main.js | 1 + 7 files changed, 27 insertions(+) create mode 100644 test/form/line-wrap/_config.js create mode 100644 test/form/line-wrap/_expected/amd.js create mode 100644 test/form/line-wrap/_expected/cjs.js create mode 100644 test/form/line-wrap/_expected/es.js create mode 100644 test/form/line-wrap/_expected/iife.js create mode 100644 test/form/line-wrap/_expected/umd.js create mode 100644 test/form/line-wrap/main.js diff --git a/test/form/line-wrap/_config.js b/test/form/line-wrap/_config.js new file mode 100644 index 00000000000..9a0504cf967 --- /dev/null +++ b/test/form/line-wrap/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: 'use a newline for line wraps removing a necessary semicolon (#1275)' +}; diff --git a/test/form/line-wrap/_expected/amd.js b/test/form/line-wrap/_expected/amd.js new file mode 100644 index 00000000000..65f8e046cf7 --- /dev/null +++ b/test/form/line-wrap/_expected/amd.js @@ -0,0 +1,5 @@ +define(function () { 'use strict'; + + for(var x=1;x<2;x++)var d=x|0;console.log(d); + +}); diff --git a/test/form/line-wrap/_expected/cjs.js b/test/form/line-wrap/_expected/cjs.js new file mode 100644 index 00000000000..9398f8f1bbd --- /dev/null +++ b/test/form/line-wrap/_expected/cjs.js @@ -0,0 +1,3 @@ +'use strict'; + +for(var x=1;x<2;x++)var d=x|0;console.log(d); diff --git a/test/form/line-wrap/_expected/es.js b/test/form/line-wrap/_expected/es.js new file mode 100644 index 00000000000..4f2606873e9 --- /dev/null +++ b/test/form/line-wrap/_expected/es.js @@ -0,0 +1 @@ +for(var x=1;x<2;x++)var d=x|0;console.log(d); diff --git a/test/form/line-wrap/_expected/iife.js b/test/form/line-wrap/_expected/iife.js new file mode 100644 index 00000000000..85c3785af90 --- /dev/null +++ b/test/form/line-wrap/_expected/iife.js @@ -0,0 +1,5 @@ +(function () { + 'use strict'; + + for(var x=1;x<2;x++)var d=x|0;console.log(d); +}()); diff --git a/test/form/line-wrap/_expected/umd.js b/test/form/line-wrap/_expected/umd.js new file mode 100644 index 00000000000..c50f8c4a11b --- /dev/null +++ b/test/form/line-wrap/_expected/umd.js @@ -0,0 +1,9 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory() : + typeof define === 'function' && define.amd ? define(factory) : + (factory()); +}(this, (function () { 'use strict'; + + for(var x=1;x<2;x++)var d=x|0;console.log(d); + +}))); diff --git a/test/form/line-wrap/main.js b/test/form/line-wrap/main.js new file mode 100644 index 00000000000..4f2606873e9 --- /dev/null +++ b/test/form/line-wrap/main.js @@ -0,0 +1 @@ +for(var x=1;x<2;x++)var d=x|0;console.log(d); From 723f6a950840dbb38adfed158e64642d099829c5 Mon Sep 17 00:00:00 2001 From: Jeff Jewiss Date: Thu, 20 Jul 2017 00:41:37 +0100 Subject: [PATCH 2/2] introduce a newline when a semicolon is not needed --- src/ast/nodes/VariableDeclaration.js | 2 +- test/form/line-wrap/_expected/amd.js | 3 ++- test/form/line-wrap/_expected/cjs.js | 3 ++- test/form/line-wrap/_expected/es.js | 3 ++- test/form/line-wrap/_expected/iife.js | 4 +++- test/form/line-wrap/_expected/umd.js | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/ast/nodes/VariableDeclaration.js b/src/ast/nodes/VariableDeclaration.js index 77f4433d67d..2c21130406f 100644 --- a/src/ast/nodes/VariableDeclaration.js +++ b/src/ast/nodes/VariableDeclaration.js @@ -98,7 +98,7 @@ export default class VariableDeclaration extends Node { const needsSemicolon = !forStatement.test( this.parent.type ); if ( this.end > c ) { - code.overwrite( c, this.end, needsSemicolon ? ';' : '' ); + code.overwrite( c, this.end, needsSemicolon ? ';' : '\n' ); } else if ( needsSemicolon ) { this.insertSemicolon( code ); } diff --git a/test/form/line-wrap/_expected/amd.js b/test/form/line-wrap/_expected/amd.js index 65f8e046cf7..61908d3ec40 100644 --- a/test/form/line-wrap/_expected/amd.js +++ b/test/form/line-wrap/_expected/amd.js @@ -1,5 +1,6 @@ define(function () { 'use strict'; - for(var x=1;x<2;x++)var d=x|0;console.log(d); + for(var x=1;x<2;x++)var d=x|0 + console.log(d); }); diff --git a/test/form/line-wrap/_expected/cjs.js b/test/form/line-wrap/_expected/cjs.js index 9398f8f1bbd..f73746adbbf 100644 --- a/test/form/line-wrap/_expected/cjs.js +++ b/test/form/line-wrap/_expected/cjs.js @@ -1,3 +1,4 @@ 'use strict'; -for(var x=1;x<2;x++)var d=x|0;console.log(d); +for(var x=1;x<2;x++)var d=x|0 +console.log(d); diff --git a/test/form/line-wrap/_expected/es.js b/test/form/line-wrap/_expected/es.js index 4f2606873e9..3bf9930a40c 100644 --- a/test/form/line-wrap/_expected/es.js +++ b/test/form/line-wrap/_expected/es.js @@ -1 +1,2 @@ -for(var x=1;x<2;x++)var d=x|0;console.log(d); +for(var x=1;x<2;x++)var d=x|0 +console.log(d); diff --git a/test/form/line-wrap/_expected/iife.js b/test/form/line-wrap/_expected/iife.js index 85c3785af90..d65242fb196 100644 --- a/test/form/line-wrap/_expected/iife.js +++ b/test/form/line-wrap/_expected/iife.js @@ -1,5 +1,7 @@ (function () { 'use strict'; - for(var x=1;x<2;x++)var d=x|0;console.log(d); + for(var x=1;x<2;x++)var d=x|0 + console.log(d); + }()); diff --git a/test/form/line-wrap/_expected/umd.js b/test/form/line-wrap/_expected/umd.js index c50f8c4a11b..b65bbb30135 100644 --- a/test/form/line-wrap/_expected/umd.js +++ b/test/form/line-wrap/_expected/umd.js @@ -4,6 +4,7 @@ (factory()); }(this, (function () { 'use strict'; - for(var x=1;x<2;x++)var d=x|0;console.log(d); + for(var x=1;x<2;x++)var d=x|0 + console.log(d); })));