diff --git a/src/script-setup/scope-analyzer.ts b/src/script-setup/scope-analyzer.ts
index 1c078fad..e9f7cdfd 100644
--- a/src/script-setup/scope-analyzer.ts
+++ b/src/script-setup/scope-analyzer.ts
@@ -82,6 +82,9 @@ const COMPILER_MACROS_AT_ROOT = new Set([
"defineEmits",
"defineExpose",
"withDefaults",
+ // Added in vue 3.3
+ "defineOptions",
+ "defineSlots",
])
/**
diff --git a/test/fixtures/ast/define-options/ast.json b/test/fixtures/ast/define-options/ast.json
new file mode 100644
index 00000000..07810f20
--- /dev/null
+++ b/test/fixtures/ast/define-options/ast.json
@@ -0,0 +1,551 @@
+{
+ "type": "Program",
+ "start": 15,
+ "end": 93,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 7,
+ "column": 2
+ }
+ },
+ "range": [
+ 15,
+ 93
+ ],
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "start": 15,
+ "end": 93,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 7,
+ "column": 2
+ }
+ },
+ "range": [
+ 15,
+ 93
+ ],
+ "expression": {
+ "type": "CallExpression",
+ "start": 15,
+ "end": 93,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 7,
+ "column": 2
+ }
+ },
+ "range": [
+ 15,
+ 93
+ ],
+ "callee": {
+ "type": "Identifier",
+ "start": 15,
+ "end": 28,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ },
+ "range": [
+ 15,
+ 28
+ ],
+ "name": "defineOptions"
+ },
+ "arguments": [
+ {
+ "type": "ObjectExpression",
+ "start": 29,
+ "end": 92,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 7,
+ "column": 1
+ }
+ },
+ "range": [
+ 29,
+ 92
+ ],
+ "properties": [
+ {
+ "type": "Property",
+ "start": 33,
+ "end": 52,
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ },
+ "range": [
+ 33,
+ 52
+ ],
+ "method": false,
+ "shorthand": false,
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "start": 33,
+ "end": 45,
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ },
+ "range": [
+ 33,
+ 45
+ ],
+ "name": "inheritAttrs"
+ },
+ "value": {
+ "type": "Literal",
+ "start": 47,
+ "end": 52,
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 16
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ },
+ "range": [
+ 47,
+ 52
+ ],
+ "value": false,
+ "raw": "false"
+ },
+ "kind": "init"
+ },
+ {
+ "type": "Property",
+ "start": 56,
+ "end": 90,
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 3
+ }
+ },
+ "range": [
+ 56,
+ 90
+ ],
+ "method": false,
+ "shorthand": false,
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "start": 56,
+ "end": 69,
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 15
+ }
+ },
+ "range": [
+ 56,
+ 69
+ ],
+ "name": "customOptions"
+ },
+ "value": {
+ "type": "ObjectExpression",
+ "start": 71,
+ "end": 90,
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 17
+ },
+ "end": {
+ "line": 6,
+ "column": 3
+ }
+ },
+ "range": [
+ 71,
+ 90
+ ],
+ "properties": []
+ },
+ "kind": "init"
+ }
+ ]
+ }
+ ],
+ "optional": false
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [
+ {
+ "type": "Block",
+ "value": " ... ",
+ "start": 77,
+ "end": 86,
+ "range": [
+ 77,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 4
+ },
+ "end": {
+ "line": 5,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "range": [
+ 0,
+ 14
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 14
+ }
+ },
+ "value": ""
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-options/parser-options.json b/test/fixtures/ast/define-options/parser-options.json
new file mode 100644
index 00000000..2104ca43
--- /dev/null
+++ b/test/fixtures/ast/define-options/parser-options.json
@@ -0,0 +1,3 @@
+{
+ "sourceType": "module"
+}
diff --git a/test/fixtures/ast/define-options/requirements.json b/test/fixtures/ast/define-options/requirements.json
new file mode 100644
index 00000000..36659b1f
--- /dev/null
+++ b/test/fixtures/ast/define-options/requirements.json
@@ -0,0 +1,3 @@
+{
+ "eslint": ">=8"
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-options/scope.json b/test/fixtures/ast/define-options/scope.json
new file mode 100644
index 00000000..da1a024b
--- /dev/null
+++ b/test/fixtures/ast/define-options/scope.json
@@ -0,0 +1,79 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "defineOptions",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineOptions",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineOptions",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineOptions",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-options/source.vue b/test/fixtures/ast/define-options/source.vue
new file mode 100644
index 00000000..5cf53d0e
--- /dev/null
+++ b/test/fixtures/ast/define-options/source.vue
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/test/fixtures/ast/define-options/token-ranges.json b/test/fixtures/ast/define-options/token-ranges.json
new file mode 100644
index 00000000..320f9586
--- /dev/null
+++ b/test/fixtures/ast/define-options/token-ranges.json
@@ -0,0 +1,18 @@
+[
+ "",
+ "/* ... */"
+]
\ No newline at end of file
diff --git a/test/fixtures/ast/define-options/tree.json b/test/fixtures/ast/define-options/tree.json
new file mode 100644
index 00000000..0637a088
--- /dev/null
+++ b/test/fixtures/ast/define-options/tree.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots01/ast.json b/test/fixtures/ast/define-slots01/ast.json
new file mode 100644
index 00000000..1dd238e5
--- /dev/null
+++ b/test/fixtures/ast/define-slots01/ast.json
@@ -0,0 +1,782 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "slots",
+ "range": [
+ 31,
+ 36
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "callee": {
+ "type": "Identifier",
+ "name": "defineSlots",
+ "range": [
+ 39,
+ 50
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "arguments": [],
+ "optional": false,
+ "range": [
+ 39,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 4
+ }
+ },
+ "typeParameters": {
+ "type": "TSTypeParameterInstantiation",
+ "range": [
+ 50,
+ 94
+ ],
+ "params": [
+ {
+ "type": "TSTypeLiteral",
+ "members": [
+ {
+ "type": "TSMethodSignature",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "default",
+ "range": [
+ 55,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 63,
+ 85
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 32
+ }
+ },
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 32
+ }
+ },
+ "range": [
+ 68,
+ 85
+ ],
+ "typeAnnotation": {
+ "type": "TSTypeLiteral",
+ "members": [
+ {
+ "type": "TSPropertySignature",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "msg",
+ "range": [
+ 72,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 19
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 22
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ },
+ "range": [
+ 75,
+ 83
+ ],
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 77,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 24
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ },
+ "range": [
+ 72,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 19
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 70,
+ 85
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 17
+ },
+ "end": {
+ "line": 3,
+ "column": 32
+ }
+ }
+ }
+ }
+ }
+ ],
+ "kind": "method",
+ "range": [
+ 55,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ },
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 33
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ },
+ "range": [
+ 86,
+ 91
+ ],
+ "typeAnnotation": {
+ "type": "TSAnyKeyword",
+ "range": [
+ 88,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 35
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ }
+ }
+ }
+ }
+ ],
+ "range": [
+ 51,
+ 93
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 26
+ },
+ "end": {
+ "line": 4,
+ "column": 1
+ }
+ }
+ }
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 25
+ },
+ "end": {
+ "line": 4,
+ "column": 2
+ }
+ }
+ }
+ },
+ "range": [
+ 31,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "kind": "const",
+ "range": [
+ 25,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "range": [
+ 25,
+ 97
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ },
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "range": [
+ 0,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 24
+ }
+ },
+ "value": ""
+ }
+ ],
+ "comments": []
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots01/parser-options.json b/test/fixtures/ast/define-slots01/parser-options.json
new file mode 100644
index 00000000..6e1a0ab4
--- /dev/null
+++ b/test/fixtures/ast/define-slots01/parser-options.json
@@ -0,0 +1,4 @@
+{
+ "sourceType": "module",
+ "parser": "@typescript-eslint/parser"
+}
diff --git a/test/fixtures/ast/define-slots01/requirements.json b/test/fixtures/ast/define-slots01/requirements.json
new file mode 100644
index 00000000..36659b1f
--- /dev/null
+++ b/test/fixtures/ast/define-slots01/requirements.json
@@ -0,0 +1,3 @@
+{
+ "eslint": ">=8"
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots01/scope.json b/test/fixtures/ast/define-slots01/scope.json
new file mode 100644
index 00000000..3a65764c
--- /dev/null
+++ b/test/fixtures/ast/define-slots01/scope.json
@@ -0,0 +1,1114 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "ClassMemberDecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "DecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassDecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassMethodDecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassGetterDecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassSetterDecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassAccessorDecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassAccessorDecoratorTarget",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassAccessorDecoratorResult",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassFieldDecoratorContext",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ClassDecorator",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "PropertyDecorator",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "MethodDecorator",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "ParameterDecorator",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "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": "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": []
+ },
+ {
+ "name": "defineSlots",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineSlots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "slots",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "node": {
+ "type": "VariableDeclarator",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 4,
+ "column": 4
+ }
+ }
+ },
+ "name": "slots"
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "from": "module",
+ "resolved": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "init": true
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "from": "module",
+ "resolved": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "init": true
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineSlots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "functionType",
+ "variables": [
+ {
+ "name": "props",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "props",
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "node": {
+ "type": "TSMethodSignature",
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ }
+ },
+ "name": "props"
+ }
+ ],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [],
+ "through": []
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineSlots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots01/source.vue b/test/fixtures/ast/define-slots01/source.vue
new file mode 100644
index 00000000..87ef917d
--- /dev/null
+++ b/test/fixtures/ast/define-slots01/source.vue
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots01/token-ranges.json b/test/fixtures/ast/define-slots01/token-ranges.json
new file mode 100644
index 00000000..d7790915
--- /dev/null
+++ b/test/fixtures/ast/define-slots01/token-ranges.json
@@ -0,0 +1,26 @@
+[
+ ""
+]
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots01/tree.json b/test/fixtures/ast/define-slots01/tree.json
new file mode 100644
index 00000000..0637a088
--- /dev/null
+++ b/test/fixtures/ast/define-slots01/tree.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots02-without-ts/ast.json b/test/fixtures/ast/define-slots02-without-ts/ast.json
new file mode 100644
index 00000000..14386930
--- /dev/null
+++ b/test/fixtures/ast/define-slots02-without-ts/ast.json
@@ -0,0 +1,283 @@
+{
+ "type": "Program",
+ "start": 15,
+ "end": 42,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ },
+ "range": [
+ 15,
+ 42
+ ],
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "start": 15,
+ "end": 42,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ },
+ "range": [
+ 15,
+ 42
+ ],
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "start": 21,
+ "end": 42,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ },
+ "range": [
+ 21,
+ 42
+ ],
+ "id": {
+ "type": "Identifier",
+ "start": 21,
+ "end": 26,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ },
+ "range": [
+ 21,
+ 26
+ ],
+ "name": "slots"
+ },
+ "init": {
+ "type": "CallExpression",
+ "start": 29,
+ "end": 42,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ },
+ "range": [
+ 29,
+ 42
+ ],
+ "callee": {
+ "type": "Identifier",
+ "start": 29,
+ "end": 40,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ },
+ "range": [
+ 29,
+ 40
+ ],
+ "name": "defineSlots"
+ },
+ "arguments": [],
+ "optional": false
+ }
+ }
+ ],
+ "kind": "const"
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "range": [
+ 0,
+ 14
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 14
+ }
+ },
+ "value": ""
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots02-without-ts/parser-options.json b/test/fixtures/ast/define-slots02-without-ts/parser-options.json
new file mode 100644
index 00000000..2104ca43
--- /dev/null
+++ b/test/fixtures/ast/define-slots02-without-ts/parser-options.json
@@ -0,0 +1,3 @@
+{
+ "sourceType": "module"
+}
diff --git a/test/fixtures/ast/define-slots02-without-ts/requirements.json b/test/fixtures/ast/define-slots02-without-ts/requirements.json
new file mode 100644
index 00000000..36659b1f
--- /dev/null
+++ b/test/fixtures/ast/define-slots02-without-ts/requirements.json
@@ -0,0 +1,3 @@
+{
+ "eslint": ">=8"
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots02-without-ts/scope.json b/test/fixtures/ast/define-slots02-without-ts/scope.json
new file mode 100644
index 00000000..f6347de2
--- /dev/null
+++ b/test/fixtures/ast/define-slots02-without-ts/scope.json
@@ -0,0 +1,184 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "defineSlots",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineSlots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "slots",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "node": {
+ "type": "VariableDeclarator",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ }
+ },
+ "name": "slots"
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "from": "module",
+ "resolved": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "init": true
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "from": "module",
+ "resolved": {
+ "type": "Identifier",
+ "name": "slots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 6
+ },
+ "end": {
+ "line": 2,
+ "column": 11
+ }
+ }
+ },
+ "init": true
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineSlots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "defineSlots",
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "from": "module",
+ "init": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots02-without-ts/source.vue b/test/fixtures/ast/define-slots02-without-ts/source.vue
new file mode 100644
index 00000000..3c0ca3f3
--- /dev/null
+++ b/test/fixtures/ast/define-slots02-without-ts/source.vue
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots02-without-ts/token-ranges.json b/test/fixtures/ast/define-slots02-without-ts/token-ranges.json
new file mode 100644
index 00000000..8f66a0dc
--- /dev/null
+++ b/test/fixtures/ast/define-slots02-without-ts/token-ranges.json
@@ -0,0 +1,10 @@
+[
+ ""
+]
\ No newline at end of file
diff --git a/test/fixtures/ast/define-slots02-without-ts/tree.json b/test/fixtures/ast/define-slots02-without-ts/tree.json
new file mode 100644
index 00000000..0637a088
--- /dev/null
+++ b/test/fixtures/ast/define-slots02-without-ts/tree.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/test/fixtures/integrations/script-setup/no-undef/.eslintrc.json b/test/fixtures/integrations/script-setup/no-undef/.eslintrc.json
index f21f62ca..1ac5b661 100644
--- a/test/fixtures/integrations/script-setup/no-undef/.eslintrc.json
+++ b/test/fixtures/integrations/script-setup/no-undef/.eslintrc.json
@@ -1,5 +1,10 @@
{
"rules": {
"no-undef": "error"
+ },
+ "parserOptions": {
+ "parser": {
+ "ts": "@typescript-eslint/parser"
+ }
}
}
diff --git a/test/fixtures/integrations/script-setup/no-undef/invalid/define-options.vue b/test/fixtures/integrations/script-setup/no-undef/invalid/define-options.vue
new file mode 100644
index 00000000..65c75093
--- /dev/null
+++ b/test/fixtures/integrations/script-setup/no-undef/invalid/define-options.vue
@@ -0,0 +1,10 @@
+
diff --git a/test/fixtures/integrations/script-setup/no-undef/invalid/define-slots.vue b/test/fixtures/integrations/script-setup/no-undef/invalid/define-slots.vue
new file mode 100644
index 00000000..900e01c6
--- /dev/null
+++ b/test/fixtures/integrations/script-setup/no-undef/invalid/define-slots.vue
@@ -0,0 +1,7 @@
+
diff --git a/test/fixtures/integrations/script-setup/no-undef/valid/define-options.vue b/test/fixtures/integrations/script-setup/no-undef/valid/define-options.vue
new file mode 100644
index 00000000..39ae2bbf
--- /dev/null
+++ b/test/fixtures/integrations/script-setup/no-undef/valid/define-options.vue
@@ -0,0 +1,8 @@
+
diff --git a/test/fixtures/integrations/script-setup/no-undef/valid/define-slots-wthout-ts.vue b/test/fixtures/integrations/script-setup/no-undef/valid/define-slots-wthout-ts.vue
new file mode 100644
index 00000000..6b367c16
--- /dev/null
+++ b/test/fixtures/integrations/script-setup/no-undef/valid/define-slots-wthout-ts.vue
@@ -0,0 +1,3 @@
+
diff --git a/test/fixtures/integrations/script-setup/no-undef/valid/define-slots.vue b/test/fixtures/integrations/script-setup/no-undef/valid/define-slots.vue
new file mode 100644
index 00000000..b28db98b
--- /dev/null
+++ b/test/fixtures/integrations/script-setup/no-undef/valid/define-slots.vue
@@ -0,0 +1,5 @@
+
diff --git a/test/fixtures/integrations/script-setup/output.json b/test/fixtures/integrations/script-setup/output.json
index c8c96350..de66f4fa 100644
--- a/test/fixtures/integrations/script-setup/output.json
+++ b/test/fixtures/integrations/script-setup/output.json
@@ -9,6 +9,16 @@
}
]
},
+ {
+ "filePath": "/no-undef/invalid/define-options.vue",
+ "messages": [
+ {
+ "ruleId": "no-undef",
+ "line": 3,
+ "message": "'defineOptions' is not defined."
+ }
+ ]
+ },
{
"filePath": "/no-undef/invalid/define-props-and-emits.vue",
"messages": [
@@ -24,6 +34,16 @@
}
]
},
+ {
+ "filePath": "/no-undef/invalid/define-slots.vue",
+ "messages": [
+ {
+ "ruleId": "no-undef",
+ "line": 3,
+ "message": "'defineSlots' is not defined."
+ }
+ ]
+ },
{
"filePath": "/no-unused-vars/invalid/component-names.vue",
"messages": [