Skip to content

Commit 337182c

Browse files
committed
refactor(language-core): pass error, source to verification.shouldReport
1 parent 925732e commit 337182c

File tree

6 files changed

+21
-17
lines changed

6 files changed

+21
-17
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@
316316
- **language-service** fix caching of semantic diagnostics [#141](https://github.com/volarjs/volar.js/issues/141)
317317
- **test-utils:** invalidate cache when calling `openInMemoryDocument()`
318318
- **monaco:** `insertText` and `range` properties of completion item not converted correctly
319-
- **typescript:**: ts plugin incorrectly resolve module name
319+
- **typescript:** ts plugin incorrectly resolve module name
320320

321321
## [2.0.4](https://github.com/volarjs/volar.js/compare/v2.0.3...v2.0.4) (2024-02-13)
322322

packages/language-core/lib/editorFeatures.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ export function isSignatureHelpEnabled(info: CodeInformation): boolean {
110110

111111
// should...
112112

113-
export function shouldReportDiagnostics(info: CodeInformation): boolean {
113+
export function shouldReportDiagnostics(info: CodeInformation, source: string | undefined, code: string | number | undefined): boolean {
114114
return typeof info.verification === 'object'
115-
? info.verification.shouldReport?.() ?? true
115+
? info.verification.shouldReport?.(source, code) ?? true
116116
: !!info.verification;
117117
}
118118

packages/language-core/lib/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export interface VirtualCode {
5959
export interface CodeInformation {
6060
/** virtual code is expected to support verification */
6161
verification?: boolean | {
62-
shouldReport?(): boolean;
62+
shouldReport?(source: string | undefined, code: string | number | undefined): boolean;
6363
};
6464
/** virtual code is expected to support assisted completion */
6565
completion?: boolean | {

packages/language-service/lib/features/provideDiagnostics.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { isDiagnosticsEnabled, shouldReportDiagnostics, SourceScript, VirtualCode, type CodeInformation } from '@volar/language-core';
1+
import { isDiagnosticsEnabled, shouldReportDiagnostics, SourceScript, VirtualCode } from '@volar/language-core';
22
import type * as ts from 'typescript';
33
import type * as vscode from 'vscode-languageserver-protocol';
44
import type { TextDocument } from 'vscode-languageserver-textdocument';
@@ -189,7 +189,7 @@ export function register(context: LanguageServiceContext) {
189189
},
190190
(errors, map) => {
191191
return errors
192-
.map(error => transformDiagnostic(context, error, map, shouldReportDiagnostics))
192+
.map(error => transformDiagnostic(context, error, map))
193193
.filter(error => !!error);
194194
},
195195
arr => dedupe.withDiagnostics(arr.flat())
@@ -205,14 +205,13 @@ export function register(context: LanguageServiceContext) {
205205
export function transformDiagnostic(
206206
context: LanguageServiceContext,
207207
error: vscode.Diagnostic,
208-
docs: DocumentsAndMap | undefined,
209-
filter: (data: CodeInformation) => boolean
208+
docs: DocumentsAndMap | undefined
210209
) {
211210
// clone it to avoid modify cache
212211
let _error: vscode.Diagnostic = { ...error };
213212

214213
if (docs) {
215-
const range = getSourceRange(docs, error.range, filter);
214+
const range = getSourceRange(docs, error.range, data => shouldReportDiagnostics(data, error.source, error.code));
216215
if (!range) {
217216
return;
218217
}
@@ -238,7 +237,7 @@ export function transformDiagnostic(
238237
for (const [sourceScript, map] of context.language.maps.forEach(virtualCode)) {
239238
const sourceDocument = context.documents.get(sourceScript.id, sourceScript.languageId, sourceScript.snapshot);
240239
const docs: DocumentsAndMap = [sourceDocument, embeddedDocument, map];
241-
const range = getSourceRange(docs, info.location.range, filter);
240+
const range = getSourceRange(docs, info.location.range, data => shouldReportDiagnostics(data, undefined, undefined));
242241
if (range) {
243242
relatedInfos.push({
244243
location: {

packages/language-service/lib/features/provideWorkspaceDiagnostics.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { shouldReportDiagnostics } from '@volar/language-core';
21
import type * as vscode from 'vscode-languageserver-protocol';
32
import { URI } from 'vscode-uri';
43
import type { LanguageServiceContext } from '../types';
@@ -53,7 +52,7 @@ export function register(context: LanguageServiceContext) {
5352
return {
5453
...item,
5554
items: item.items
56-
.map(error => transformDiagnostic(context, error, docs, shouldReportDiagnostics))
55+
.map(error => transformDiagnostic(context, error, docs))
5756
.filter(error => !!error)
5857
};
5958
}
@@ -65,7 +64,7 @@ export function register(context: LanguageServiceContext) {
6564
return {
6665
...item,
6766
items: item.items
68-
.map(error => transformDiagnostic(context, error, undefined, shouldReportDiagnostics))
67+
.map(error => transformDiagnostic(context, error, undefined))
6968
.filter(error => !!error)
7069
};
7170
}

packages/typescript/lib/node/transform.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,16 @@ export function transformDiagnostic<T extends ts.Diagnostic>(
4646
) {
4747
const [serviceScript] = getServiceScript(language, diagnostic.file.fileName);
4848
if (serviceScript) {
49-
const [sourceSpanFileName, sourceSpan] = transformTextSpan(undefined, language, serviceScript, {
50-
start: diagnostic.start,
51-
length: diagnostic.length
52-
}, shouldReportDiagnostics) ?? [];
49+
const [sourceSpanFileName, sourceSpan] = transformTextSpan(
50+
undefined,
51+
language,
52+
serviceScript,
53+
{
54+
start: diagnostic.start,
55+
length: diagnostic.length
56+
},
57+
data => shouldReportDiagnostics(data, String(diagnostic.source), String(diagnostic.code))
58+
) ?? [];
5359
const actualDiagnosticFile = sourceSpanFileName
5460
? diagnostic.file.fileName === sourceSpanFileName
5561
? diagnostic.file

0 commit comments

Comments
 (0)