Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Do not fail for binary expressions involving "in" and "instanceof" (#…
  • Loading branch information
lukastaegert committed Jul 20, 2018
1 parent afddd9f commit 4465018
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/ast/nodes/BinaryExpression.ts
Expand Up @@ -29,8 +29,8 @@ const binaryOperators: {
'^': (left: any, right: any) => left ^ right,
'&': (left: any, right: any) => left & right,
'**': (left: any, right: any) => Math.pow(left, right),
in: (left, right: any) => left in right,
instanceof: (left, right: any) => left instanceof right
in: () => UNKNOWN_VALUE,
instanceof: () => UNKNOWN_VALUE
};

export default class BinaryExpression extends NodeBase {
Expand Down
3 changes: 3 additions & 0 deletions test/form/samples/invalid-binary-expressions/_config.js
@@ -0,0 +1,3 @@
module.exports = {
description: 'Does not fail when bundling code where the `in`-operator is used with invalid right sides'
};
43 changes: 43 additions & 0 deletions test/form/samples/invalid-binary-expressions/_expected.js
@@ -0,0 +1,43 @@
if ('x' in null) {
console.log('retained');
}

if ('x' in undefined) {
console.log('retained');
}

if ('x' in 1) {
console.log('retained');
}

if ('x' in true) {
console.log('retained');
}

if ('x' in 'y') {
console.log('retained');
}

if (null instanceof null) {
console.log('retained');
}

if (null instanceof undefined) {
console.log('retained');
}

if (null instanceof 1) {
console.log('retained');
}

if (null instanceof true) {
console.log('retained');
}

if (null instanceof 'y') {
console.log('retained');
}

if (null instanceof {}) {
console.log('retained');
}
43 changes: 43 additions & 0 deletions test/form/samples/invalid-binary-expressions/main.js
@@ -0,0 +1,43 @@
if ('x' in null) {
console.log('retained');
}

if ('x' in undefined) {
console.log('retained');
}

if ('x' in 1) {
console.log('retained');
}

if ('x' in true) {
console.log('retained');
}

if ('x' in 'y') {
console.log('retained');
}

if (null instanceof null) {
console.log('retained');
}

if (null instanceof undefined) {
console.log('retained');
}

if (null instanceof 1) {
console.log('retained');
}

if (null instanceof true) {
console.log('retained');
}

if (null instanceof 'y') {
console.log('retained');
}

if (null instanceof {}) {
console.log('retained');
}

0 comments on commit 4465018

Please sign in to comment.