From 05f707efc5b8f2ffe1e90120b831caaf717f49d9 Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Tue, 17 May 2022 18:30:00 +0900 Subject: [PATCH 1/4] Fix crash for script setup in no-obj-calls rule --- scripts/update-fixtures-ast.js | 3 + src/script-setup/scope-analyzer.ts | 2 +- .../ast/multiple-scripts-7/scope.json | 105 +- .../ast.json | 1074 +++++++++++++++++ .../parser-options.json | 6 + .../scope.json | 838 +++++++++++++ .../services.json | 11 + .../source.vue | 8 + .../token-ranges.json | 39 + .../tree.json | 104 ++ .../no-obj-calls/.eslintrc.json | 5 + .../no-obj-calls/valid.vue | 8 + 12 files changed, 2200 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/services.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json create mode 100644 test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json create mode 100644 test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue diff --git a/scripts/update-fixtures-ast.js b/scripts/update-fixtures-ast.js index 6e6cc54c..23aa1c56 100644 --- a/scripts/update-fixtures-ast.js +++ b/scripts/update-fixtures-ast.js @@ -131,6 +131,9 @@ function scopeToJSON(scopeManager) { reference.resolved.defs[0].name, ), init: reference.init || null, + vueUsedInTemplate: reference.vueUsedInTemplate + ? reference.vueUsedInTemplate + : undefined, } } diff --git a/src/script-setup/scope-analyzer.ts b/src/script-setup/scope-analyzer.ts index 0d2518e9..0d77fd22 100644 --- a/src/script-setup/scope-analyzer.ts +++ b/src/script-setup/scope-analyzer.ts @@ -171,7 +171,7 @@ function analyzeUsedInTemplateVariables( function markVariableAsUsed(name: string) { const variable = scriptVariables.get(name) - if (!variable) { + if (!variable || variable.identifiers.length === 0) { return } if (markedVariables.has(name)) { diff --git a/test/fixtures/ast/multiple-scripts-7/scope.json b/test/fixtures/ast/multiple-scripts-7/scope.json index ee330a3e..18858c17 100644 --- a/test/fixtures/ast/multiple-scripts-7/scope.json +++ b/test/fixtures/ast/multiple-scripts-7/scope.json @@ -138,6 +138,39 @@ } }, "init": true + }, + { + "identifier": { + "type": "Identifier", + "name": "count", + "loc": { + "start": { + "line": 2, + "column": 11 + }, + "end": { + "line": 2, + "column": 16 + } + } + }, + "from": "module", + "resolved": { + "type": "Identifier", + "name": "count", + "loc": { + "start": { + "line": 2, + "column": 11 + }, + "end": { + "line": 2, + "column": 16 + } + } + }, + "init": null, + "vueUsedInTemplate": true } ] }, @@ -178,7 +211,41 @@ "name": "MyComponent1" } ], - "references": [] + "references": [ + { + "identifier": { + "type": "Identifier", + "name": "MyComponent1", + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 19 + } + } + }, + "from": "module", + "resolved": { + "type": "Identifier", + "name": "MyComponent1", + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 19 + } + } + }, + "init": null, + "vueUsedInTemplate": true + } + ] }, { "name": "MyComponent2", @@ -217,7 +284,41 @@ "name": "MyComponent2" } ], - "references": [] + "references": [ + { + "identifier": { + "type": "Identifier", + "name": "MyComponent2", + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 19 + } + } + }, + "from": "module", + "resolved": { + "type": "Identifier", + "name": "MyComponent2", + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 19 + } + } + }, + "init": null, + "vueUsedInTemplate": true + } + ] }, { "name": "a", diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json new file mode 100644 index 00000000..b86e69af --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json @@ -0,0 +1,1074 @@ +{ + "type": "Program", + "body": [], + "sourceType": "module", + "range": [ + 116, + 116 + ], + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 0 + } + }, + "tokens": [ + { + "type": "Punctuator", + "range": [ + 91, + 115 + ], + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 24 + } + }, + "value": "" + } + ], + "comments": [], + "templateBody": { + "type": "VElement", + "range": [ + 0, + 89 + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 5, + "column": 11 + } + }, + "name": "template", + "rawName": "template", + "namespace": "http://www.w3.org/1999/xhtml", + "startTag": { + "type": "VStartTag", + "range": [ + 0, + 10 + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 10 + } + }, + "selfClosing": false, + "attributes": [] + }, + "children": [ + { + "type": "VText", + "range": [ + 10, + 15 + ], + "loc": { + "start": { + "line": 1, + "column": 10 + }, + "end": { + "line": 2, + "column": 4 + } + }, + "value": "\n " + }, + { + "type": "VElement", + "range": [ + 15, + 77 + ], + "loc": { + "start": { + "line": 2, + "column": 4 + }, + "end": { + "line": 4, + "column": 10 + } + }, + "name": "div", + "rawName": "div", + "namespace": "http://www.w3.org/1999/xhtml", + "startTag": { + "type": "VStartTag", + "range": [ + 15, + 20 + ], + "loc": { + "start": { + "line": 2, + "column": 4 + }, + "end": { + "line": 2, + "column": 9 + } + }, + "selfClosing": false, + "attributes": [] + }, + "children": [ + { + "type": "VText", + "range": [ + 20, + 29 + ], + "loc": { + "start": { + "line": 2, + "column": 9 + }, + "end": { + "line": 3, + "column": 8 + } + }, + "value": "\n " + }, + { + "type": "VExpressionContainer", + "range": [ + 29, + 66 + ], + "loc": { + "start": { + "line": 3, + "column": 8 + }, + "end": { + "line": 3, + "column": 45 + } + }, + "expression": { + "type": "CallExpression", + "callee": { + "type": "MemberExpression", + "object": { + "type": "Identifier", + "name": "JSON", + "range": [ + 32, + 36 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 15 + } + } + }, + "property": { + "type": "Identifier", + "name": "stringify", + "range": [ + 37, + 46 + ], + "loc": { + "start": { + "line": 3, + "column": 16 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + "computed": false, + "optional": false, + "range": [ + 32, + 46 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + "arguments": [ + { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "test", + "range": [ + 49, + 53 + ], + "loc": { + "start": { + "line": 3, + "column": 28 + }, + "end": { + "line": 3, + "column": 32 + } + } + }, + "value": { + "type": "Literal", + "value": "test", + "raw": "'test'", + "range": [ + 55, + 61 + ], + "loc": { + "start": { + "line": 3, + "column": 34 + }, + "end": { + "line": 3, + "column": 40 + } + } + }, + "computed": false, + "method": false, + "shorthand": false, + "kind": "init", + "range": [ + 49, + 61 + ], + "loc": { + "start": { + "line": 3, + "column": 28 + }, + "end": { + "line": 3, + "column": 40 + } + } + } + ], + "range": [ + 47, + 62 + ], + "loc": { + "start": { + "line": 3, + "column": 26 + }, + "end": { + "line": 3, + "column": 41 + } + } + } + ], + "optional": false, + "range": [ + 32, + 63 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 42 + } + } + }, + "references": [ + { + "id": { + "type": "Identifier", + "name": "JSON", + "range": [ + 32, + 36 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 15 + } + } + }, + "mode": "r" + } + ] + }, + { + "type": "VText", + "range": [ + 66, + 71 + ], + "loc": { + "start": { + "line": 3, + "column": 45 + }, + "end": { + "line": 4, + "column": 4 + } + }, + "value": "\n " + } + ], + "endTag": { + "type": "VEndTag", + "range": [ + 71, + 77 + ], + "loc": { + "start": { + "line": 4, + "column": 4 + }, + "end": { + "line": 4, + "column": 10 + } + } + }, + "variables": [] + }, + { + "type": "VText", + "range": [ + 77, + 78 + ], + "loc": { + "start": { + "line": 4, + "column": 10 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "value": "\n" + } + ], + "endTag": { + "type": "VEndTag", + "range": [ + 78, + 89 + ], + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 11 + } + } + }, + "variables": [], + "tokens": [ + { + "type": "HTMLTagOpen", + "range": [ + 0, + 9 + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "value": "template" + }, + { + "type": "HTMLTagClose", + "range": [ + 9, + 10 + ], + "loc": { + "start": { + "line": 1, + "column": 9 + }, + "end": { + "line": 1, + "column": 10 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 10, + 15 + ], + "loc": { + "start": { + "line": 1, + "column": 10 + }, + "end": { + "line": 2, + "column": 4 + } + }, + "value": "\n " + }, + { + "type": "HTMLTagOpen", + "range": [ + 15, + 19 + ], + "loc": { + "start": { + "line": 2, + "column": 4 + }, + "end": { + "line": 2, + "column": 8 + } + }, + "value": "div" + }, + { + "type": "HTMLTagClose", + "range": [ + 19, + 20 + ], + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 9 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 20, + 29 + ], + "loc": { + "start": { + "line": 2, + "column": 9 + }, + "end": { + "line": 3, + "column": 8 + } + }, + "value": "\n " + }, + { + "type": "VExpressionStart", + "range": [ + 29, + 31 + ], + "loc": { + "start": { + "line": 3, + "column": 8 + }, + "end": { + "line": 3, + "column": 10 + } + }, + "value": "{{" + }, + { + "type": "Identifier", + "value": "JSON", + "range": [ + 32, + 36 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 15 + } + } + }, + { + "type": "Punctuator", + "value": ".", + "range": [ + 36, + 37 + ], + "loc": { + "start": { + "line": 3, + "column": 15 + }, + "end": { + "line": 3, + "column": 16 + } + } + }, + { + "type": "Identifier", + "value": "stringify", + "range": [ + 37, + 46 + ], + "loc": { + "start": { + "line": 3, + "column": 16 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + { + "type": "Punctuator", + "value": "(", + "range": [ + 46, + 47 + ], + "loc": { + "start": { + "line": 3, + "column": 25 + }, + "end": { + "line": 3, + "column": 26 + } + } + }, + { + "type": "Punctuator", + "value": "{", + "range": [ + 47, + 48 + ], + "loc": { + "start": { + "line": 3, + "column": 26 + }, + "end": { + "line": 3, + "column": 27 + } + } + }, + { + "type": "Identifier", + "value": "test", + "range": [ + 49, + 53 + ], + "loc": { + "start": { + "line": 3, + "column": 28 + }, + "end": { + "line": 3, + "column": 32 + } + } + }, + { + "type": "Punctuator", + "value": ":", + "range": [ + 53, + 54 + ], + "loc": { + "start": { + "line": 3, + "column": 32 + }, + "end": { + "line": 3, + "column": 33 + } + } + }, + { + "type": "String", + "value": "'test'", + "range": [ + 55, + 61 + ], + "loc": { + "start": { + "line": 3, + "column": 34 + }, + "end": { + "line": 3, + "column": 40 + } + } + }, + { + "type": "Punctuator", + "value": "}", + "range": [ + 61, + 62 + ], + "loc": { + "start": { + "line": 3, + "column": 40 + }, + "end": { + "line": 3, + "column": 41 + } + } + }, + { + "type": "Punctuator", + "value": ")", + "range": [ + 62, + 63 + ], + "loc": { + "start": { + "line": 3, + "column": 41 + }, + "end": { + "line": 3, + "column": 42 + } + } + }, + { + "type": "VExpressionEnd", + "range": [ + 64, + 66 + ], + "loc": { + "start": { + "line": 3, + "column": 43 + }, + "end": { + "line": 3, + "column": 45 + } + }, + "value": "}}" + }, + { + "type": "HTMLWhitespace", + "range": [ + 66, + 71 + ], + "loc": { + "start": { + "line": 3, + "column": 45 + }, + "end": { + "line": 4, + "column": 4 + } + }, + "value": "\n " + }, + { + "type": "HTMLEndTagOpen", + "range": [ + 71, + 76 + ], + "loc": { + "start": { + "line": 4, + "column": 4 + }, + "end": { + "line": 4, + "column": 9 + } + }, + "value": "div" + }, + { + "type": "HTMLTagClose", + "range": [ + 76, + 77 + ], + "loc": { + "start": { + "line": 4, + "column": 9 + }, + "end": { + "line": 4, + "column": 10 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 77, + 78 + ], + "loc": { + "start": { + "line": 4, + "column": 10 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "value": "\n" + }, + { + "type": "HTMLEndTagOpen", + "range": [ + 78, + 88 + ], + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 10 + } + }, + "value": "template" + }, + { + "type": "HTMLTagClose", + "range": [ + 88, + 89 + ], + "loc": { + "start": { + "line": 5, + "column": 10 + }, + "end": { + "line": 5, + "column": 11 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 89, + 91 + ], + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 7, + "column": 0 + } + }, + "value": "\n\n" + }, + { + "type": "HTMLTagOpen", + "range": [ + 91, + 98 + ], + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 7 + } + }, + "value": "script" + }, + { + "type": "HTMLIdentifier", + "range": [ + 99, + 103 + ], + "loc": { + "start": { + "line": 7, + "column": 8 + }, + "end": { + "line": 7, + "column": 12 + } + }, + "value": "lang" + }, + { + "type": "HTMLAssociation", + "range": [ + 103, + 104 + ], + "loc": { + "start": { + "line": 7, + "column": 12 + }, + "end": { + "line": 7, + "column": 13 + } + }, + "value": "" + }, + { + "type": "HTMLLiteral", + "range": [ + 104, + 108 + ], + "loc": { + "start": { + "line": 7, + "column": 13 + }, + "end": { + "line": 7, + "column": 17 + } + }, + "value": "ts" + }, + { + "type": "HTMLIdentifier", + "range": [ + 109, + 114 + ], + "loc": { + "start": { + "line": 7, + "column": 18 + }, + "end": { + "line": 7, + "column": 23 + } + }, + "value": "setup" + }, + { + "type": "HTMLTagClose", + "range": [ + 114, + 115 + ], + "loc": { + "start": { + "line": 7, + "column": 23 + }, + "end": { + "line": 7, + "column": 24 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 115, + 116 + ], + "loc": { + "start": { + "line": 7, + "column": 24 + }, + "end": { + "line": 8, + "column": 0 + } + }, + "value": "\n" + }, + { + "type": "HTMLEndTagOpen", + "range": [ + 116, + 124 + ], + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 8 + } + }, + "value": "script" + }, + { + "type": "HTMLTagClose", + "range": [ + 124, + 125 + ], + "loc": { + "start": { + "line": 8, + "column": 8 + }, + "end": { + "line": 8, + "column": 9 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 125, + 126 + ], + "loc": { + "start": { + "line": 8, + "column": 9 + }, + "end": { + "line": 9, + "column": 0 + } + }, + "value": "\n" + } + ], + "comments": [], + "errors": [] + } +} \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json new file mode 100644 index 00000000..0ead30e9 --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json @@ -0,0 +1,6 @@ +{ + "sourceType": "module", + "parser": { + "ts": "@typescript-eslint/parser" + } +} diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json new file mode 100644 index 00000000..80bdb3dd --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json @@ -0,0 +1,838 @@ +{ + "type": "global", + "variables": [ + { + "name": "Symbol", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyKey", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyDescriptor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyDescriptorMap", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Object", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ObjectConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Function", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "FunctionConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ThisParameterType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "OmitThisParameter", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "CallableFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "NewableFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IArguments", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "String", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "StringConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Boolean", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "BooleanConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Number", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "NumberConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TemplateStringsArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ImportMeta", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ImportCallOptions", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ImportAssertions", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Math", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Date", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "DateConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExpMatchArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExpExecArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExp", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExpConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Error", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "EvalError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "EvalErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RangeError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RangeErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReferenceError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReferenceErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SyntaxError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SyntaxErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TypeError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TypeErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "URIError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "URIErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "JSON", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReadonlyArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ConcatArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TypedPropertyDescriptor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ClassDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "MethodDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ParameterDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PromiseConstructorLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PromiseLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Promise", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Awaited", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Partial", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Required", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Readonly", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Pick", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Record", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Exclude", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Extract", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Omit", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "NonNullable", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Parameters", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ConstructorParameters", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReturnType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "InstanceType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uppercase", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Lowercase", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Capitalize", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uncapitalize", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ThisType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBuffer", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferTypes", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferView", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "DataView", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "DataViewConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int8Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int8ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8ClampedArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8ClampedArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int16Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int16ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint16Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint16ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int32Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int32ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint32Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint32ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float32Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float32ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float64Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float64ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Intl", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Map", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "MapConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReadonlyMap", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakMap", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakMapConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Set", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SetConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReadonlySet", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakSet", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakSetConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SymbolConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IteratorYieldResult", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IteratorReturnResult", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IteratorResult", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Iterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Iterable", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IterableIterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PromiseConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Generator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "GeneratorFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "GeneratorFunctionConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ProxyHandler", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ProxyConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Reflect", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SharedArrayBuffer", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SharedArrayBufferConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Atomics", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncIterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncIterable", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncIterableIterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncGenerator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncGeneratorFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncGeneratorFunctionConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "const", + "identifiers": [], + "defs": [], + "references": [] + } + ], + "references": [], + "childScopes": [ + { + "type": "module", + "variables": [], + "references": [], + "childScopes": [], + "through": [] + } + ], + "through": [] +} \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json new file mode 100644 index 00000000..7159ba5a --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json @@ -0,0 +1,11 @@ +[ + "defineCustomBlocksVisitor", + "defineDocumentVisitor", + "defineTemplateBodyVisitor", + "esTreeNodeToTSNodeMap", + "getDocumentFragment", + "getTemplateBodyTokenStore", + "hasFullTypeInformation", + "program", + "tsNodeToESTreeNodeMap" +] \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue b/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue new file mode 100644 index 00000000..32aa1772 --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue @@ -0,0 +1,8 @@ + + + diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json new file mode 100644 index 00000000..b5c5f60f --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json @@ -0,0 +1,39 @@ +[ + "", + "", + "\n ", + "", + "\n ", + "{{", + "JSON", + ".", + "stringify", + "(", + "{", + "test", + ":", + "'test'", + "}", + ")", + "}}", + "\n ", + "", + "\n", + "", + "\n\n", + "", + "\n", + "", + "\n" +] \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json new file mode 100644 index 00000000..d8308723 --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json @@ -0,0 +1,104 @@ +[ + { + "type": "VElement", + "text": "", + "children": [ + { + "type": "VStartTag", + "text": "", + "children": [] + } + ] + } +] \ No newline at end of file diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json new file mode 100644 index 00000000..0fe9a184 --- /dev/null +++ b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "rules": { + "no-obj-calls": "error" + } +} diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue new file mode 100644 index 00000000..32aa1772 --- /dev/null +++ b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue @@ -0,0 +1,8 @@ + + + From fb2f67daed4dd732ddffb0bfb1cfd4eb2d748b8e Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Tue, 17 May 2022 18:31:16 +0900 Subject: [PATCH 2/4] Revert "Fix crash for script setup in no-obj-calls rule" This reverts commit 05f707efc5b8f2ffe1e90120b831caaf717f49d9. --- scripts/update-fixtures-ast.js | 3 - src/script-setup/scope-analyzer.ts | 2 +- .../ast/multiple-scripts-7/scope.json | 105 +- .../ast.json | 1074 ----------------- .../parser-options.json | 6 - .../scope.json | 838 ------------- .../services.json | 11 - .../source.vue | 8 - .../token-ranges.json | 39 - .../tree.json | 104 -- .../no-obj-calls/.eslintrc.json | 5 - .../no-obj-calls/valid.vue | 8 - 12 files changed, 3 insertions(+), 2200 deletions(-) delete mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json delete mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json delete mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json delete mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/services.json delete mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue delete mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json delete mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json delete mode 100644 test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json delete mode 100644 test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue diff --git a/scripts/update-fixtures-ast.js b/scripts/update-fixtures-ast.js index 23aa1c56..6e6cc54c 100644 --- a/scripts/update-fixtures-ast.js +++ b/scripts/update-fixtures-ast.js @@ -131,9 +131,6 @@ function scopeToJSON(scopeManager) { reference.resolved.defs[0].name, ), init: reference.init || null, - vueUsedInTemplate: reference.vueUsedInTemplate - ? reference.vueUsedInTemplate - : undefined, } } diff --git a/src/script-setup/scope-analyzer.ts b/src/script-setup/scope-analyzer.ts index 0d77fd22..0d2518e9 100644 --- a/src/script-setup/scope-analyzer.ts +++ b/src/script-setup/scope-analyzer.ts @@ -171,7 +171,7 @@ function analyzeUsedInTemplateVariables( function markVariableAsUsed(name: string) { const variable = scriptVariables.get(name) - if (!variable || variable.identifiers.length === 0) { + if (!variable) { return } if (markedVariables.has(name)) { diff --git a/test/fixtures/ast/multiple-scripts-7/scope.json b/test/fixtures/ast/multiple-scripts-7/scope.json index 18858c17..ee330a3e 100644 --- a/test/fixtures/ast/multiple-scripts-7/scope.json +++ b/test/fixtures/ast/multiple-scripts-7/scope.json @@ -138,39 +138,6 @@ } }, "init": true - }, - { - "identifier": { - "type": "Identifier", - "name": "count", - "loc": { - "start": { - "line": 2, - "column": 11 - }, - "end": { - "line": 2, - "column": 16 - } - } - }, - "from": "module", - "resolved": { - "type": "Identifier", - "name": "count", - "loc": { - "start": { - "line": 2, - "column": 11 - }, - "end": { - "line": 2, - "column": 16 - } - } - }, - "init": null, - "vueUsedInTemplate": true } ] }, @@ -211,41 +178,7 @@ "name": "MyComponent1" } ], - "references": [ - { - "identifier": { - "type": "Identifier", - "name": "MyComponent1", - "loc": { - "start": { - "line": 6, - "column": 7 - }, - "end": { - "line": 6, - "column": 19 - } - } - }, - "from": "module", - "resolved": { - "type": "Identifier", - "name": "MyComponent1", - "loc": { - "start": { - "line": 6, - "column": 7 - }, - "end": { - "line": 6, - "column": 19 - } - } - }, - "init": null, - "vueUsedInTemplate": true - } - ] + "references": [] }, { "name": "MyComponent2", @@ -284,41 +217,7 @@ "name": "MyComponent2" } ], - "references": [ - { - "identifier": { - "type": "Identifier", - "name": "MyComponent2", - "loc": { - "start": { - "line": 8, - "column": 7 - }, - "end": { - "line": 8, - "column": 19 - } - } - }, - "from": "module", - "resolved": { - "type": "Identifier", - "name": "MyComponent2", - "loc": { - "start": { - "line": 8, - "column": 7 - }, - "end": { - "line": 8, - "column": 19 - } - } - }, - "init": null, - "vueUsedInTemplate": true - } - ] + "references": [] }, { "name": "a", diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json deleted file mode 100644 index b86e69af..00000000 --- a/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json +++ /dev/null @@ -1,1074 +0,0 @@ -{ - "type": "Program", - "body": [], - "sourceType": "module", - "range": [ - 116, - 116 - ], - "loc": { - "start": { - "line": 8, - "column": 0 - }, - "end": { - "line": 8, - "column": 0 - } - }, - "tokens": [ - { - "type": "Punctuator", - "range": [ - 91, - 115 - ], - "loc": { - "start": { - "line": 7, - "column": 0 - }, - "end": { - "line": 7, - "column": 24 - } - }, - "value": "" - } - ], - "comments": [], - "templateBody": { - "type": "VElement", - "range": [ - 0, - 89 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 5, - "column": 11 - } - }, - "name": "template", - "rawName": "template", - "namespace": "http://www.w3.org/1999/xhtml", - "startTag": { - "type": "VStartTag", - "range": [ - 0, - 10 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 10 - } - }, - "selfClosing": false, - "attributes": [] - }, - "children": [ - { - "type": "VText", - "range": [ - 10, - 15 - ], - "loc": { - "start": { - "line": 1, - "column": 10 - }, - "end": { - "line": 2, - "column": 4 - } - }, - "value": "\n " - }, - { - "type": "VElement", - "range": [ - 15, - 77 - ], - "loc": { - "start": { - "line": 2, - "column": 4 - }, - "end": { - "line": 4, - "column": 10 - } - }, - "name": "div", - "rawName": "div", - "namespace": "http://www.w3.org/1999/xhtml", - "startTag": { - "type": "VStartTag", - "range": [ - 15, - 20 - ], - "loc": { - "start": { - "line": 2, - "column": 4 - }, - "end": { - "line": 2, - "column": 9 - } - }, - "selfClosing": false, - "attributes": [] - }, - "children": [ - { - "type": "VText", - "range": [ - 20, - 29 - ], - "loc": { - "start": { - "line": 2, - "column": 9 - }, - "end": { - "line": 3, - "column": 8 - } - }, - "value": "\n " - }, - { - "type": "VExpressionContainer", - "range": [ - 29, - 66 - ], - "loc": { - "start": { - "line": 3, - "column": 8 - }, - "end": { - "line": 3, - "column": 45 - } - }, - "expression": { - "type": "CallExpression", - "callee": { - "type": "MemberExpression", - "object": { - "type": "Identifier", - "name": "JSON", - "range": [ - 32, - 36 - ], - "loc": { - "start": { - "line": 3, - "column": 11 - }, - "end": { - "line": 3, - "column": 15 - } - } - }, - "property": { - "type": "Identifier", - "name": "stringify", - "range": [ - 37, - 46 - ], - "loc": { - "start": { - "line": 3, - "column": 16 - }, - "end": { - "line": 3, - "column": 25 - } - } - }, - "computed": false, - "optional": false, - "range": [ - 32, - 46 - ], - "loc": { - "start": { - "line": 3, - "column": 11 - }, - "end": { - "line": 3, - "column": 25 - } - } - }, - "arguments": [ - { - "type": "ObjectExpression", - "properties": [ - { - "type": "Property", - "key": { - "type": "Identifier", - "name": "test", - "range": [ - 49, - 53 - ], - "loc": { - "start": { - "line": 3, - "column": 28 - }, - "end": { - "line": 3, - "column": 32 - } - } - }, - "value": { - "type": "Literal", - "value": "test", - "raw": "'test'", - "range": [ - 55, - 61 - ], - "loc": { - "start": { - "line": 3, - "column": 34 - }, - "end": { - "line": 3, - "column": 40 - } - } - }, - "computed": false, - "method": false, - "shorthand": false, - "kind": "init", - "range": [ - 49, - 61 - ], - "loc": { - "start": { - "line": 3, - "column": 28 - }, - "end": { - "line": 3, - "column": 40 - } - } - } - ], - "range": [ - 47, - 62 - ], - "loc": { - "start": { - "line": 3, - "column": 26 - }, - "end": { - "line": 3, - "column": 41 - } - } - } - ], - "optional": false, - "range": [ - 32, - 63 - ], - "loc": { - "start": { - "line": 3, - "column": 11 - }, - "end": { - "line": 3, - "column": 42 - } - } - }, - "references": [ - { - "id": { - "type": "Identifier", - "name": "JSON", - "range": [ - 32, - 36 - ], - "loc": { - "start": { - "line": 3, - "column": 11 - }, - "end": { - "line": 3, - "column": 15 - } - } - }, - "mode": "r" - } - ] - }, - { - "type": "VText", - "range": [ - 66, - 71 - ], - "loc": { - "start": { - "line": 3, - "column": 45 - }, - "end": { - "line": 4, - "column": 4 - } - }, - "value": "\n " - } - ], - "endTag": { - "type": "VEndTag", - "range": [ - 71, - 77 - ], - "loc": { - "start": { - "line": 4, - "column": 4 - }, - "end": { - "line": 4, - "column": 10 - } - } - }, - "variables": [] - }, - { - "type": "VText", - "range": [ - 77, - 78 - ], - "loc": { - "start": { - "line": 4, - "column": 10 - }, - "end": { - "line": 5, - "column": 0 - } - }, - "value": "\n" - } - ], - "endTag": { - "type": "VEndTag", - "range": [ - 78, - 89 - ], - "loc": { - "start": { - "line": 5, - "column": 0 - }, - "end": { - "line": 5, - "column": 11 - } - } - }, - "variables": [], - "tokens": [ - { - "type": "HTMLTagOpen", - "range": [ - 0, - 9 - ], - "loc": { - "start": { - "line": 1, - "column": 0 - }, - "end": { - "line": 1, - "column": 9 - } - }, - "value": "template" - }, - { - "type": "HTMLTagClose", - "range": [ - 9, - 10 - ], - "loc": { - "start": { - "line": 1, - "column": 9 - }, - "end": { - "line": 1, - "column": 10 - } - }, - "value": "" - }, - { - "type": "HTMLWhitespace", - "range": [ - 10, - 15 - ], - "loc": { - "start": { - "line": 1, - "column": 10 - }, - "end": { - "line": 2, - "column": 4 - } - }, - "value": "\n " - }, - { - "type": "HTMLTagOpen", - "range": [ - 15, - 19 - ], - "loc": { - "start": { - "line": 2, - "column": 4 - }, - "end": { - "line": 2, - "column": 8 - } - }, - "value": "div" - }, - { - "type": "HTMLTagClose", - "range": [ - 19, - 20 - ], - "loc": { - "start": { - "line": 2, - "column": 8 - }, - "end": { - "line": 2, - "column": 9 - } - }, - "value": "" - }, - { - "type": "HTMLWhitespace", - "range": [ - 20, - 29 - ], - "loc": { - "start": { - "line": 2, - "column": 9 - }, - "end": { - "line": 3, - "column": 8 - } - }, - "value": "\n " - }, - { - "type": "VExpressionStart", - "range": [ - 29, - 31 - ], - "loc": { - "start": { - "line": 3, - "column": 8 - }, - "end": { - "line": 3, - "column": 10 - } - }, - "value": "{{" - }, - { - "type": "Identifier", - "value": "JSON", - "range": [ - 32, - 36 - ], - "loc": { - "start": { - "line": 3, - "column": 11 - }, - "end": { - "line": 3, - "column": 15 - } - } - }, - { - "type": "Punctuator", - "value": ".", - "range": [ - 36, - 37 - ], - "loc": { - "start": { - "line": 3, - "column": 15 - }, - "end": { - "line": 3, - "column": 16 - } - } - }, - { - "type": "Identifier", - "value": "stringify", - "range": [ - 37, - 46 - ], - "loc": { - "start": { - "line": 3, - "column": 16 - }, - "end": { - "line": 3, - "column": 25 - } - } - }, - { - "type": "Punctuator", - "value": "(", - "range": [ - 46, - 47 - ], - "loc": { - "start": { - "line": 3, - "column": 25 - }, - "end": { - "line": 3, - "column": 26 - } - } - }, - { - "type": "Punctuator", - "value": "{", - "range": [ - 47, - 48 - ], - "loc": { - "start": { - "line": 3, - "column": 26 - }, - "end": { - "line": 3, - "column": 27 - } - } - }, - { - "type": "Identifier", - "value": "test", - "range": [ - 49, - 53 - ], - "loc": { - "start": { - "line": 3, - "column": 28 - }, - "end": { - "line": 3, - "column": 32 - } - } - }, - { - "type": "Punctuator", - "value": ":", - "range": [ - 53, - 54 - ], - "loc": { - "start": { - "line": 3, - "column": 32 - }, - "end": { - "line": 3, - "column": 33 - } - } - }, - { - "type": "String", - "value": "'test'", - "range": [ - 55, - 61 - ], - "loc": { - "start": { - "line": 3, - "column": 34 - }, - "end": { - "line": 3, - "column": 40 - } - } - }, - { - "type": "Punctuator", - "value": "}", - "range": [ - 61, - 62 - ], - "loc": { - "start": { - "line": 3, - "column": 40 - }, - "end": { - "line": 3, - "column": 41 - } - } - }, - { - "type": "Punctuator", - "value": ")", - "range": [ - 62, - 63 - ], - "loc": { - "start": { - "line": 3, - "column": 41 - }, - "end": { - "line": 3, - "column": 42 - } - } - }, - { - "type": "VExpressionEnd", - "range": [ - 64, - 66 - ], - "loc": { - "start": { - "line": 3, - "column": 43 - }, - "end": { - "line": 3, - "column": 45 - } - }, - "value": "}}" - }, - { - "type": "HTMLWhitespace", - "range": [ - 66, - 71 - ], - "loc": { - "start": { - "line": 3, - "column": 45 - }, - "end": { - "line": 4, - "column": 4 - } - }, - "value": "\n " - }, - { - "type": "HTMLEndTagOpen", - "range": [ - 71, - 76 - ], - "loc": { - "start": { - "line": 4, - "column": 4 - }, - "end": { - "line": 4, - "column": 9 - } - }, - "value": "div" - }, - { - "type": "HTMLTagClose", - "range": [ - 76, - 77 - ], - "loc": { - "start": { - "line": 4, - "column": 9 - }, - "end": { - "line": 4, - "column": 10 - } - }, - "value": "" - }, - { - "type": "HTMLWhitespace", - "range": [ - 77, - 78 - ], - "loc": { - "start": { - "line": 4, - "column": 10 - }, - "end": { - "line": 5, - "column": 0 - } - }, - "value": "\n" - }, - { - "type": "HTMLEndTagOpen", - "range": [ - 78, - 88 - ], - "loc": { - "start": { - "line": 5, - "column": 0 - }, - "end": { - "line": 5, - "column": 10 - } - }, - "value": "template" - }, - { - "type": "HTMLTagClose", - "range": [ - 88, - 89 - ], - "loc": { - "start": { - "line": 5, - "column": 10 - }, - "end": { - "line": 5, - "column": 11 - } - }, - "value": "" - }, - { - "type": "HTMLWhitespace", - "range": [ - 89, - 91 - ], - "loc": { - "start": { - "line": 5, - "column": 11 - }, - "end": { - "line": 7, - "column": 0 - } - }, - "value": "\n\n" - }, - { - "type": "HTMLTagOpen", - "range": [ - 91, - 98 - ], - "loc": { - "start": { - "line": 7, - "column": 0 - }, - "end": { - "line": 7, - "column": 7 - } - }, - "value": "script" - }, - { - "type": "HTMLIdentifier", - "range": [ - 99, - 103 - ], - "loc": { - "start": { - "line": 7, - "column": 8 - }, - "end": { - "line": 7, - "column": 12 - } - }, - "value": "lang" - }, - { - "type": "HTMLAssociation", - "range": [ - 103, - 104 - ], - "loc": { - "start": { - "line": 7, - "column": 12 - }, - "end": { - "line": 7, - "column": 13 - } - }, - "value": "" - }, - { - "type": "HTMLLiteral", - "range": [ - 104, - 108 - ], - "loc": { - "start": { - "line": 7, - "column": 13 - }, - "end": { - "line": 7, - "column": 17 - } - }, - "value": "ts" - }, - { - "type": "HTMLIdentifier", - "range": [ - 109, - 114 - ], - "loc": { - "start": { - "line": 7, - "column": 18 - }, - "end": { - "line": 7, - "column": 23 - } - }, - "value": "setup" - }, - { - "type": "HTMLTagClose", - "range": [ - 114, - 115 - ], - "loc": { - "start": { - "line": 7, - "column": 23 - }, - "end": { - "line": 7, - "column": 24 - } - }, - "value": "" - }, - { - "type": "HTMLWhitespace", - "range": [ - 115, - 116 - ], - "loc": { - "start": { - "line": 7, - "column": 24 - }, - "end": { - "line": 8, - "column": 0 - } - }, - "value": "\n" - }, - { - "type": "HTMLEndTagOpen", - "range": [ - 116, - 124 - ], - "loc": { - "start": { - "line": 8, - "column": 0 - }, - "end": { - "line": 8, - "column": 8 - } - }, - "value": "script" - }, - { - "type": "HTMLTagClose", - "range": [ - 124, - 125 - ], - "loc": { - "start": { - "line": 8, - "column": 8 - }, - "end": { - "line": 8, - "column": 9 - } - }, - "value": "" - }, - { - "type": "HTMLWhitespace", - "range": [ - 125, - 126 - ], - "loc": { - "start": { - "line": 8, - "column": 9 - }, - "end": { - "line": 9, - "column": 0 - } - }, - "value": "\n" - } - ], - "comments": [], - "errors": [] - } -} \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json deleted file mode 100644 index 0ead30e9..00000000 --- a/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "sourceType": "module", - "parser": { - "ts": "@typescript-eslint/parser" - } -} diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json deleted file mode 100644 index 80bdb3dd..00000000 --- a/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json +++ /dev/null @@ -1,838 +0,0 @@ -{ - "type": "global", - "variables": [ - { - "name": "Symbol", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "PropertyKey", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "PropertyDescriptor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "PropertyDescriptorMap", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Object", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ObjectConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Function", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "FunctionConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ThisParameterType", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "OmitThisParameter", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "CallableFunction", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "NewableFunction", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "IArguments", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "String", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "StringConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Boolean", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "BooleanConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Number", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "NumberConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "TemplateStringsArray", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ImportMeta", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ImportCallOptions", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ImportAssertions", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Math", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Date", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "DateConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "RegExpMatchArray", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "RegExpExecArray", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "RegExp", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "RegExpConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Error", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ErrorConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "EvalError", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "EvalErrorConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "RangeError", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "RangeErrorConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ReferenceError", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ReferenceErrorConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "SyntaxError", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "SyntaxErrorConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "TypeError", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "TypeErrorConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "URIError", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "URIErrorConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "JSON", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ReadonlyArray", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ConcatArray", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "TypedPropertyDescriptor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ClassDecorator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "PropertyDecorator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "MethodDecorator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ParameterDecorator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "PromiseConstructorLike", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "PromiseLike", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Promise", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Awaited", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ArrayLike", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Partial", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Required", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Readonly", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Pick", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Record", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Exclude", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Extract", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Omit", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "NonNullable", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Parameters", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ConstructorParameters", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ReturnType", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "InstanceType", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uppercase", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Lowercase", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Capitalize", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uncapitalize", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ThisType", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ArrayBuffer", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ArrayBufferTypes", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ArrayBufferLike", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ArrayBufferConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ArrayBufferView", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "DataView", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "DataViewConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Int8Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Int8ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint8Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint8ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint8ClampedArray", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint8ClampedArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Int16Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Int16ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint16Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint16ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Int32Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Int32ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint32Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Uint32ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Float32Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Float32ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Float64Array", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Float64ArrayConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Intl", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Map", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "MapConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ReadonlyMap", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "WeakMap", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "WeakMapConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Set", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "SetConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ReadonlySet", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "WeakSet", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "WeakSetConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "SymbolConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "IteratorYieldResult", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "IteratorReturnResult", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "IteratorResult", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Iterator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Iterable", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "IterableIterator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "PromiseConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Generator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "GeneratorFunction", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "GeneratorFunctionConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ProxyHandler", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "ProxyConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Reflect", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "SharedArrayBuffer", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "SharedArrayBufferConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "Atomics", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "AsyncIterator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "AsyncIterable", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "AsyncIterableIterator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "AsyncGenerator", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "AsyncGeneratorFunction", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "AsyncGeneratorFunctionConstructor", - "identifiers": [], - "defs": [], - "references": [] - }, - { - "name": "const", - "identifiers": [], - "defs": [], - "references": [] - } - ], - "references": [], - "childScopes": [ - { - "type": "module", - "variables": [], - "references": [], - "childScopes": [], - "through": [] - } - ], - "through": [] -} \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json deleted file mode 100644 index 7159ba5a..00000000 --- a/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - "defineCustomBlocksVisitor", - "defineDocumentVisitor", - "defineTemplateBodyVisitor", - "esTreeNodeToTSNodeMap", - "getDocumentFragment", - "getTemplateBodyTokenStore", - "hasFullTypeInformation", - "program", - "tsNodeToESTreeNodeMap" -] \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue b/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue deleted file mode 100644 index 32aa1772..00000000 --- a/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json deleted file mode 100644 index b5c5f60f..00000000 --- a/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json +++ /dev/null @@ -1,39 +0,0 @@ -[ - "", - "", - "\n ", - "", - "\n ", - "{{", - "JSON", - ".", - "stringify", - "(", - "{", - "test", - ":", - "'test'", - "}", - ")", - "}}", - "\n ", - "", - "\n", - "", - "\n\n", - "", - "\n", - "", - "\n" -] \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json deleted file mode 100644 index d8308723..00000000 --- a/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json +++ /dev/null @@ -1,104 +0,0 @@ -[ - { - "type": "VElement", - "text": "", - "children": [ - { - "type": "VStartTag", - "text": "", - "children": [] - } - ] - } -] \ No newline at end of file diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json deleted file mode 100644 index 0fe9a184..00000000 --- a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rules": { - "no-obj-calls": "error" - } -} diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue deleted file mode 100644 index 32aa1772..00000000 --- a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue +++ /dev/null @@ -1,8 +0,0 @@ - - - From f14d0666a74dc098c33777172b82b8f188a209c9 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Tue, 17 May 2022 19:07:09 +0900 Subject: [PATCH 3/4] Fix crash for script setup in no-obj-calls rule (#152) --- scripts/update-fixtures-ast.js | 3 + src/script-setup/scope-analyzer.ts | 2 +- .../ast/multiple-scripts-7/scope.json | 105 +- .../ast.json | 1074 +++++++++++++++++ .../parser-options.json | 6 + .../scope.json | 838 +++++++++++++ .../services.json | 11 + .../source.vue | 8 + .../token-ranges.json | 39 + .../tree.json | 104 ++ .../no-obj-calls/.eslintrc.json | 5 + .../no-obj-calls/valid.vue | 8 + 12 files changed, 2200 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/services.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json create mode 100644 test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json create mode 100644 test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json create mode 100644 test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue diff --git a/scripts/update-fixtures-ast.js b/scripts/update-fixtures-ast.js index 6e6cc54c..23aa1c56 100644 --- a/scripts/update-fixtures-ast.js +++ b/scripts/update-fixtures-ast.js @@ -131,6 +131,9 @@ function scopeToJSON(scopeManager) { reference.resolved.defs[0].name, ), init: reference.init || null, + vueUsedInTemplate: reference.vueUsedInTemplate + ? reference.vueUsedInTemplate + : undefined, } } diff --git a/src/script-setup/scope-analyzer.ts b/src/script-setup/scope-analyzer.ts index 0d2518e9..0d77fd22 100644 --- a/src/script-setup/scope-analyzer.ts +++ b/src/script-setup/scope-analyzer.ts @@ -171,7 +171,7 @@ function analyzeUsedInTemplateVariables( function markVariableAsUsed(name: string) { const variable = scriptVariables.get(name) - if (!variable) { + if (!variable || variable.identifiers.length === 0) { return } if (markedVariables.has(name)) { diff --git a/test/fixtures/ast/multiple-scripts-7/scope.json b/test/fixtures/ast/multiple-scripts-7/scope.json index ee330a3e..18858c17 100644 --- a/test/fixtures/ast/multiple-scripts-7/scope.json +++ b/test/fixtures/ast/multiple-scripts-7/scope.json @@ -138,6 +138,39 @@ } }, "init": true + }, + { + "identifier": { + "type": "Identifier", + "name": "count", + "loc": { + "start": { + "line": 2, + "column": 11 + }, + "end": { + "line": 2, + "column": 16 + } + } + }, + "from": "module", + "resolved": { + "type": "Identifier", + "name": "count", + "loc": { + "start": { + "line": 2, + "column": 11 + }, + "end": { + "line": 2, + "column": 16 + } + } + }, + "init": null, + "vueUsedInTemplate": true } ] }, @@ -178,7 +211,41 @@ "name": "MyComponent1" } ], - "references": [] + "references": [ + { + "identifier": { + "type": "Identifier", + "name": "MyComponent1", + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 19 + } + } + }, + "from": "module", + "resolved": { + "type": "Identifier", + "name": "MyComponent1", + "loc": { + "start": { + "line": 6, + "column": 7 + }, + "end": { + "line": 6, + "column": 19 + } + } + }, + "init": null, + "vueUsedInTemplate": true + } + ] }, { "name": "MyComponent2", @@ -217,7 +284,41 @@ "name": "MyComponent2" } ], - "references": [] + "references": [ + { + "identifier": { + "type": "Identifier", + "name": "MyComponent2", + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 19 + } + } + }, + "from": "module", + "resolved": { + "type": "Identifier", + "name": "MyComponent2", + "loc": { + "start": { + "line": 8, + "column": 7 + }, + "end": { + "line": 8, + "column": 19 + } + } + }, + "init": null, + "vueUsedInTemplate": true + } + ] }, { "name": "a", diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json new file mode 100644 index 00000000..b86e69af --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/ast.json @@ -0,0 +1,1074 @@ +{ + "type": "Program", + "body": [], + "sourceType": "module", + "range": [ + 116, + 116 + ], + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 0 + } + }, + "tokens": [ + { + "type": "Punctuator", + "range": [ + 91, + 115 + ], + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 24 + } + }, + "value": "" + } + ], + "comments": [], + "templateBody": { + "type": "VElement", + "range": [ + 0, + 89 + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 5, + "column": 11 + } + }, + "name": "template", + "rawName": "template", + "namespace": "http://www.w3.org/1999/xhtml", + "startTag": { + "type": "VStartTag", + "range": [ + 0, + 10 + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 10 + } + }, + "selfClosing": false, + "attributes": [] + }, + "children": [ + { + "type": "VText", + "range": [ + 10, + 15 + ], + "loc": { + "start": { + "line": 1, + "column": 10 + }, + "end": { + "line": 2, + "column": 4 + } + }, + "value": "\n " + }, + { + "type": "VElement", + "range": [ + 15, + 77 + ], + "loc": { + "start": { + "line": 2, + "column": 4 + }, + "end": { + "line": 4, + "column": 10 + } + }, + "name": "div", + "rawName": "div", + "namespace": "http://www.w3.org/1999/xhtml", + "startTag": { + "type": "VStartTag", + "range": [ + 15, + 20 + ], + "loc": { + "start": { + "line": 2, + "column": 4 + }, + "end": { + "line": 2, + "column": 9 + } + }, + "selfClosing": false, + "attributes": [] + }, + "children": [ + { + "type": "VText", + "range": [ + 20, + 29 + ], + "loc": { + "start": { + "line": 2, + "column": 9 + }, + "end": { + "line": 3, + "column": 8 + } + }, + "value": "\n " + }, + { + "type": "VExpressionContainer", + "range": [ + 29, + 66 + ], + "loc": { + "start": { + "line": 3, + "column": 8 + }, + "end": { + "line": 3, + "column": 45 + } + }, + "expression": { + "type": "CallExpression", + "callee": { + "type": "MemberExpression", + "object": { + "type": "Identifier", + "name": "JSON", + "range": [ + 32, + 36 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 15 + } + } + }, + "property": { + "type": "Identifier", + "name": "stringify", + "range": [ + 37, + 46 + ], + "loc": { + "start": { + "line": 3, + "column": 16 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + "computed": false, + "optional": false, + "range": [ + 32, + 46 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + "arguments": [ + { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "key": { + "type": "Identifier", + "name": "test", + "range": [ + 49, + 53 + ], + "loc": { + "start": { + "line": 3, + "column": 28 + }, + "end": { + "line": 3, + "column": 32 + } + } + }, + "value": { + "type": "Literal", + "value": "test", + "raw": "'test'", + "range": [ + 55, + 61 + ], + "loc": { + "start": { + "line": 3, + "column": 34 + }, + "end": { + "line": 3, + "column": 40 + } + } + }, + "computed": false, + "method": false, + "shorthand": false, + "kind": "init", + "range": [ + 49, + 61 + ], + "loc": { + "start": { + "line": 3, + "column": 28 + }, + "end": { + "line": 3, + "column": 40 + } + } + } + ], + "range": [ + 47, + 62 + ], + "loc": { + "start": { + "line": 3, + "column": 26 + }, + "end": { + "line": 3, + "column": 41 + } + } + } + ], + "optional": false, + "range": [ + 32, + 63 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 42 + } + } + }, + "references": [ + { + "id": { + "type": "Identifier", + "name": "JSON", + "range": [ + 32, + 36 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 15 + } + } + }, + "mode": "r" + } + ] + }, + { + "type": "VText", + "range": [ + 66, + 71 + ], + "loc": { + "start": { + "line": 3, + "column": 45 + }, + "end": { + "line": 4, + "column": 4 + } + }, + "value": "\n " + } + ], + "endTag": { + "type": "VEndTag", + "range": [ + 71, + 77 + ], + "loc": { + "start": { + "line": 4, + "column": 4 + }, + "end": { + "line": 4, + "column": 10 + } + } + }, + "variables": [] + }, + { + "type": "VText", + "range": [ + 77, + 78 + ], + "loc": { + "start": { + "line": 4, + "column": 10 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "value": "\n" + } + ], + "endTag": { + "type": "VEndTag", + "range": [ + 78, + 89 + ], + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 11 + } + } + }, + "variables": [], + "tokens": [ + { + "type": "HTMLTagOpen", + "range": [ + 0, + 9 + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "value": "template" + }, + { + "type": "HTMLTagClose", + "range": [ + 9, + 10 + ], + "loc": { + "start": { + "line": 1, + "column": 9 + }, + "end": { + "line": 1, + "column": 10 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 10, + 15 + ], + "loc": { + "start": { + "line": 1, + "column": 10 + }, + "end": { + "line": 2, + "column": 4 + } + }, + "value": "\n " + }, + { + "type": "HTMLTagOpen", + "range": [ + 15, + 19 + ], + "loc": { + "start": { + "line": 2, + "column": 4 + }, + "end": { + "line": 2, + "column": 8 + } + }, + "value": "div" + }, + { + "type": "HTMLTagClose", + "range": [ + 19, + 20 + ], + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 9 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 20, + 29 + ], + "loc": { + "start": { + "line": 2, + "column": 9 + }, + "end": { + "line": 3, + "column": 8 + } + }, + "value": "\n " + }, + { + "type": "VExpressionStart", + "range": [ + 29, + 31 + ], + "loc": { + "start": { + "line": 3, + "column": 8 + }, + "end": { + "line": 3, + "column": 10 + } + }, + "value": "{{" + }, + { + "type": "Identifier", + "value": "JSON", + "range": [ + 32, + 36 + ], + "loc": { + "start": { + "line": 3, + "column": 11 + }, + "end": { + "line": 3, + "column": 15 + } + } + }, + { + "type": "Punctuator", + "value": ".", + "range": [ + 36, + 37 + ], + "loc": { + "start": { + "line": 3, + "column": 15 + }, + "end": { + "line": 3, + "column": 16 + } + } + }, + { + "type": "Identifier", + "value": "stringify", + "range": [ + 37, + 46 + ], + "loc": { + "start": { + "line": 3, + "column": 16 + }, + "end": { + "line": 3, + "column": 25 + } + } + }, + { + "type": "Punctuator", + "value": "(", + "range": [ + 46, + 47 + ], + "loc": { + "start": { + "line": 3, + "column": 25 + }, + "end": { + "line": 3, + "column": 26 + } + } + }, + { + "type": "Punctuator", + "value": "{", + "range": [ + 47, + 48 + ], + "loc": { + "start": { + "line": 3, + "column": 26 + }, + "end": { + "line": 3, + "column": 27 + } + } + }, + { + "type": "Identifier", + "value": "test", + "range": [ + 49, + 53 + ], + "loc": { + "start": { + "line": 3, + "column": 28 + }, + "end": { + "line": 3, + "column": 32 + } + } + }, + { + "type": "Punctuator", + "value": ":", + "range": [ + 53, + 54 + ], + "loc": { + "start": { + "line": 3, + "column": 32 + }, + "end": { + "line": 3, + "column": 33 + } + } + }, + { + "type": "String", + "value": "'test'", + "range": [ + 55, + 61 + ], + "loc": { + "start": { + "line": 3, + "column": 34 + }, + "end": { + "line": 3, + "column": 40 + } + } + }, + { + "type": "Punctuator", + "value": "}", + "range": [ + 61, + 62 + ], + "loc": { + "start": { + "line": 3, + "column": 40 + }, + "end": { + "line": 3, + "column": 41 + } + } + }, + { + "type": "Punctuator", + "value": ")", + "range": [ + 62, + 63 + ], + "loc": { + "start": { + "line": 3, + "column": 41 + }, + "end": { + "line": 3, + "column": 42 + } + } + }, + { + "type": "VExpressionEnd", + "range": [ + 64, + 66 + ], + "loc": { + "start": { + "line": 3, + "column": 43 + }, + "end": { + "line": 3, + "column": 45 + } + }, + "value": "}}" + }, + { + "type": "HTMLWhitespace", + "range": [ + 66, + 71 + ], + "loc": { + "start": { + "line": 3, + "column": 45 + }, + "end": { + "line": 4, + "column": 4 + } + }, + "value": "\n " + }, + { + "type": "HTMLEndTagOpen", + "range": [ + 71, + 76 + ], + "loc": { + "start": { + "line": 4, + "column": 4 + }, + "end": { + "line": 4, + "column": 9 + } + }, + "value": "div" + }, + { + "type": "HTMLTagClose", + "range": [ + 76, + 77 + ], + "loc": { + "start": { + "line": 4, + "column": 9 + }, + "end": { + "line": 4, + "column": 10 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 77, + 78 + ], + "loc": { + "start": { + "line": 4, + "column": 10 + }, + "end": { + "line": 5, + "column": 0 + } + }, + "value": "\n" + }, + { + "type": "HTMLEndTagOpen", + "range": [ + 78, + 88 + ], + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 10 + } + }, + "value": "template" + }, + { + "type": "HTMLTagClose", + "range": [ + 88, + 89 + ], + "loc": { + "start": { + "line": 5, + "column": 10 + }, + "end": { + "line": 5, + "column": 11 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 89, + 91 + ], + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 7, + "column": 0 + } + }, + "value": "\n\n" + }, + { + "type": "HTMLTagOpen", + "range": [ + 91, + 98 + ], + "loc": { + "start": { + "line": 7, + "column": 0 + }, + "end": { + "line": 7, + "column": 7 + } + }, + "value": "script" + }, + { + "type": "HTMLIdentifier", + "range": [ + 99, + 103 + ], + "loc": { + "start": { + "line": 7, + "column": 8 + }, + "end": { + "line": 7, + "column": 12 + } + }, + "value": "lang" + }, + { + "type": "HTMLAssociation", + "range": [ + 103, + 104 + ], + "loc": { + "start": { + "line": 7, + "column": 12 + }, + "end": { + "line": 7, + "column": 13 + } + }, + "value": "" + }, + { + "type": "HTMLLiteral", + "range": [ + 104, + 108 + ], + "loc": { + "start": { + "line": 7, + "column": 13 + }, + "end": { + "line": 7, + "column": 17 + } + }, + "value": "ts" + }, + { + "type": "HTMLIdentifier", + "range": [ + 109, + 114 + ], + "loc": { + "start": { + "line": 7, + "column": 18 + }, + "end": { + "line": 7, + "column": 23 + } + }, + "value": "setup" + }, + { + "type": "HTMLTagClose", + "range": [ + 114, + 115 + ], + "loc": { + "start": { + "line": 7, + "column": 23 + }, + "end": { + "line": 7, + "column": 24 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 115, + 116 + ], + "loc": { + "start": { + "line": 7, + "column": 24 + }, + "end": { + "line": 8, + "column": 0 + } + }, + "value": "\n" + }, + { + "type": "HTMLEndTagOpen", + "range": [ + 116, + 124 + ], + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 8 + } + }, + "value": "script" + }, + { + "type": "HTMLTagClose", + "range": [ + 124, + 125 + ], + "loc": { + "start": { + "line": 8, + "column": 8 + }, + "end": { + "line": 8, + "column": 9 + } + }, + "value": "" + }, + { + "type": "HTMLWhitespace", + "range": [ + 125, + 126 + ], + "loc": { + "start": { + "line": 8, + "column": 9 + }, + "end": { + "line": 9, + "column": 0 + } + }, + "value": "\n" + } + ], + "comments": [], + "errors": [] + } +} \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json new file mode 100644 index 00000000..0ead30e9 --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/parser-options.json @@ -0,0 +1,6 @@ +{ + "sourceType": "module", + "parser": { + "ts": "@typescript-eslint/parser" + } +} diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json new file mode 100644 index 00000000..80bdb3dd --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/scope.json @@ -0,0 +1,838 @@ +{ + "type": "global", + "variables": [ + { + "name": "Symbol", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyKey", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyDescriptor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyDescriptorMap", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Object", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ObjectConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Function", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "FunctionConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ThisParameterType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "OmitThisParameter", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "CallableFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "NewableFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IArguments", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "String", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "StringConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Boolean", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "BooleanConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Number", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "NumberConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TemplateStringsArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ImportMeta", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ImportCallOptions", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ImportAssertions", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Math", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Date", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "DateConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExpMatchArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExpExecArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExp", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RegExpConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Error", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "EvalError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "EvalErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RangeError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "RangeErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReferenceError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReferenceErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SyntaxError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SyntaxErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TypeError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TypeErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "URIError", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "URIErrorConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "JSON", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReadonlyArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ConcatArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "TypedPropertyDescriptor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ClassDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PropertyDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "MethodDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ParameterDecorator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PromiseConstructorLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PromiseLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Promise", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Awaited", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Partial", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Required", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Readonly", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Pick", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Record", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Exclude", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Extract", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Omit", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "NonNullable", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Parameters", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ConstructorParameters", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReturnType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "InstanceType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uppercase", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Lowercase", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Capitalize", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uncapitalize", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ThisType", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBuffer", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferTypes", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferLike", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ArrayBufferView", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "DataView", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "DataViewConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int8Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int8ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8ClampedArray", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint8ClampedArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int16Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int16ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint16Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint16ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int32Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Int32ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint32Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Uint32ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float32Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float32ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float64Array", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Float64ArrayConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Intl", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Map", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "MapConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReadonlyMap", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakMap", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakMapConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Set", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SetConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ReadonlySet", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakSet", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "WeakSetConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SymbolConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IteratorYieldResult", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IteratorReturnResult", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IteratorResult", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Iterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Iterable", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "IterableIterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "PromiseConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Generator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "GeneratorFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "GeneratorFunctionConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ProxyHandler", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "ProxyConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Reflect", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SharedArrayBuffer", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "SharedArrayBufferConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "Atomics", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncIterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncIterable", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncIterableIterator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncGenerator", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncGeneratorFunction", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "AsyncGeneratorFunctionConstructor", + "identifiers": [], + "defs": [], + "references": [] + }, + { + "name": "const", + "identifiers": [], + "defs": [], + "references": [] + } + ], + "references": [], + "childScopes": [ + { + "type": "module", + "variables": [], + "references": [], + "childScopes": [], + "through": [] + } + ], + "through": [] +} \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json new file mode 100644 index 00000000..7159ba5a --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/services.json @@ -0,0 +1,11 @@ +[ + "defineCustomBlocksVisitor", + "defineDocumentVisitor", + "defineTemplateBodyVisitor", + "esTreeNodeToTSNodeMap", + "getDocumentFragment", + "getTemplateBodyTokenStore", + "hasFullTypeInformation", + "program", + "tsNodeToESTreeNodeMap" +] \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue b/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue new file mode 100644 index 00000000..32aa1772 --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/source.vue @@ -0,0 +1,8 @@ + + + diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json new file mode 100644 index 00000000..b5c5f60f --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/token-ranges.json @@ -0,0 +1,39 @@ +[ + "", + "", + "\n ", + "", + "\n ", + "{{", + "JSON", + ".", + "stringify", + "(", + "{", + "test", + ":", + "'test'", + "}", + ")", + "}}", + "\n ", + "", + "\n", + "", + "\n\n", + "", + "\n", + "", + "\n" +] \ No newline at end of file diff --git a/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json b/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json new file mode 100644 index 00000000..d8308723 --- /dev/null +++ b/test/fixtures/ast/ts-script-setup-with-use-global-var/tree.json @@ -0,0 +1,104 @@ +[ + { + "type": "VElement", + "text": "", + "children": [ + { + "type": "VStartTag", + "text": "", + "children": [] + } + ] + } +] \ No newline at end of file diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json new file mode 100644 index 00000000..0fe9a184 --- /dev/null +++ b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "rules": { + "no-obj-calls": "error" + } +} diff --git a/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue new file mode 100644 index 00000000..32aa1772 --- /dev/null +++ b/test/fixtures/integrations/script-setup-with-typescript-eslint/no-obj-calls/valid.vue @@ -0,0 +1,8 @@ + + + From 806a38c291c802749e6322d80cce2678549058bb Mon Sep 17 00:00:00 2001 From: yosuke ota Date: Tue, 17 May 2022 19:10:53 +0900 Subject: [PATCH 4/4] 9.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 413d6658..d95d6764 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-eslint-parser", - "version": "9.0.1", + "version": "9.0.2", "description": "The ESLint custom parser for `.vue` files.", "engines": { "node": "^14.17.0 || >=16.0.0"