diff --git a/.changeset/modern-hats-admire.md b/.changeset/modern-hats-admire.md new file mode 100644 index 000000000..62db1223c --- /dev/null +++ b/.changeset/modern-hats-admire.md @@ -0,0 +1,8 @@ +--- +"@ui5-language-assistant/xml-views-validation": patch +"@ui5-language-assistant/fe": patch +"vscode-ui5-language-assistant": patch +"@ui5-language-assistant/vscode-ui5-language-assistant-bas-ext": patch +--- + +Avoid type casting diff --git a/packages/fe/test/services/utils.ts b/packages/fe/test/services/utils.ts index a52fa8f1d..1608f7939 100644 --- a/packages/fe/test/services/utils.ts +++ b/packages/fe/test/services/utils.ts @@ -1,9 +1,12 @@ import { AnnotationIssue, getCompletionItems } from "../../src/api"; import { CompletionItem } from "vscode-languageserver-types"; import { TestFramework } from "@ui5-language-assistant/test-framework"; -import { getContext } from "@ui5-language-assistant/context"; +import { getContext, isContext } from "@ui5-language-assistant/context"; import type { Context } from "@ui5-language-assistant/context"; -import { validateXMLView } from "@ui5-language-assistant/xml-views-validation"; +import { + UI5XMLViewIssue, + validateXMLView, +} from "@ui5-language-assistant/xml-views-validation"; import { CURSOR_ANCHOR } from "@ui5-language-assistant/test-framework"; import { XMLAttribute } from "@xml-tools/ast"; @@ -16,7 +19,9 @@ export const completionItemToSnapshot = (item: CompletionItem): string => item.sortText ? item.sortText[0] : "" }`; -export const issueToSnapshot = (item: AnnotationIssue): string => +export const issueToSnapshot = ( + item: AnnotationIssue | UI5XMLViewIssue +): string => `kind: ${item.kind}; text: ${item.message}; severity:${item.severity}; offset:${item.offsetRange.start}-${item.offsetRange.end}`; export type ViewCompletionProviderType = ( @@ -53,17 +58,18 @@ export const getViewCompletionProvider = ( content, offset ); - const context = (await getContext(documentPath)) as Context; - - result = getCompletionItems({ - ast, - context: contextAdapter ? contextAdapter(context) : context, - cst, - document, - documentSettings: settings, - textDocumentPosition, - tokenVector, - }); + const context = await getContext(documentPath); + if (isContext(context)) { + result = getCompletionItems({ + ast, + context: contextAdapter ? contextAdapter(context) : context, + cst, + document, + documentSettings: settings, + textDocumentPosition, + tokenVector, + }); + } } finally { // reversal update await framework.updateFileContent(viewFilePathSegments, "", { @@ -103,16 +109,18 @@ export const getViewValidator = ( insertAfter: "", }); const { ast } = await framework.readFile(viewFilePathSegments); - const context = (await getContext(documentPath)) as Context; - result = validateXMLView({ - validators: { - attribute: [validator], - document: [], - element: [], - }, - context: contextAdapter ? contextAdapter(context) : context, - xmlView: ast, - }) as AnnotationIssue[]; + const context = await getContext(documentPath); + if (isContext(context)) { + result = validateXMLView({ + validators: { + attribute: [validator], + document: [], + element: [], + }, + context: contextAdapter ? contextAdapter(context) : context, + xmlView: ast, + }); + } } finally { // reversal update await framework.updateFileContent(viewFilePathSegments, "", { diff --git a/packages/xml-views-validation/api.d.ts b/packages/xml-views-validation/api.d.ts index e3826ca75..4269b04af 100644 --- a/packages/xml-views-validation/api.d.ts +++ b/packages/xml-views-validation/api.d.ts @@ -3,11 +3,11 @@ import { OffsetRange } from "@ui5-language-assistant/logic-utils"; import { UI5ValidatorsConfig } from "./src/validate-xml-views"; import { Context } from "@ui5-language-assistant/context"; -export function validateXMLView(opts: { - validators: UI5ValidatorsConfig; +export function validateXMLView(opts: { + validators: UI5ValidatorsConfig; context: Context; xmlView: XMLDocument; -}): (UI5XMLViewIssue | ExternalXMLViewIssue)[]; +}): T[]; export declare const defaultValidators: UI5ValidatorsConfig; diff --git a/packages/xml-views-validation/src/api.ts b/packages/xml-views-validation/src/api.ts index 10f42e98b..78e0679a5 100644 --- a/packages/xml-views-validation/src/api.ts +++ b/packages/xml-views-validation/src/api.ts @@ -34,11 +34,11 @@ export const validators: Validators = { validateNonStableId, }; -export function validateXMLView(opts: { - validators: UI5ValidatorsConfig; +export function validateXMLView(opts: { + validators: UI5ValidatorsConfig; context: Context; xmlView: XMLDocument; -}): (UI5XMLViewIssue | ExternalXMLViewIssue)[] { +}): T[] { const validatorVisitor = new ValidatorVisitor(opts.context, opts.validators); accept(opts.xmlView, validatorVisitor); const issues = validatorVisitor.collectedIssues;