From 7cf806b23b9c7524b5f7a372c4d99b83489c485a Mon Sep 17 00:00:00 2001 From: Phaqui Date: Fri, 29 Jan 2021 03:30:53 +0100 Subject: [PATCH 1/3] Fixes #5858: Class binding name cannot be empty --- src/compiler/parse/state/tag.ts | 7 +++++++ .../samples/error-empty-classname-binding/error.json | 10 ++++++++++ .../samples/error-empty-classname-binding/input.svelte | 1 + 3 files changed, 18 insertions(+) create mode 100644 test/parser/samples/error-empty-classname-binding/error.json create mode 100644 test/parser/samples/error-empty-classname-binding/input.svelte diff --git a/src/compiler/parse/state/tag.ts b/src/compiler/parse/state/tag.ts index 696a47b649fc..c18de84bd06c 100644 --- a/src/compiler/parse/state/tag.ts +++ b/src/compiler/parse/state/tag.ts @@ -387,6 +387,13 @@ function read_attribute(parser: Parser, unique_names: Set) { }, start); } + if (type === 'Class' && directive_name === '') { + parser.error({ + code: 'invalid-class-directive-value', + message: 'Class binding name cannot be empty' + }, start + colon_index + 1); + } + if (value[0]) { if ((value as any[]).length > 1 || value[0].type === 'Text') { parser.error({ diff --git a/test/parser/samples/error-empty-classname-binding/error.json b/test/parser/samples/error-empty-classname-binding/error.json new file mode 100644 index 000000000000..69e4667f7e6d --- /dev/null +++ b/test/parser/samples/error-empty-classname-binding/error.json @@ -0,0 +1,10 @@ +{ + "code": "invalid-class-directive-value", + "message": "Class binding name cannot be empty", + "start": { + "line": 1, + "column": 10, + "character": 10 + }, + "pos": 10 +} diff --git a/test/parser/samples/error-empty-classname-binding/input.svelte b/test/parser/samples/error-empty-classname-binding/input.svelte new file mode 100644 index 000000000000..3a4e5980eea3 --- /dev/null +++ b/test/parser/samples/error-empty-classname-binding/input.svelte @@ -0,0 +1 @@ +

Hello

From 1feb9a0c9d7635e536052b7684d69ad859fe89eb Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 29 Jan 2021 10:24:54 -0500 Subject: [PATCH 2/3] fix indentation --- src/compiler/parse/state/tag.ts | 12 ++++++------ .../error-empty-classname-binding/error.json | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/compiler/parse/state/tag.ts b/src/compiler/parse/state/tag.ts index c18de84bd06c..e9c5ac0bb795 100644 --- a/src/compiler/parse/state/tag.ts +++ b/src/compiler/parse/state/tag.ts @@ -387,12 +387,12 @@ function read_attribute(parser: Parser, unique_names: Set) { }, start); } - if (type === 'Class' && directive_name === '') { - parser.error({ - code: 'invalid-class-directive-value', - message: 'Class binding name cannot be empty' - }, start + colon_index + 1); - } + if (type === 'Class' && directive_name === '') { + parser.error({ + code: 'invalid-class-directive-value', + message: 'Class binding name cannot be empty' + }, start + colon_index + 1); + } if (value[0]) { if ((value as any[]).length > 1 || value[0].type === 'Text') { diff --git a/test/parser/samples/error-empty-classname-binding/error.json b/test/parser/samples/error-empty-classname-binding/error.json index 69e4667f7e6d..64e05c112d2e 100644 --- a/test/parser/samples/error-empty-classname-binding/error.json +++ b/test/parser/samples/error-empty-classname-binding/error.json @@ -1,10 +1,10 @@ { - "code": "invalid-class-directive-value", - "message": "Class binding name cannot be empty", - "start": { - "line": 1, - "column": 10, - "character": 10 - }, - "pos": 10 + "code": "invalid-class-directive-value", + "message": "Class binding name cannot be empty", + "start": { + "line": 1, + "column": 10, + "character": 10 + }, + "pos": 10 } From 6e6014227ded2582003a377381e5ff8e335aa7e2 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 29 Jan 2021 10:28:20 -0500 Subject: [PATCH 3/3] adjust error code --- src/compiler/parse/state/tag.ts | 2 +- test/parser/samples/error-empty-classname-binding/error.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/parse/state/tag.ts b/src/compiler/parse/state/tag.ts index e9c5ac0bb795..aedffffe21a0 100644 --- a/src/compiler/parse/state/tag.ts +++ b/src/compiler/parse/state/tag.ts @@ -389,7 +389,7 @@ function read_attribute(parser: Parser, unique_names: Set) { if (type === 'Class' && directive_name === '') { parser.error({ - code: 'invalid-class-directive-value', + code: 'invalid-class-directive', message: 'Class binding name cannot be empty' }, start + colon_index + 1); } diff --git a/test/parser/samples/error-empty-classname-binding/error.json b/test/parser/samples/error-empty-classname-binding/error.json index 64e05c112d2e..edc09ff8e120 100644 --- a/test/parser/samples/error-empty-classname-binding/error.json +++ b/test/parser/samples/error-empty-classname-binding/error.json @@ -1,5 +1,5 @@ { - "code": "invalid-class-directive-value", + "code": "invalid-class-directive", "message": "Class binding name cannot be empty", "start": { "line": 1,