From a1f81c34a8e19907d0fee9dd4a3f7c4d68d63dd7 Mon Sep 17 00:00:00 2001 From: NeunEinser Date: Mon, 20 May 2024 22:15:26 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20message=20reporting=20brea?= =?UTF-8?q?king=20on=20empty=20string=20(#1155)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __snapshots__/packages/core/test-out/parser/long.spec.js | 8 ++++---- packages/core/src/service/ErrorReporter.ts | 3 +++ packages/locales/src/index.ts | 2 +- packages/locales/src/locales/en.json | 2 ++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/__snapshots__/packages/core/test-out/parser/long.spec.js b/__snapshots__/packages/core/test-out/parser/long.spec.js index e0a091e86..2230865ac 100644 --- a/__snapshots__/packages/core/test-out/parser/long.spec.js +++ b/__snapshots__/packages/core/test-out/parser/long.spec.js @@ -34,7 +34,7 @@ exports['long() long() long() Parse "+" 1'] = { "start": 0, "end": 1 }, - "message": "", + "message": "Illegal long numeral that doesn't follow /^[+-]?(?:0|[1-9][0-9]*)$/", "severity": 3 } ] @@ -91,7 +91,7 @@ exports['long() long() long() Parse "0123" 1'] = { "start": 0, "end": 4 }, - "message": "", + "message": "Illegal long numeral that doesn't follow /^[+-]?(?:0|[1-9][0-9]*)$/", "severity": 3 } ] @@ -204,7 +204,7 @@ exports['long() long(min, max, onOutOfRange) long(1, undefined, false) Parse "0" "start": 0, "end": 1 }, - "message": "Expected ", + "message": "Expected a long between 1 and +∞", "severity": 3 } ] @@ -273,7 +273,7 @@ exports['long() long(min, max, onOutOfRange) long(undefined, 6, false) Parse "9" "start": 0, "end": 1 }, - "message": "Expected ", + "message": "Expected a long between -∞ and 6", "severity": 3 } ] diff --git a/packages/core/src/service/ErrorReporter.ts b/packages/core/src/service/ErrorReporter.ts index 6841ed323..206ec8460 100644 --- a/packages/core/src/service/ErrorReporter.ts +++ b/packages/core/src/service/ErrorReporter.ts @@ -16,6 +16,9 @@ export class ErrorReporter { severity = ErrorSeverity.Error, info?: LanguageErrorInfo, ): void { + if (message.trim() === '') { + throw new Error('Tried to report an error with no message') + } this.errors.push( LanguageError.create(message, Range.get(range), severity, info), ) diff --git a/packages/locales/src/index.ts b/packages/locales/src/index.ts index 997c1ac2b..75e4311f6 100644 --- a/packages/locales/src/index.ts +++ b/packages/locales/src/index.ts @@ -29,7 +29,7 @@ type Parameter = export function localize(key: string, ...params: Parameter[]): string { const value: string | undefined = Locales[language][key] ?? Locales.en[key] - return _resolveLocalePlaceholders(value, params) ?? '' + return _resolveLocalePlaceholders(value, params) ?? key } export function localeQuote(content: string) { diff --git a/packages/locales/src/locales/en.json b/packages/locales/src/locales/en.json index 8742873c5..bed4277cf 100644 --- a/packages/locales/src/locales/en.json +++ b/packages/locales/src/locales/en.json @@ -65,6 +65,7 @@ "linter-config-validator.name-convention.type": "Expects a string that contains a regular expression describing the name", "linter-config-validator.wrapper": "%0%. See [the documentation](%1) for more information", "long": "a long", + "long.between": "a long between %0% and %1%", "mcfunction.checker.command.data-modify-unapplicable-operation": "Operation %0% can only be used on %1%; the target path has type %2% instead", "mcfunction.completer.block.states.default-value": "Default: %0%", "mcfunction.parser.entity-selector.arguments.not-applicable": "%0% is not applicable here", @@ -153,6 +154,7 @@ "parser.integer.illegal": "Illegal integer that doesn't follow %0%", "parser.list.value": "a value", "parser.list.trailing-sep": "Trailing separation", + "parser.long.illegal": "Illegal long numeral that doesn't follow %0%", "parser.record.key": "a key", "parser.record.trailing-end": "Trailing separation", "parser.record.unexpected-char": "Unexpected character %0%",