mark reassigned/mutated when done inline in the template

pull/4492/head
Tan Li Hau 6 years ago
parent 20e079007c
commit 83c276d328

@ -114,16 +114,14 @@ export default class Expression {
let names; let names;
let deep = false; let deep = false;
if (function_expression) { if (node.type === 'AssignmentExpression') {
if (node.type === 'AssignmentExpression') { deep = node.left.type === 'MemberExpression';
deep = node.left.type === 'MemberExpression'; names = deep
names = deep ? [get_object(node.left).name]
? [get_object(node.left).name] : extract_names(node.left);
: extract_names(node.left); } else if (node.type === 'UpdateExpression') {
} else if (node.type === 'UpdateExpression') { const { name } = get_object(node.argument);
const { name } = get_object(node.argument); names = [name];
names = [name];
}
} }
if (names) { if (names) {

@ -0,0 +1,50 @@
export default {
test(assert, vars) {
assert.deepEqual(vars, [
{
name: "a",
export_name: null,
injected: false,
module: false,
mutated: false,
reassigned: true,
referenced: true,
referenced_from_script: false,
writable: true
},
{
name: "b",
export_name: null,
injected: false,
module: false,
mutated: true,
reassigned: false,
referenced: true,
referenced_from_script: false,
writable: true
},
{
name: "c",
export_name: null,
injected: false,
module: false,
mutated: false,
reassigned: true,
referenced: true,
referenced_from_script: false,
writable: true
},
{
name: "d",
export_name: null,
injected: false,
module: false,
mutated: true,
reassigned: false,
referenced: true,
referenced_from_script: false,
writable: true
}
]);
}
};

@ -0,0 +1,10 @@
<script>
let a = 0;
let b = {};
let c = {};
let d = 0;
</script>
{() => a = 1}
{() => b.a = 1}
{c = 1}
{d.a = 1}
Loading…
Cancel
Save