Re-add optional chaining delete (#7257)
* Re-add optional chaining delete * Move exec tests next to output tests * Forgot to commit these
This commit is contained in:
parent
63d9998aa4
commit
ca18ea5e79
@ -113,6 +113,12 @@ export default function(api, options) {
|
||||
if (path.key == "callee" && parentPath.isCallExpression()) {
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
path.key == "argument" &&
|
||||
parentPath.isUnaryExpression({ operator: "delete" })
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
@ -1,63 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
let calls = 0;
|
||||
const obj = {
|
||||
a: {
|
||||
b(val) {
|
||||
assert.equal(val, 1);
|
||||
assert.equal(this, obj.a);
|
||||
return calls++;
|
||||
},
|
||||
},
|
||||
c(val) {
|
||||
assert.equal(val, 1);
|
||||
assert.equal(this, obj);
|
||||
return calls++;
|
||||
},
|
||||
};
|
||||
|
||||
let ab = obj?.a?.b(1);
|
||||
assert.equal(ab, 0);
|
||||
|
||||
ab = obj?.a.b(1);
|
||||
assert.equal(ab, 1);
|
||||
|
||||
ab = obj?.a?.b?.(1);
|
||||
assert.equal(ab, 2);
|
||||
|
||||
ab = obj?.a.b?.(1);
|
||||
assert.equal(ab, 3);
|
||||
|
||||
ab = obj?.b?.b(1);
|
||||
assert.equal(ab, undefined);
|
||||
|
||||
ab = obj?.b?.b?.(1);
|
||||
assert.equal(ab, undefined);
|
||||
|
||||
let c = obj?.c(1);
|
||||
assert.equal(c, 4);
|
||||
|
||||
c = obj?.c?.(1);
|
||||
assert.equal(c, 5);
|
||||
|
||||
c = obj?.d?.(1);
|
||||
assert.equal(c, undefined);
|
||||
|
||||
obj?.a.b(1);
|
||||
assert.equal(calls, 7);
|
||||
|
||||
obj?.a?.b(1);
|
||||
assert.equal(calls, 8);
|
||||
|
||||
obj?.a?.b?.(1);
|
||||
assert.equal(calls, 9);
|
||||
|
||||
obj?.a.b?.(1);
|
||||
assert.equal(calls, 10);
|
||||
|
||||
obj?.c?.(1);
|
||||
assert.equal(calls, 11);
|
||||
|
||||
obj?.b?.b(1);
|
||||
obj?.b?.b?.(1);
|
||||
obj?.d?.(1);
|
||||
20
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/assignment/input.js
vendored
Normal file
20
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/assignment/input.js
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: {
|
||||
c: {
|
||||
d: 2,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const a = obj?.a;
|
||||
|
||||
const b = obj?.a?.b;
|
||||
|
||||
const bad = obj?.b?.b;
|
||||
|
||||
let val;
|
||||
val = obj?.a?.b;
|
||||
18
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/assignment/output.js
vendored
Normal file
18
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/assignment/output.js
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
"use strict";
|
||||
|
||||
var _obj$a, _obj$b, _obj$a2;
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: {
|
||||
c: {
|
||||
d: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
const a = obj === null || obj === void 0 ? void 0 : obj.a;
|
||||
const b = obj === null || obj === void 0 ? void 0 : (_obj$a = obj.a) === null || _obj$a === void 0 ? void 0 : _obj$a.b;
|
||||
const bad = obj === null || obj === void 0 ? void 0 : (_obj$b = obj.b) === null || _obj$b === void 0 ? void 0 : _obj$b.b;
|
||||
let val;
|
||||
val = obj === null || obj === void 0 ? void 0 : (_obj$a2 = obj.a) === null || _obj$a2 === void 0 ? void 0 : _obj$a2.b;
|
||||
0
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/call/exec.js
vendored
Normal file
0
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/call/exec.js
vendored
Normal file
22
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/delete/exec.js
vendored
Normal file
22
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/delete/exec.js
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: 0,
|
||||
},
|
||||
};
|
||||
|
||||
let test = delete obj?.a?.b;
|
||||
assert.equal(obj.a.b, undefined);
|
||||
assert.equal(test, true);
|
||||
|
||||
test = delete obj?.a.b;
|
||||
assert.equal(obj.a.b, undefined);
|
||||
assert.equal(test, true);
|
||||
|
||||
test = delete obj?.b?.b;
|
||||
assert.equal(obj.b, undefined);
|
||||
assert.equal(test, undefined);
|
||||
|
||||
delete obj?.a;
|
||||
assert.equal(obj.a, undefined);
|
||||
15
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/delete/input.js
vendored
Normal file
15
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/delete/input.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: 0,
|
||||
},
|
||||
};
|
||||
|
||||
let test = delete obj?.a?.b;
|
||||
|
||||
test = delete obj?.a.b;
|
||||
|
||||
test = delete obj?.b?.b;
|
||||
|
||||
delete obj?.a;
|
||||
13
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/delete/output.js
vendored
Normal file
13
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/delete/output.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
var _obj$a, _obj$b;
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: 0
|
||||
}
|
||||
};
|
||||
let test = obj === null || obj === void 0 ? void 0 : (_obj$a = obj.a) === null || _obj$a === void 0 ? void 0 : delete _obj$a.b;
|
||||
test = obj === null || obj === void 0 ? void 0 : delete obj.a.b;
|
||||
test = obj === null || obj === void 0 ? void 0 : (_obj$b = obj.b) === null || _obj$b === void 0 ? void 0 : delete _obj$b.b;
|
||||
obj === null || obj === void 0 ? void 0 : delete obj.a;
|
||||
15
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/unary/input.js
vendored
Normal file
15
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/unary/input.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: 0,
|
||||
},
|
||||
};
|
||||
|
||||
let test = +obj?.a?.b;
|
||||
|
||||
test = +obj?.a.b;
|
||||
|
||||
test = +obj?.b?.b;
|
||||
|
||||
test = +obj?.b?.b;
|
||||
13
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/unary/output.js
vendored
Normal file
13
packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/unary/output.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
var _obj$a, _obj$b, _obj$b2;
|
||||
|
||||
const obj = {
|
||||
a: {
|
||||
b: 0
|
||||
}
|
||||
};
|
||||
let test = +(obj === null || obj === void 0 ? void 0 : (_obj$a = obj.a) === null || _obj$a === void 0 ? void 0 : _obj$a.b);
|
||||
test = +(obj === null || obj === void 0 ? void 0 : obj.a.b);
|
||||
test = +(obj === null || obj === void 0 ? void 0 : (_obj$b = obj.b) === null || _obj$b === void 0 ? void 0 : _obj$b.b);
|
||||
test = +(obj === null || obj === void 0 ? void 0 : (_obj$b2 = obj.b) === null || _obj$b2 === void 0 ? void 0 : _obj$b2.b);
|
||||
Loading…
x
Reference in New Issue
Block a user