diff --git a/package-lock.json b/package-lock.json index 82ea06f559..071f56418a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "3.0.0-alpha1", + "version": "3.0.0-alpha3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/compile/nodes/Element.ts b/src/compile/nodes/Element.ts index 391194d004..b2405ce8a9 100644 --- a/src/compile/nodes/Element.ts +++ b/src/compile/nodes/Element.ts @@ -551,7 +551,7 @@ export default class Element extends Node { message: `'${binding.name}' is not a valid binding on void elements like <${this.name}>. Use a wrapper element instead` }); } - } else { + } else if (name !== 'this') { component.error(binding, { code: `invalid-binding`, message: `'${binding.name}' is not a valid binding` diff --git a/src/compile/render-dom/wrappers/Element/Binding.ts b/src/compile/render-dom/wrappers/Element/Binding.ts index 318bf8ffe6..6b2f37cfb1 100644 --- a/src/compile/render-dom/wrappers/Element/Binding.ts +++ b/src/compile/render-dom/wrappers/Element/Binding.ts @@ -178,6 +178,10 @@ function getDomUpdater( return null; } + if (binding.node.name === 'this') { + return null; + } + if (node.name === 'select') { return node.getStaticAttributeValue('multiple') === true ? `@selectOptions(${element.var}, ${snippet})` : @@ -259,6 +263,10 @@ function getValueFromDom( const { node } = element; const { name } = binding.node; + if (name === 'this') { + return `$$node`; + } + // + {/if} \ No newline at end of file diff --git a/test/runtime/samples/await-then-catch-event/main.html b/test/runtime/samples/await-then-catch-event/main.html index 7ed2719e7b..087affb1ad 100644 --- a/test/runtime/samples/await-then-catch-event/main.html +++ b/test/runtime/samples/await-then-catch-event/main.html @@ -7,7 +7,7 @@ {#await thePromise}

loading...

{:then theValue} - + {:catch theError}

oh no! {theError.message}

{/await} \ No newline at end of file diff --git a/test/runtime/samples/before-render-chain/main.html b/test/runtime/samples/before-render-chain/main.html index 8156f7e8a5..e194fe786a 100644 --- a/test/runtime/samples/before-render-chain/main.html +++ b/test/runtime/samples/before-render-chain/main.html @@ -4,4 +4,4 @@ import List from './List.html'; - + diff --git a/test/runtime/samples/binding-select-in-yield/main.html b/test/runtime/samples/binding-select-in-yield/main.html index 38304fba80..cb1499e1c7 100644 --- a/test/runtime/samples/binding-select-in-yield/main.html +++ b/test/runtime/samples/binding-select-in-yield/main.html @@ -6,7 +6,7 @@ export let letters = ['a', 'b', 'c']; - + {letter} + {:else} {component.name} {/if} diff --git a/test/runtime/samples/dynamic-component-ref/main.html b/test/runtime/samples/dynamic-component-ref/main.html index cd7b34ed54..fe9c52cab6 100644 --- a/test/runtime/samples/dynamic-component-ref/main.html +++ b/test/runtime/samples/dynamic-component-ref/main.html @@ -4,4 +4,4 @@ export let test; - + diff --git a/test/runtime/samples/event-handler-removal/main.html b/test/runtime/samples/event-handler-removal/main.html index 4589640ec6..29c7e32567 100644 --- a/test/runtime/samples/event-handler-removal/main.html +++ b/test/runtime/samples/event-handler-removal/main.html @@ -5,5 +5,5 @@ {#if visible} - + {/if} diff --git a/test/runtime/samples/immutable-nested/main.html b/test/runtime/samples/immutable-nested/main.html index f036cbdfc3..aa8efa9ebc 100644 --- a/test/runtime/samples/immutable-nested/main.html +++ b/test/runtime/samples/immutable-nested/main.html @@ -5,5 +5,5 @@
- +
diff --git a/test/runtime/samples/nested-transition-detach-if-false/main.html b/test/runtime/samples/nested-transition-detach-if-false/main.html index 41429fca38..d52c56c5cf 100644 --- a/test/runtime/samples/nested-transition-detach-if-false/main.html +++ b/test/runtime/samples/nested-transition-detach-if-false/main.html @@ -4,4 +4,4 @@ import Folder from './Folder.html'; - \ No newline at end of file + \ No newline at end of file diff --git a/test/runtime/samples/ondestroy-before-cleanup/Top.html b/test/runtime/samples/ondestroy-before-cleanup/Top.html index a0a3549ef4..273b89d836 100644 --- a/test/runtime/samples/ondestroy-before-cleanup/Top.html +++ b/test/runtime/samples/ondestroy-before-cleanup/Top.html @@ -9,4 +9,4 @@ }); -
+
diff --git a/test/runtime/samples/ondestroy-before-cleanup/main.html b/test/runtime/samples/ondestroy-before-cleanup/main.html index 15da7a5cba..34053dd613 100644 --- a/test/runtime/samples/ondestroy-before-cleanup/main.html +++ b/test/runtime/samples/ondestroy-before-cleanup/main.html @@ -6,5 +6,5 @@ {#if visible} - + {/if} \ No newline at end of file diff --git a/test/runtime/samples/onmount-fires-when-ready-nested/Widget.html b/test/runtime/samples/onmount-fires-when-ready-nested/Widget.html index 80c2dad6c5..a935dcf337 100644 --- a/test/runtime/samples/onmount-fires-when-ready-nested/Widget.html +++ b/test/runtime/samples/onmount-fires-when-ready-nested/Widget.html @@ -10,4 +10,4 @@ }); -

{inDocument}

+

{inDocument}

diff --git a/test/runtime/samples/onmount-fires-when-ready/Widget.html b/test/runtime/samples/onmount-fires-when-ready/Widget.html index 80c2dad6c5..a935dcf337 100644 --- a/test/runtime/samples/onmount-fires-when-ready/Widget.html +++ b/test/runtime/samples/onmount-fires-when-ready/Widget.html @@ -10,4 +10,4 @@ }); -

