diff --git a/src/compiler/compile/nodes/Element.ts b/src/compiler/compile/nodes/Element.ts index a7dd9dd8e1..76c885f618 100644 --- a/src/compiler/compile/nodes/Element.ts +++ b/src/compiler/compile/nodes/Element.ts @@ -379,7 +379,7 @@ export default class Element extends Node { } - if (/[{}]/.test(name)) { + if (/(^[0-9-.])|[\^$@%&#?!|()\[\]{}^*+~;]/.test(name)) { component.error(attribute, { code: `illegal-attribute`, message: `'${name}' is not a valid attribute name`, diff --git a/test/validator/samples/attribute-invalid-name-2/errors.json b/test/validator/samples/attribute-invalid-name-2/errors.json index 8db9779a86..9e0c437339 100644 --- a/test/validator/samples/attribute-invalid-name-2/errors.json +++ b/test/validator/samples/attribute-invalid-name-2/errors.json @@ -1,6 +1,6 @@ [{ "code": "illegal-attribute", - "message": "'a}a' is not a valid attribute name", + "message": "'3aa' is not a valid attribute name", "start": { "line": 1, "column": 3, @@ -8,8 +8,8 @@ }, "end": { "line": 1, - "column": 6, - "character": 6 + "column": 12, + "character": 12 }, "pos": 3 }] diff --git a/test/validator/samples/attribute-invalid-name-2/input.svelte b/test/validator/samples/attribute-invalid-name-2/input.svelte index 41dcea15dd..6958a1b5aa 100644 --- a/test/validator/samples/attribute-invalid-name-2/input.svelte +++ b/test/validator/samples/attribute-invalid-name-2/input.svelte @@ -1 +1 @@ -

Test

+

Test

diff --git a/test/validator/samples/attribute-invalid-name-3/errors.json b/test/validator/samples/attribute-invalid-name-3/errors.json index 02cd395e09..f583226882 100644 --- a/test/validator/samples/attribute-invalid-name-3/errors.json +++ b/test/validator/samples/attribute-invalid-name-3/errors.json @@ -1,7 +1,6 @@ -[ -{ +[{ "code": "illegal-attribute", - "message": "'a{a' is not a valid attribute name", + "message": "'a*a' is not a valid attribute name", "start": { "line": 1, "column": 3, diff --git a/test/validator/samples/attribute-invalid-name-3/input.svelte b/test/validator/samples/attribute-invalid-name-3/input.svelte index cbf7b73c78..87c2df979a 100644 --- a/test/validator/samples/attribute-invalid-name-3/input.svelte +++ b/test/validator/samples/attribute-invalid-name-3/input.svelte @@ -1 +1 @@ -

Test

+

Test

diff --git a/test/validator/samples/attribute-invalid-name-4/errors.json b/test/validator/samples/attribute-invalid-name-4/errors.json index b7b5e8ef10..a8959cebf3 100644 --- a/test/validator/samples/attribute-invalid-name-4/errors.json +++ b/test/validator/samples/attribute-invalid-name-4/errors.json @@ -1,6 +1,6 @@ [{ "code": "illegal-attribute", - "message": "'}a' is not a valid attribute name", + "message": "'-a' is not a valid attribute name", "start": { "line": 1, "column": 3, diff --git a/test/validator/samples/attribute-invalid-name-4/input.svelte b/test/validator/samples/attribute-invalid-name-4/input.svelte index 95381979b2..92f68449b9 100644 --- a/test/validator/samples/attribute-invalid-name-4/input.svelte +++ b/test/validator/samples/attribute-invalid-name-4/input.svelte @@ -1 +1 @@ -

Test

+

Test

diff --git a/test/validator/samples/attribute-invalid-name-5/errors.json b/test/validator/samples/attribute-invalid-name-5/errors.json index 586ec5c2e2..b1e3acc5ef 100644 --- a/test/validator/samples/attribute-invalid-name-5/errors.json +++ b/test/validator/samples/attribute-invalid-name-5/errors.json @@ -1,6 +1,6 @@ [{ "code": "illegal-attribute", - "message": "'a}' is not a valid attribute name", + "message": "'a;' is not a valid attribute name", "start": { "line": 1, "column": 3, @@ -8,8 +8,8 @@ }, "end": { "line": 1, - "column": 5, - "character": 5 + "column": 11, + "character": 11 }, "pos": 3 }] diff --git a/test/validator/samples/attribute-invalid-name-5/input.svelte b/test/validator/samples/attribute-invalid-name-5/input.svelte index e36031f52a..3a7dd05137 100644 --- a/test/validator/samples/attribute-invalid-name-5/input.svelte +++ b/test/validator/samples/attribute-invalid-name-5/input.svelte @@ -1 +1 @@ -

Test

+

Test