diff --git a/src/parser/index.ts b/src/parser/index.ts
index 20c52152..07a17e6d 100644
--- a/src/parser/index.ts
+++ b/src/parser/index.ts
@@ -85,6 +85,7 @@ export function parseForESLint(
extractTokens(ctx);
analyzeStoreScope(resultScript.scopeManager!);
analyzeReactiveScope(resultScript.scopeManager!);
+ analyzeStoreScope(resultScript.scopeManager!); // for reactive vars
// Add $$xxx variable
for (const $$name of ["$$slots", "$$props", "$$restProps"]) {
diff --git a/tests/fixtures/parser/ast/reactive-with-store01-input.svelte b/tests/fixtures/parser/ast/reactive-with-store01-input.svelte
new file mode 100644
index 00000000..2ae7b646
--- /dev/null
+++ b/tests/fixtures/parser/ast/reactive-with-store01-input.svelte
@@ -0,0 +1,13 @@
+
+
+{baz}
diff --git a/tests/fixtures/parser/ast/reactive-with-store01-output.json b/tests/fixtures/parser/ast/reactive-with-store01-output.json
new file mode 100644
index 00000000..c64ef197
--- /dev/null
+++ b/tests/fixtures/parser/ast/reactive-with-store01-output.json
@@ -0,0 +1,1527 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "source": {
+ "type": "Literal",
+ "raw": "\"svelte/store\"",
+ "value": "svelte/store",
+ "range": [
+ 34,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 25
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportSpecifier",
+ "imported": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 9,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "init": {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 66,
+ 69
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 4
+ }
+ }
+ },
+ "method": false,
+ "shorthand": false,
+ "value": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "0",
+ "value": 0,
+ "range": [
+ 81,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 16
+ },
+ "end": {
+ "line": 5,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 72,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 15
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 72,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 18
+ }
+ }
+ },
+ "range": [
+ 66,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 18
+ }
+ }
+ }
+ ],
+ "range": [
+ 63,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 12
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ },
+ "range": [
+ 57,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ }
+ ],
+ "range": [
+ 51,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "SvelteReactiveStatement",
+ "label": {
+ "type": "Identifier",
+ "name": "$",
+ "range": [
+ 89,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 0
+ },
+ "end": {
+ "line": 8,
+ "column": 1
+ }
+ }
+ },
+ "body": {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "ObjectPattern",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "range": [
+ 93,
+ 100
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 4
+ },
+ "end": {
+ "line": 8,
+ "column": 11
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 103,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 14
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "range": [
+ 93,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 4
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "range": [
+ 92,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 19
+ }
+ }
+ },
+ "range": [
+ 89,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 0
+ },
+ "end": {
+ "line": 8,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "SvelteReactiveStatement",
+ "label": {
+ "type": "Identifier",
+ "name": "$",
+ "range": [
+ 110,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 0
+ },
+ "end": {
+ "line": 10,
+ "column": 1
+ }
+ }
+ },
+ "body": {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 119,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 113,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 113,
+ 124
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 110,
+ 124
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 0
+ },
+ "end": {
+ "line": 10,
+ "column": 14
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 125,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 0
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 134,
+ 136
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 137,
+ 140
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 136,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 0
+ },
+ "end": {
+ "line": 13,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 9,
+ 15
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 16,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 7
+ },
+ "end": {
+ "line": 2,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 27,
+ 28
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 18
+ },
+ "end": {
+ "line": 2,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 29,
+ 33
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 20
+ },
+ "end": {
+ "line": 2,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "\"svelte/store\"",
+ "range": [
+ 34,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 25
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 48,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 39
+ },
+ "end": {
+ "line": 2,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 51,
+ 56
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 61,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 10
+ },
+ "end": {
+ "line": 4,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 63,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 12
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "foo",
+ "range": [
+ 66,
+ 69
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 70,
+ 71
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "writable",
+ "range": [
+ 72,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 80,
+ 81
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "0",
+ "range": [
+ 81,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 16
+ },
+ "end": {
+ "line": 5,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 82,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 17
+ },
+ "end": {
+ "line": 5,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ",",
+ "range": [
+ 83,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 18
+ },
+ "end": {
+ "line": 5,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 85,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 86,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$",
+ "range": [
+ 89,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 0
+ },
+ "end": {
+ "line": 8,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 90,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 8,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 92,
+ 93
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 93,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 4
+ },
+ "end": {
+ "line": 8,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 99,
+ 100
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 101,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 12
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "bar",
+ "range": [
+ 103,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 14
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 106,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 17
+ },
+ "end": {
+ "line": 8,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 107,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$",
+ "range": [
+ 110,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 0
+ },
+ "end": {
+ "line": 10,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 111,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 1
+ },
+ "end": {
+ "line": 10,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 117,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 7
+ },
+ "end": {
+ "line": 10,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$foo",
+ "range": [
+ 119,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 123,
+ 124
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 13
+ },
+ "end": {
+ "line": 10,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 125,
+ 126
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 0
+ },
+ "end": {
+ "line": 11,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 126,
+ 127
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 127,
+ 133
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 133,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 8
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 134,
+ 136
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 136,
+ 137
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 0
+ },
+ "end": {
+ "line": 13,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "baz",
+ "range": [
+ 137,
+ 140
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 140,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/reactive-with-store01-scope-output.json b/tests/fixtures/parser/ast/reactive-with-store01-scope-output.json
new file mode 100644
index 00000000..7b0e08a4
--- /dev/null
+++ b/tests/fixtures/parser/ast/reactive-with-store01-scope-output.json
@@ -0,0 +1,1077 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "writable",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "imported": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 72,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 15
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "bar",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "init": {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 66,
+ 69
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 4
+ }
+ }
+ },
+ "method": false,
+ "shorthand": false,
+ "value": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "0",
+ "value": 0,
+ "range": [
+ 81,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 16
+ },
+ "end": {
+ "line": 5,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 72,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 15
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 72,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 18
+ }
+ }
+ },
+ "range": [
+ 66,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 18
+ }
+ }
+ }
+ ],
+ "range": [
+ 63,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 12
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ },
+ "range": [
+ 57,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 103,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 14
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "foo",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ComputedVariable",
+ "name": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ "node": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "ObjectPattern",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "range": [
+ 93,
+ 100
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 4
+ },
+ "end": {
+ "line": 8,
+ "column": 11
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 103,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 14
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "range": [
+ 93,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 4
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 119,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 13
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "baz",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ComputedVariable",
+ "name": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ },
+ "node": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 119,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 113,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 13
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 137,
+ 140
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 4
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 72,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 15
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ "from": "module",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 103,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 14
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ },
+ "from": "module",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 119,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 13
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 6
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 137,
+ 140
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 4
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 113,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 6
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": []
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/reactive-with-store02-input.svelte b/tests/fixtures/parser/ast/reactive-with-store02-input.svelte
new file mode 100644
index 00000000..071e4daf
--- /dev/null
+++ b/tests/fixtures/parser/ast/reactive-with-store02-input.svelte
@@ -0,0 +1,11 @@
+
+
+{baz}
diff --git a/tests/fixtures/parser/ast/reactive-with-store02-output.json b/tests/fixtures/parser/ast/reactive-with-store02-output.json
new file mode 100644
index 00000000..09df2431
--- /dev/null
+++ b/tests/fixtures/parser/ast/reactive-with-store02-output.json
@@ -0,0 +1,1231 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "source": {
+ "type": "Literal",
+ "raw": "\"svelte/store\"",
+ "value": "svelte/store",
+ "range": [
+ 34,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 25
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportSpecifier",
+ "imported": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 9,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "0",
+ "value": 0,
+ "range": [
+ 73,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 23
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 64,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 64,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 24
+ }
+ }
+ },
+ "range": [
+ 57,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 24
+ }
+ }
+ }
+ ],
+ "range": [
+ 51,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "SvelteReactiveStatement",
+ "label": {
+ "type": "Identifier",
+ "name": "$",
+ "range": [
+ 77,
+ 78
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ },
+ "body": {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 86,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "range": [
+ 80,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "range": [
+ 80,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 77,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "SvelteReactiveStatement",
+ "label": {
+ "type": "Identifier",
+ "name": "$",
+ "range": [
+ 92,
+ 93
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 0
+ },
+ "end": {
+ "line": 8,
+ "column": 1
+ }
+ }
+ },
+ "body": {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 101,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 95,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 95,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 92,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 0
+ },
+ "end": {
+ "line": 8,
+ "column": 14
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 107,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 0
+ },
+ "end": {
+ "line": 9,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 9,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 116,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 119,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 118,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 0
+ },
+ "end": {
+ "line": 11,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 9,
+ 15
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 16,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 7
+ },
+ "end": {
+ "line": 2,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 27,
+ 28
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 18
+ },
+ "end": {
+ "line": 2,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 29,
+ 33
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 20
+ },
+ "end": {
+ "line": 2,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "\"svelte/store\"",
+ "range": [
+ 34,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 25
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 48,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 39
+ },
+ "end": {
+ "line": 2,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 51,
+ 56
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 61,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 10
+ },
+ "end": {
+ "line": 4,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "writable",
+ "range": [
+ 64,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 72,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 21
+ },
+ "end": {
+ "line": 4,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "0",
+ "range": [
+ 73,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 74,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 23
+ },
+ "end": {
+ "line": 4,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$",
+ "range": [
+ 77,
+ 78
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 78,
+ 79
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 84,
+ 85
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "bar",
+ "range": [
+ 86,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 89,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 12
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$",
+ "range": [
+ 92,
+ 93
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 0
+ },
+ "end": {
+ "line": 8,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 93,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 8,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 99,
+ 100
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 7
+ },
+ "end": {
+ "line": 8,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$foo",
+ "range": [
+ 101,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 105,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 13
+ },
+ "end": {
+ "line": 8,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 107,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 0
+ },
+ "end": {
+ "line": 9,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 108,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 1
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 109,
+ 115
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 115,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 116,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 118,
+ 119
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 0
+ },
+ "end": {
+ "line": 11,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "baz",
+ "range": [
+ 119,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 122,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 4
+ },
+ "end": {
+ "line": 11,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 124
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/reactive-with-store02-scope-output.json b/tests/fixtures/parser/ast/reactive-with-store02-scope-output.json
new file mode 100644
index 00000000..a6953e56
--- /dev/null
+++ b/tests/fixtures/parser/ast/reactive-with-store02-scope-output.json
@@ -0,0 +1,961 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "writable",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "imported": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 64,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "bar",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "0",
+ "value": 0,
+ "range": [
+ 73,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 23
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 64,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 64,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 24
+ }
+ }
+ },
+ "range": [
+ 57,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 24
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 86,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "foo",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ComputedVariable",
+ "name": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "node": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 86,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "range": [
+ 80,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 101,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "baz",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ComputedVariable",
+ "name": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ },
+ "node": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 101,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 95,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 119,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 64,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "writable",
+ "range": [
+ 18,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 9
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "from": "module",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 86,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "bar",
+ "range": [
+ 57,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ },
+ "from": "module",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$foo",
+ "range": [
+ 101,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 13
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "foo",
+ "range": [
+ 80,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 3
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 119,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "baz",
+ "range": [
+ 95,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 6
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": []
+ }
+ ],
+ "through": []
+}
\ No newline at end of file