No error
{
"resource": "retracted:/test-vetur/componentA.vue",
"owner": "_generated_diagnostic_collection_name_#0",
"code": "2304",
"severity": 8,
"message": "Cannot find name 'slotVariable'.",
"source": "Vetur",
}
Error with detecting slot's variables with when:
See ComponentA in the screenshot below

ComponentA<template>
<Parent
v-slot="{ slotVariable }"
>
{{ slotVariable }}
</Parent>
</template>
import __vlsComponent from "./ComponentA.vue";
import {
__vlsRenderHelper,
__vlsComponentHelper,
__vlsIterationHelper
} from "vue-editor-bridge";
__vlsRenderHelper(__vlsComponent, function() {
() => __vlsComponentHelper(this, "parent", {
props: {},
on: {},
directives: []
}, [slotVariable]);
});
ComponentB<template>
<Parent v-slot="{ slotVariable }">
{{ slotVariable }}
</Parent>
</template>
import __vlsComponent from "./ComponentA.vue";
import {
__vlsRenderHelper,
__vlsComponentHelper,
__vlsIterationHelper
} from "vue-editor-bridge";
__vlsRenderHelper(__vlsComponent, function() {
({
slotVariable
}) => __vlsComponentHelper(this, "parent", {
props: {},
on: {},
directives: []
}, [slotVariable]);
});
ComponentC<template>
<Parent>
<template v-slot="{ slotVariable }">
{{ slotVariable }}
<template>
</Parent>
</template>
I found out that this issue only appear when the file is using CRLF.
And the error occurs in here:
https://github.com/vuejs/vetur/blob/271dbfcd9b1be62f847e6edf0041ee0775ee2f91/server/src/services/typescriptService/transformTemplate.ts#L588-L592
Using example for ComponentA
{
start: 36,
end: 52,
code: "<template>\r\n <Parent\r\n v-slot=\"{ slotVariable }\"\r\n >\r\n {{ slotVariable }}\r\n </Parent>\r\n \n</template>",
paramsStr: " slotVariable }\""
}
{
start: 33,
end: 49,
code: "<template>\n <Parent\n v-slot=\"{ slotVariable }\"\n >\n {{ slotVariable }}\n </Parent>\n \n</template>",
paramsStr: "{ slotVariable }"
}
I think this should be related to vue-eslint-parser
I guess we will need to wait for https://github.com/mysticatea/vue-eslint-parser/pull/74
Fixed in https://github.com/vuejs/vetur/commit/062d747d0c7584e38e4df2f3570d96638cfcbbe0.
But it is not released.