Skip to content

Commit ea3a954

Browse files
committed
refactor(language-core): remove text range from component options
1 parent 7a75463 commit ea3a954

File tree

2 files changed

+13
-17
lines changed

2 files changed

+13
-17
lines changed

packages/language-core/lib/codegen/script/index.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ function* generateScript(
4848
yield* generateScriptSetupImports(options.sfc.scriptSetup, options.scriptSetupRanges);
4949
}
5050
if (options.sfc.script && options.scriptRanges) {
51-
const exportDefault = options.scriptRanges.componentOptions ?? options.scriptRanges.exportDefault;
51+
const { exportDefault, componentOptions } = options.scriptRanges;
5252
if (options.sfc.scriptSetup && options.scriptSetupRanges) {
5353
if (exportDefault) {
5454
yield generateSfcBlockSection(options.sfc.script, 0, exportDefault.start, codeFeatures.all);
@@ -60,16 +60,18 @@ function* generateScript(
6060
}
6161
}
6262
else if (exportDefault) {
63+
const { expression } = componentOptions ?? exportDefault;
64+
6365
let wrapLeft: string | undefined;
6466
let wrapRight: string | undefined;
6567
if (
66-
options.sfc.script.content[exportDefault.expression.start] === '{'
68+
options.sfc.script.content[expression.start] === '{'
6769
&& options.vueCompilerOptions.optionsWrapper.length
6870
) {
6971
[wrapLeft, wrapRight] = options.vueCompilerOptions.optionsWrapper;
7072
ctx.inlayHints.push({
7173
blockName: options.sfc.script.name,
72-
offset: exportDefault.expression.start,
74+
offset: expression.start,
7375
setting: 'vue.inlayHints.optionsWrapper',
7476
label: wrapLeft || '[Missing optionsWrapper[0]]',
7577
tooltip: [
@@ -78,7 +80,7 @@ function* generateScript(
7880
].join('\n\n'),
7981
}, {
8082
blockName: options.sfc.script.name,
81-
offset: exportDefault.expression.end,
83+
offset: expression.end,
8284
setting: 'vue.inlayHints.optionsWrapper',
8385
label: wrapRight || '[Missing optionsWrapper[1]]',
8486
});
@@ -89,12 +91,7 @@ function* generateScript(
8991
if (wrapLeft) {
9092
yield wrapLeft;
9193
}
92-
yield generateSfcBlockSection(
93-
options.sfc.script,
94-
exportDefault.expression.start,
95-
exportDefault.expression.end,
96-
codeFeatures.all,
97-
);
94+
yield generateSfcBlockSection(options.sfc.script, expression.start, expression.end, codeFeatures.all);
9895
if (wrapRight) {
9996
yield wrapRight;
10097
}
@@ -149,7 +146,7 @@ export function* generateConstExport(
149146
if (options.sfc.script) {
150147
yield* generatePartiallyEnding(
151148
options.sfc.script.name,
152-
options.scriptRanges?.componentOptions?.start ?? options.sfc.script.content.length,
149+
options.scriptRanges?.exportDefault?.start ?? options.sfc.script.content.length,
153150
'#3632/script.vue',
154151
);
155152
}

packages/language-core/lib/parsers/scriptRanges.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.Sourc
1212
}
1313
| undefined;
1414
let componentOptions:
15-
| TextRange & {
15+
| {
1616
expression: TextRange;
1717
args: TextRange;
1818
argsNode: ts.ObjectLiteralExpression;
@@ -32,6 +32,10 @@ export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.Sourc
3232
..._getStartEnd(raw),
3333
expression: _getStartEnd(raw.expression),
3434
};
35+
const comment = getClosestMultiLineCommentRange(ts, raw, [], ast);
36+
if (comment) {
37+
exportDefault.start = comment.start;
38+
}
3539

3640
let node: ts.AsExpression | ts.ExportAssignment | ts.ParenthesizedExpression = raw;
3741
while (isAsExpression(node.expression) || ts.isParenthesizedExpression(node.expression)) { // fix https://github.com/vuejs/language-tools/issues/1882
@@ -71,7 +75,6 @@ export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.Sourc
7175
}
7276
});
7377
componentOptions = {
74-
..._getStartEnd(raw),
7578
expression: _getStartEnd(node.expression),
7679
args: _getStartEnd(obj),
7780
argsNode: obj,
@@ -81,10 +84,6 @@ export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.Sourc
8184
name: nameOptionNode ? _getStartEnd(nameOptionNode) : undefined,
8285
inheritAttrs: inheritAttrsOption,
8386
};
84-
const comment = getClosestMultiLineCommentRange(ts, raw, [], ast);
85-
if (comment) {
86-
componentOptions.start = comment.start;
87-
}
8887
}
8988
}
9089
});

0 commit comments

Comments
 (0)