{inDocument}

+

{inDocument}

diff --git a/test/runtime/samples/refs-no-innerhtml/main.html b/test/runtime/samples/refs-no-innerhtml/main.html index e2f7740f2b..014fac9221 100644 --- a/test/runtime/samples/refs-no-innerhtml/main.html +++ b/test/runtime/samples/refs-no-innerhtml/main.html @@ -2,4 +2,4 @@ export let foo; -
+
diff --git a/test/runtime/samples/refs-unset/main.html b/test/runtime/samples/refs-unset/main.html index 6dc6d654da..9345408945 100644 --- a/test/runtime/samples/refs-unset/main.html +++ b/test/runtime/samples/refs-unset/main.html @@ -4,7 +4,7 @@ {#if x} - + {:else} - + {/if} diff --git a/test/runtime/samples/refs/main.html b/test/runtime/samples/refs/main.html index 68b013377d..9f71ec0a6b 100644 --- a/test/runtime/samples/refs/main.html +++ b/test/runtime/samples/refs/main.html @@ -2,4 +2,4 @@ export let foo; - + diff --git a/test/runtime/samples/transition-js-if-block-outro-timeout/main.html b/test/runtime/samples/transition-js-if-block-outro-timeout/main.html index 2e819c79ab..8b77998a94 100644 --- a/test/runtime/samples/transition-js-if-block-outro-timeout/main.html +++ b/test/runtime/samples/transition-js-if-block-outro-timeout/main.html @@ -13,5 +13,5 @@ {#if visible} -
yes
+
yes
{/if} \ No newline at end of file diff --git a/test/runtime/samples/transition-js-if-else-block-dynamic-outro/main.html b/test/runtime/samples/transition-js-if-else-block-dynamic-outro/main.html index 41809bd664..3fba1c9830 100644 --- a/test/runtime/samples/transition-js-if-else-block-dynamic-outro/main.html +++ b/test/runtime/samples/transition-js-if-else-block-dynamic-outro/main.html @@ -16,7 +16,7 @@ {#if x} -
{z}
+
{z}
{:else} -
{z}
+
{z}
{/if} \ No newline at end of file diff --git a/test/runtime/samples/transition-js-if-else-block-intro/main.html b/test/runtime/samples/transition-js-if-else-block-intro/main.html index 117f2ba8ee..d25cbb0412 100644 --- a/test/runtime/samples/transition-js-if-else-block-intro/main.html +++ b/test/runtime/samples/transition-js-if-else-block-intro/main.html @@ -15,7 +15,7 @@ {#if x} -
yes
+
yes
{:else} -
no
+
no
{/if} \ No newline at end of file diff --git a/test/runtime/samples/transition-js-if-else-block-outro/main.html b/test/runtime/samples/transition-js-if-else-block-outro/main.html index ba5c762146..c0c20e3c87 100644 --- a/test/runtime/samples/transition-js-if-else-block-outro/main.html +++ b/test/runtime/samples/transition-js-if-else-block-outro/main.html @@ -15,7 +15,7 @@ {#if x} -
yes
+
yes
{:else} -
no
+
no
{/if} \ No newline at end of file diff --git a/test/runtime/samples/transition-js-if-elseif-block-outro/main.html b/test/runtime/samples/transition-js-if-elseif-block-outro/main.html index ca4e4301da..462e073bd7 100644 --- a/test/runtime/samples/transition-js-if-elseif-block-outro/main.html +++ b/test/runtime/samples/transition-js-if-elseif-block-outro/main.html @@ -16,7 +16,7 @@ {#if x} -
yes
+
yes
{:elseif y} -
no
+
no
{/if} \ No newline at end of file diff --git a/test/server-side-rendering/samples/component-refs-and-attributes/main.html b/test/server-side-rendering/samples/component-refs-and-attributes/main.html index 86b3ddf1a9..8192bdf402 100644 --- a/test/server-side-rendering/samples/component-refs-and-attributes/main.html +++ b/test/server-side-rendering/samples/component-refs-and-attributes/main.html @@ -6,4 +6,4 @@ export let foo = 42; -
+
diff --git a/test/server-side-rendering/samples/component-refs/main.html b/test/server-side-rendering/samples/component-refs/main.html index 55d2abc4cd..96b3d15de4 100644 --- a/test/server-side-rendering/samples/component-refs/main.html +++ b/test/server-side-rendering/samples/component-refs/main.html @@ -4,4 +4,4 @@ import Widget from './Widget.html'; -
+
diff --git a/test/validator/samples/reference-must-be-valid-name/errors.json b/test/validator/samples/reference-must-be-valid-name/errors.json deleted file mode 100644 index eb1c92d6d2..0000000000 --- a/test/validator/samples/reference-must-be-valid-name/errors.json +++ /dev/null @@ -1,15 +0,0 @@ -[{ - "message": "Reference name 'foo-bar' is invalid — must be a valid identifier such as foo_bar", - "start": { - "line": 1, - "column": 5, - "character": 5 - }, - "end": { - "line": 1, - "column": 16, - "character": 16 - }, - "pos": 5, - "code": "invalid-reference-name" -}] diff --git a/test/validator/samples/reference-must-be-valid-name/input.html b/test/validator/samples/reference-must-be-valid-name/input.html deleted file mode 100644 index a995bd8e6e..0000000000 --- a/test/validator/samples/reference-must-be-valid-name/input.html +++ /dev/null @@ -1,8 +0,0 @@ -
-
- -