From 9fe28acc4736c5679dbb39007032ad668d5ef300 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:55:56 +0200 Subject: [PATCH] Fix validation of properties with Any type --- server/gx-workflow-ls-format2/src/schema/definitions.ts | 4 ++++ .../src/services/schemaValidationService.ts | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/server/gx-workflow-ls-format2/src/schema/definitions.ts b/server/gx-workflow-ls-format2/src/schema/definitions.ts index 0568f86..2b1c880 100644 --- a/server/gx-workflow-ls-format2/src/schema/definitions.ts +++ b/server/gx-workflow-ls-format2/src/schema/definitions.ts @@ -199,6 +199,10 @@ export class EnumSchemaNode implements SchemaNode { return this._schemaEnum.name; } + public matchesType(typeName: string): boolean { + return this.name === "Any" || this.symbols.includes(typeName); + } + //Override toString for debugging purposes public toString(): string { return `EnumSchemaNode: ${this.name} - ${this.symbols}`; diff --git a/server/gx-workflow-ls-format2/src/services/schemaValidationService.ts b/server/gx-workflow-ls-format2/src/services/schemaValidationService.ts index d4425fe..2dc0ba1 100644 --- a/server/gx-workflow-ls-format2/src/services/schemaValidationService.ts +++ b/server/gx-workflow-ls-format2/src/services/schemaValidationService.ts @@ -54,17 +54,20 @@ export class GxFormat2SchemaValidationService implements WorkflowValidator { } } } + private validateEnumValue( node: StringASTNode, - schemaRecord: EnumSchemaNode, + enumSchemaNode: EnumSchemaNode, range: Range, diagnostics: Diagnostic[] ): void { - if (!schemaRecord.symbols.includes(node.value)) { + if (!enumSchemaNode.matchesType(node.value)) { diagnostics.push( Diagnostic.create( range, - `The value is not a valid '${schemaRecord.name}'. Allowed values are: ${schemaRecord.symbols.join(", ")}.`, + `The value is not a valid '${enumSchemaNode.name}'. Allowed values are: ${enumSchemaNode.symbols.join( + ", " + )}.`, DiagnosticSeverity.Error ) );