diff --git a/src/ast/nodes/BinaryExpression.ts b/src/ast/nodes/BinaryExpression.ts index bbd135e7168..759f836d0a2 100644 --- a/src/ast/nodes/BinaryExpression.ts +++ b/src/ast/nodes/BinaryExpression.ts @@ -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 { diff --git a/test/form/samples/invalid-binary-expressions/_config.js b/test/form/samples/invalid-binary-expressions/_config.js new file mode 100644 index 00000000000..6e229db19cb --- /dev/null +++ b/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' +}; diff --git a/test/form/samples/invalid-binary-expressions/_expected.js b/test/form/samples/invalid-binary-expressions/_expected.js new file mode 100644 index 00000000000..b43a2513a80 --- /dev/null +++ b/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'); +} diff --git a/test/form/samples/invalid-binary-expressions/main.js b/test/form/samples/invalid-binary-expressions/main.js new file mode 100644 index 00000000000..b43a2513a80 --- /dev/null +++ b/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'); +}