Skip to content

Commit

Permalink
maintain this context when sequence is callable
Browse files Browse the repository at this point in the history
  • Loading branch information
nathancahill committed Nov 10, 2017
1 parent 6d0e492 commit faac8f6
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/ast/nodes/SequenceExpression.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ export default class SequenceExpression extends Node {
const last = this.expressions[ this.expressions.length - 1 ];
last.render( code, es );

if ( this.parent.type === 'CallExpression' && last.type === 'MemberExpression' && this.expressions.length > 1 ) {
this.expressions[0].included = true
}

const included = this.expressions.slice( 0, this.expressions.length - 1 ).filter( expression => expression.included );
if ( included.length === 0 ) {
code.remove( this.start, last.start );
Expand Down
3 changes: 3 additions & 0 deletions test/form/samples/sequence-expression/_expected/amd.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,7 @@ define(function () { 'use strict';
// should properly render complex sub-expressions
var g = ((() => {console.log(foo$1());})(), 1);

// should maintain this context
var h = (0, foo$1)();

});
3 changes: 3 additions & 0 deletions test/form/samples/sequence-expression/_expected/cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@ var e = (foo$1());

// should properly render complex sub-expressions
var g = ((() => {console.log(foo$1());})(), 1);

// should maintain this context
var h = (0, foo$1)();
3 changes: 3 additions & 0 deletions test/form/samples/sequence-expression/_expected/es.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ var e = (foo$1());

// should properly render complex sub-expressions
var g = ((() => {console.log(foo$1());})(), 1);

// should maintain this context
var h = (0, foo$1)();
3 changes: 3 additions & 0 deletions test/form/samples/sequence-expression/_expected/iife.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@
// should properly render complex sub-expressions
var g = ((() => {console.log(foo$1());})(), 1);

// should maintain this context
var h = (0, foo$1)();

}());
3 changes: 3 additions & 0 deletions test/form/samples/sequence-expression/_expected/umd.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,7 @@
// should properly render complex sub-expressions
var g = ((() => {console.log(foo$1());})(), 1);

// should maintain this context
var h = (0, foo$1)();

})));
3 changes: 3 additions & 0 deletions test/form/samples/sequence-expression/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ var e = (0, f.foo());

// should properly render complex sub-expressions
var g = ((() => {})(), (() => {console.log(f.foo())})(), 1);

// should maintain this context
var h = (0, f.foo)();

0 comments on commit faac8f6

Please sign in to comment.