diff --git a/CHANGELOG.md b/CHANGELOG.md
index e357e58acd..e39b8b4972 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,9 +7,12 @@
* Allow exiting a reactive block early with `break $` ([#2828](https://github.com/sveltejs/svelte/issues/2828))
* Check attributes have changed before setting them to avoid image flicker ([#3579](https://github.com/sveltejs/svelte/pull/3579))
* Fix generating malformed code for `{@debug}` tags with no dependencies ([#3588](https://github.com/sveltejs/svelte/issue/3588))
+* Fix generated code in specific case involving compound ifs and child components ([#3595](https://github.com/sveltejs/svelte/issue/3595))
+* Fix `bind:this` binding to a store ([#3591](https://github.com/sveltejs/svelte/issue/3591))
* Use safer `HTMLElement` check before extending class ([#3608](https://github.com/sveltejs/svelte/issue/3608))
* Add `location` as a known global ([#3619](https://github.com/sveltejs/svelte/pull/3619))
* Support `{#await}` with `{:catch}` but no `{:then}` ([#3623](https://github.com/sveltejs/svelte/issues/3623))
+* Clean up dead code emitted for ``s ([#3631](https://github.com/sveltejs/svelte/issues/3631))
* Fix tracking of dependencies of compound assignments in reactive statements ([#3634](https://github.com/sveltejs/svelte/issues/3634))
* Flush changes in newly attached block when using `{#await}` ([#3660](https://github.com/sveltejs/svelte/issues/3660))
* Throw exception immediately when calling `createEventDispatcher()` after component instantiation ([#3667](https://github.com/sveltejs/svelte/pull/3667))
diff --git a/package-lock.json b/package-lock.json
index 97fa374f9d..1ca8b7cdb5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "svelte",
- "version": "3.12.1",
+ "version": "3.13.0-alpha.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -167,9 +167,9 @@
"dev": true
},
"acorn": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz",
- "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
+ "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
"dev": true
},
"acorn-globals": {
@@ -490,14 +490,14 @@
"dev": true
},
"code-red": {
- "version": "0.0.17",
- "resolved": "https://registry.npmjs.org/code-red/-/code-red-0.0.17.tgz",
- "integrity": "sha512-RJJ48sXYOqyd0J4QelF4dRdYb+4DaLV/jHs4mNoxOdLroUGB840cMc9pMtEAbGKjFFzoTKREypFzqphBD8knMg==",
+ "version": "0.0.18",
+ "resolved": "https://registry.npmjs.org/code-red/-/code-red-0.0.18.tgz",
+ "integrity": "sha512-g7W6RwRqBbQTtMaUqrNWDyyl2GK0Uulk/uZPzGdgTXpOGX/LA8bW67EKQLdQgpYfd6APhZVwoX2lrL7mnJOWkA==",
"dev": true,
"requires": {
- "acorn": "^7.0.0",
- "is-reference": "^1.1.3",
- "periscopic": "^1.0.1",
+ "acorn": "^7.1.0",
+ "is-reference": "^1.1.4",
+ "periscopic": "^1.0.2",
"sourcemap-codec": "^1.4.6"
}
},
@@ -1147,14 +1147,6 @@
"acorn": "^7.0.0",
"acorn-jsx": "^5.0.2",
"eslint-visitor-keys": "^1.1.0"
- },
- "dependencies": {
- "acorn": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz",
- "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==",
- "dev": true
- }
}
},
"esprima": {
@@ -1768,9 +1760,9 @@
"dev": true
},
"is-reference": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.3.tgz",
- "integrity": "sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
+ "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
"dev": true,
"requires": {
"@types/estree": "0.0.39"
@@ -2727,17 +2719,6 @@
"dev": true,
"requires": {
"is-reference": "^1.1.4"
- },
- "dependencies": {
- "is-reference": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
- "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
- "dev": true,
- "requires": {
- "@types/estree": "0.0.39"
- }
- }
}
},
"pify": {
@@ -3646,14 +3627,6 @@
"@types/istanbul-lib-coverage": "^2.0.1",
"convert-source-map": "^1.6.0",
"source-map": "^0.7.3"
- },
- "dependencies": {
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- }
}
},
"validate-npm-package-license": {
diff --git a/package.json b/package.json
index c4f1269139..950c44d965 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "svelte",
- "version": "3.13.0-alpha.0",
+ "version": "3.13.0-alpha.1",
"description": "Cybernetically enhanced web apps",
"module": "index.mjs",
"main": "index",
@@ -60,17 +60,17 @@
"@types/node": "^8.10.53",
"@typescript-eslint/eslint-plugin": "^1.13.0",
"@typescript-eslint/parser": "^2.1.0",
- "acorn": "^7.0.0",
+ "acorn": "^7.1.0",
"agadoo": "^1.1.0",
"c8": "^5.0.1",
- "code-red": "0.0.17",
+ "code-red": "0.0.18",
"codecov": "^3.5.0",
"css-tree": "1.0.0-alpha22",
"eslint": "^6.3.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-svelte3": "^2.7.3",
"estree-walker": "^0.8.1",
- "is-reference": "^1.1.3",
+ "is-reference": "^1.1.4",
"jsdom": "^15.1.1",
"kleur": "^3.0.3",
"locate-character": "^2.0.5",
diff --git a/site/content/docs/03-run-time.md b/site/content/docs/03-run-time.md
index 551945eade..fd709dd9d5 100644
--- a/site/content/docs/03-run-time.md
+++ b/site/content/docs/03-run-time.md
@@ -1019,8 +1019,12 @@ Unlike client-side components, server-side components don't have a lifespan afte
A server-side component exposes a `render` method that can be called with optional props. It returns an object with `head`, `html`, and `css` properties, where `head` contains the contents of any `` elements encountered.
+You can import a Svelte component directly into Node using [`svelte/register`](docs#svelte_register).
+
```js
-const App = require('./App.svelte');
+require('svelte/register');
+
+const App = require('./App.svelte').default;
const { head, html, css } = App.render({
answer: 42
diff --git a/site/src/routes/_components/WhosUsingSvelte.svelte b/site/src/routes/_components/WhosUsingSvelte.svelte
index fe9a2fcc9d..2a944fe289 100644
--- a/site/src/routes/_components/WhosUsingSvelte.svelte
+++ b/site/src/routes/_components/WhosUsingSvelte.svelte
@@ -55,6 +55,7 @@
+
diff --git a/site/static/organisations/entur.svg b/site/static/organisations/entur.svg
new file mode 100644
index 0000000000..98bb5cc937
--- /dev/null
+++ b/site/static/organisations/entur.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/compiler/compile/Component.ts b/src/compiler/compile/Component.ts
index 20c0d09e24..b22b351da0 100644
--- a/src/compiler/compile/Component.ts
+++ b/src/compiler/compile/Component.ts
@@ -569,6 +569,7 @@ export default class Component {
this.add_var({
name,
global: true,
+ hoistable: true
});
}
});
@@ -661,6 +662,7 @@ export default class Component {
this.add_var({
name,
global: true,
+ hoistable: true
});
}
});
@@ -764,7 +766,7 @@ export default class Component {
}
if (name[0] === '$' && name[1] !== '$') {
- return x`${name.slice(1)}.set(${name})`;
+ return x`${name.slice(1)}.set(${value || name})`;
}
if (
diff --git a/src/compiler/compile/nodes/shared/Expression.ts b/src/compiler/compile/nodes/shared/Expression.ts
index 4a3e96a282..ad4a1bc24d 100644
--- a/src/compiler/compile/nodes/shared/Expression.ts
+++ b/src/compiler/compile/nodes/shared/Expression.ts
@@ -3,7 +3,7 @@ import { walk } from 'estree-walker';
import is_reference from 'is-reference';
import flatten_reference from '../../utils/flatten_reference';
import { create_scopes, Scope, extract_names } from '../../utils/scope';
-import { globals, sanitize } from '../../../utils/names';
+import { sanitize } from '../../../utils/names';
import Wrapper from '../../render_dom/wrappers/shared/Wrapper';
import TemplateScope from './TemplateScope';
import get_object from '../../utils/get_object';
@@ -75,8 +75,6 @@ export default class Expression {
if (scope.has(name)) return;
- if (globals.has(name) && !(component.var_lookup.has(name) || template_scope.names.has(name))) return;
-
if (name[0] === '$' && template_scope.names.has(name.slice(1))) {
component.error(node, {
code: `contextual-store`,
@@ -202,7 +200,6 @@ export default class Expression {
const { name } = flatten_reference(node);
if (scope.has(name)) return;
- if (globals.has(name) && !(component.var_lookup.has(name) || template_scope.names.has(name))) return;
if (function_expression) {
if (template_scope.names.has(name)) {
diff --git a/src/compiler/compile/render_dom/Block.ts b/src/compiler/compile/render_dom/Block.ts
index f73212f3ba..b268954dd0 100644
--- a/src/compiler/compile/render_dom/Block.ts
+++ b/src/compiler/compile/render_dom/Block.ts
@@ -146,11 +146,13 @@ export default class Block {
if (!wrapper.var) continue;
+ let suffix = '';
if (dupes.has(wrapper.var.name)) {
const i = counts.get(wrapper.var.name) || 0;
counts.set(wrapper.var.name, i + 1);
- wrapper.var.name = this.get_unique_name(wrapper.var.name + i).name;
+ suffix = i;
}
+ wrapper.var.name = this.get_unique_name(wrapper.var.name + suffix).name;
}
}
diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts
index ba070beee9..72f81cfb05 100644
--- a/src/compiler/compile/render_dom/index.ts
+++ b/src/compiler/compile/render_dom/index.ts
@@ -301,7 +301,7 @@ export default function dom(
return !variable || variable.hoistable;
})
.map(({ name }) => b`
- ${component.compile_options.dev && `@validate_store(${name.slice(1)}, '${name.slice(1)}');`}
+ ${component.compile_options.dev && b`@validate_store(${name.slice(1)}, '${name.slice(1)}');`}
@component_subscribe($$self, ${name.slice(1)}, $$value => $$invalidate('${name}', ${name} = $$value));
`);
diff --git a/src/compiler/compile/render_dom/wrappers/IfBlock.ts b/src/compiler/compile/render_dom/wrappers/IfBlock.ts
index c54994a36c..dff7851b5a 100644
--- a/src/compiler/compile/render_dom/wrappers/IfBlock.ts
+++ b/src/compiler/compile/render_dom/wrappers/IfBlock.ts
@@ -271,8 +271,8 @@ export default class IfBlockWrapper extends Wrapper {
? b`
${snippet && (
dependencies.length > 0
- ? b`if ((${condition} == null) || ${changed(dependencies)}) ${condition} = !!(${snippet})`
- : b`if (${condition} == null) ${condition} = !!(${snippet})`
+ ? b`if (${condition} == null || ${changed(dependencies)}) ${condition} = !!${snippet}`
+ : b`if (${condition} == null) ${condition} = !!${snippet}`
)}
if (${condition}) return ${block.name};`
: b`return ${block.name};`)}
@@ -388,7 +388,11 @@ export default class IfBlockWrapper extends Wrapper {
function ${select_block_type}(#changed, #ctx) {
${this.branches.map(({ dependencies, condition, snippet }, i) => condition
? b`
- ${snippet && b`if ((${condition} == null) || ${changed(dependencies)}) ${condition} = !!(${snippet})`}
+ ${snippet && (
+ dependencies.length > 0
+ ? b`if (${condition} == null || ${changed(dependencies)}) ${condition} = !!${snippet}`
+ : b`if (${condition} == null) ${condition} = !!${snippet}`
+ )}
if (${condition}) return ${i};`
: b`return ${i};`)}
${!has_else && b`return -1;`}
diff --git a/src/compiler/compile/render_dom/wrappers/Slot.ts b/src/compiler/compile/render_dom/wrappers/Slot.ts
index 1ab1b6abcb..fb90afab5b 100644
--- a/src/compiler/compile/render_dom/wrappers/Slot.ts
+++ b/src/compiler/compile/render_dom/wrappers/Slot.ts
@@ -137,12 +137,12 @@ export default class SlotWrapper extends Wrapper {
block.render_listeners(`_${slot.name}`);
block.event_listeners = listeners;
- if (block.chunks.create) create.push(b`if (!${slot}) { ${block.chunks.create} }`);
- if (block.chunks.claim) claim.push(b`if (!${slot}) { ${block.chunks.claim} }`);
- if (block.chunks.hydrate) hydrate.push(b`if (!${slot}) { ${block.chunks.hydrate} }`);
- if (block.chunks.mount) mount.push(b`if (!${slot}) { ${block.chunks.mount} }`);
- if (block.chunks.update) update.push(b`if (!${slot}) { ${block.chunks.update} }`);
- if (block.chunks.destroy) destroy.push(b`if (!${slot}) { ${block.chunks.destroy} }`);
+ if (block.chunks.create.length) create.push(b`if (!${slot}) { ${block.chunks.create} }`);
+ if (block.chunks.claim.length) claim.push(b`if (!${slot}) { ${block.chunks.claim} }`);
+ if (block.chunks.hydrate.length) hydrate.push(b`if (!${slot}) { ${block.chunks.hydrate} }`);
+ if (block.chunks.mount.length) mount.push(b`if (!${slot}) { ${block.chunks.mount} }`);
+ if (block.chunks.update.length) update.push(b`if (!${slot}) { ${block.chunks.update} }`);
+ if (block.chunks.destroy.length) destroy.push(b`if (!${slot}) { ${block.chunks.destroy} }`);
block.chunks.create = create;
block.chunks.claim = claim;
@@ -155,9 +155,11 @@ export default class SlotWrapper extends Wrapper {
b`if (${slot}) ${slot}.c();`
);
- block.chunks.claim.push(
- b`if (${slot}) ${slot}.l(${parent_nodes});`
- );
+ if (renderer.options.hydratable) {
+ block.chunks.claim.push(
+ b`if (${slot}) ${slot}.l(${parent_nodes});`
+ );
+ }
block.chunks.mount.push(b`
if (${slot}) {
diff --git a/src/compiler/parse/acorn.ts b/src/compiler/parse/acorn.ts
index a7d2703956..30ab3c398c 100644
--- a/src/compiler/parse/acorn.ts
+++ b/src/compiler/parse/acorn.ts
@@ -4,13 +4,11 @@ const Parser = acorn.Parser;
export const parse = (source: string) => Parser.parse(source, {
sourceType: 'module',
- // @ts-ignore TODO pending release of fixed types
ecmaVersion: 11,
locations: true
});
export const parse_expression_at = (source: string, index: number) => Parser.parseExpressionAt(source, index, {
- // @ts-ignore TODO pending release of fixed types
ecmaVersion: 11,
locations: true
});
\ No newline at end of file
diff --git a/src/compiler/parse/read/script.ts b/src/compiler/parse/read/script.ts
index efc9306677..0c416be6e8 100644
--- a/src/compiler/parse/read/script.ts
+++ b/src/compiler/parse/read/script.ts
@@ -45,7 +45,7 @@ export default function read_script(parser: Parser, start: number, attributes: N
let ast: Program;
try {
- ast = acorn.parse(source);
+ ast = acorn.parse(source) as any as Program;
} catch (err) {
parser.acorn_error(err);
}
diff --git a/test/js/samples/debug-no-dependencies/expected.js b/test/js/samples/debug-no-dependencies/expected.js
index 2212f3e0bb..57a67e9ea9 100644
--- a/test/js/samples/debug-no-dependencies/expected.js
+++ b/test/js/samples/debug-no-dependencies/expected.js
@@ -60,7 +60,7 @@ function create_each_block(ctx) {
}
function create_fragment(ctx) {
- let each_anchor;
+ let each_1_anchor;
let each_value = things;
let each_blocks = [];
@@ -74,7 +74,7 @@ function create_fragment(ctx) {
each_blocks[i].c();
}
- each_anchor = empty();
+ each_1_anchor = empty();
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
@@ -84,7 +84,7 @@ function create_fragment(ctx) {
each_blocks[i].m(target, anchor);
}
- insert_dev(target, each_anchor, anchor);
+ insert_dev(target, each_1_anchor, anchor);
},
p: function update(changed, ctx) {
if (changed.things) {
@@ -99,7 +99,7 @@ function create_fragment(ctx) {
} else {
each_blocks[i] = create_each_block(child_ctx);
each_blocks[i].c();
- each_blocks[i].m(each_anchor.parentNode, each_anchor);
+ each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
}
}
@@ -114,7 +114,7 @@ function create_fragment(ctx) {
o: noop,
d: function destroy(detaching) {
destroy_each(each_blocks, detaching);
- if (detaching) detach_dev(each_anchor);
+ if (detaching) detach_dev(each_1_anchor);
}
};
diff --git a/test/js/samples/deconflict-builtins/expected.js b/test/js/samples/deconflict-builtins/expected.js
index 222d473201..194188ad4e 100644
--- a/test/js/samples/deconflict-builtins/expected.js
+++ b/test/js/samples/deconflict-builtins/expected.js
@@ -43,7 +43,7 @@ function create_each_block(ctx) {
}
function create_fragment(ctx) {
- let each_anchor;
+ let each_1_anchor;
let each_value = ctx.createElement;
let each_blocks = [];
@@ -57,14 +57,14 @@ function create_fragment(ctx) {
each_blocks[i].c();
}
- each_anchor = empty();
+ each_1_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
- insert(target, each_anchor, anchor);
+ insert(target, each_1_anchor, anchor);
},
p(changed, ctx) {
if (changed.createElement) {
@@ -79,7 +79,7 @@ function create_fragment(ctx) {
} else {
each_blocks[i] = create_each_block(child_ctx);
each_blocks[i].c();
- each_blocks[i].m(each_anchor.parentNode, each_anchor);
+ each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
}
}
@@ -94,7 +94,7 @@ function create_fragment(ctx) {
o: noop,
d(detaching) {
destroy_each(each_blocks, detaching);
- if (detaching) detach(each_anchor);
+ if (detaching) detach(each_1_anchor);
}
};
}
diff --git a/test/js/samples/each-block-array-literal/expected.js b/test/js/samples/each-block-array-literal/expected.js
index 2eb1d903de..cd8e8b97c2 100644
--- a/test/js/samples/each-block-array-literal/expected.js
+++ b/test/js/samples/each-block-array-literal/expected.js
@@ -43,7 +43,7 @@ function create_each_block(ctx) {
}
function create_fragment(ctx) {
- let each_anchor;
+ let each_1_anchor;
let each_value = [ctx.a, ctx.b, ctx.c, ctx.d, ctx.e];
let each_blocks = [];
@@ -57,14 +57,14 @@ function create_fragment(ctx) {
each_blocks[i].c();
}
- each_anchor = empty();
+ each_1_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < 5; i += 1) {
each_blocks[i].m(target, anchor);
}
- insert(target, each_anchor, anchor);
+ insert(target, each_1_anchor, anchor);
},
p(changed, ctx) {
if (changed.a || changed.b || changed.c || changed.d || changed.e) {
@@ -79,7 +79,7 @@ function create_fragment(ctx) {
} else {
each_blocks[i] = create_each_block(child_ctx);
each_blocks[i].c();
- each_blocks[i].m(each_anchor.parentNode, each_anchor);
+ each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
}
}
@@ -92,7 +92,7 @@ function create_fragment(ctx) {
o: noop,
d(detaching) {
destroy_each(each_blocks, detaching);
- if (detaching) detach(each_anchor);
+ if (detaching) detach(each_1_anchor);
}
};
}
diff --git a/test/js/samples/each-block-keyed-animated/expected.js b/test/js/samples/each-block-keyed-animated/expected.js
index e2e8357805..02022d7d67 100644
--- a/test/js/samples/each-block-keyed-animated/expected.js
+++ b/test/js/samples/each-block-keyed-animated/expected.js
@@ -63,15 +63,15 @@ function create_each_block(key_1, ctx) {
function create_fragment(ctx) {
let each_blocks = [];
- let each_lookup = new Map();
- let each_anchor;
+ let each_1_lookup = new Map();
+ let each_1_anchor;
let each_value = ctx.things;
const get_key = ctx => ctx.thing.id;
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context(ctx, each_value, i);
let key = get_key(child_ctx);
- each_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
+ each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
}
return {
@@ -80,19 +80,19 @@ function create_fragment(ctx) {
each_blocks[i].c();
}
- each_anchor = empty();
+ each_1_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
- insert(target, each_anchor, anchor);
+ insert(target, each_1_anchor, anchor);
},
p(changed, ctx) {
const each_value = ctx.things;
for (let i = 0; i < each_blocks.length; i += 1) each_blocks[i].r();
- each_blocks = update_keyed_each(each_blocks, changed, get_key, 1, ctx, each_value, each_lookup, each_anchor.parentNode, fix_and_destroy_block, create_each_block, each_anchor, get_each_context);
+ each_blocks = update_keyed_each(each_blocks, changed, get_key, 1, ctx, each_value, each_1_lookup, each_1_anchor.parentNode, fix_and_destroy_block, create_each_block, each_1_anchor, get_each_context);
for (let i = 0; i < each_blocks.length; i += 1) each_blocks[i].a();
},
i: noop,
@@ -102,7 +102,7 @@ function create_fragment(ctx) {
each_blocks[i].d(detaching);
}
- if (detaching) detach(each_anchor);
+ if (detaching) detach(each_1_anchor);
}
};
}
diff --git a/test/js/samples/each-block-keyed/expected.js b/test/js/samples/each-block-keyed/expected.js
index 5e149826b8..050c499e01 100644
--- a/test/js/samples/each-block-keyed/expected.js
+++ b/test/js/samples/each-block-keyed/expected.js
@@ -48,15 +48,15 @@ function create_each_block(key_1, ctx) {
function create_fragment(ctx) {
let each_blocks = [];
- let each_lookup = new Map();
- let each_anchor;
+ let each_1_lookup = new Map();
+ let each_1_anchor;
let each_value = ctx.things;
const get_key = ctx => ctx.thing.id;
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context(ctx, each_value, i);
let key = get_key(child_ctx);
- each_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
+ each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
}
return {
@@ -65,18 +65,18 @@ function create_fragment(ctx) {
each_blocks[i].c();
}
- each_anchor = empty();
+ each_1_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
- insert(target, each_anchor, anchor);
+ insert(target, each_1_anchor, anchor);
},
p(changed, ctx) {
const each_value = ctx.things;
- each_blocks = update_keyed_each(each_blocks, changed, get_key, 1, ctx, each_value, each_lookup, each_anchor.parentNode, destroy_block, create_each_block, each_anchor, get_each_context);
+ each_blocks = update_keyed_each(each_blocks, changed, get_key, 1, ctx, each_value, each_1_lookup, each_1_anchor.parentNode, destroy_block, create_each_block, each_1_anchor, get_each_context);
},
i: noop,
o: noop,
@@ -85,7 +85,7 @@ function create_fragment(ctx) {
each_blocks[i].d(detaching);
}
- if (detaching) detach(each_anchor);
+ if (detaching) detach(each_1_anchor);
}
};
}
diff --git a/test/runtime/samples/binding-this-store/_config.js b/test/runtime/samples/binding-this-store/_config.js
new file mode 100644
index 0000000000..f818c2e31e
--- /dev/null
+++ b/test/runtime/samples/binding-this-store/_config.js
@@ -0,0 +1,4 @@
+export default {
+ skip_if_ssr: true,
+ html: `object
`
+};
diff --git a/test/runtime/samples/binding-this-store/main.svelte b/test/runtime/samples/binding-this-store/main.svelte
new file mode 100644
index 0000000000..7958dfa2d8
--- /dev/null
+++ b/test/runtime/samples/binding-this-store/main.svelte
@@ -0,0 +1,6 @@
+
+
+{typeof $foo}
diff --git a/test/runtime/samples/deconflict-builtins-2/_config.js b/test/runtime/samples/deconflict-builtins-2/_config.js
new file mode 100644
index 0000000000..5870ff073b
--- /dev/null
+++ b/test/runtime/samples/deconflict-builtins-2/_config.js
@@ -0,0 +1,4 @@
+export default {
+ html: `hello world`,
+ preserveIdentifiers: true,
+};
\ No newline at end of file
diff --git a/test/runtime/samples/deconflict-builtins-2/main.svelte b/test/runtime/samples/deconflict-builtins-2/main.svelte
new file mode 100644
index 0000000000..82f9213045
--- /dev/null
+++ b/test/runtime/samples/deconflict-builtins-2/main.svelte
@@ -0,0 +1,5 @@
+
+
+{foo}
\ No newline at end of file
diff --git a/test/runtime/samples/if-block-compound-outro-no-dependencies/_config.js b/test/runtime/samples/if-block-compound-outro-no-dependencies/_config.js
new file mode 100644
index 0000000000..58b0521022
--- /dev/null
+++ b/test/runtime/samples/if-block-compound-outro-no-dependencies/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: `blah blah blah blah`
+};
diff --git a/test/runtime/samples/if-block-compound-outro-no-dependencies/main.svelte b/test/runtime/samples/if-block-compound-outro-no-dependencies/main.svelte
new file mode 100644
index 0000000000..84224116da
--- /dev/null
+++ b/test/runtime/samples/if-block-compound-outro-no-dependencies/main.svelte
@@ -0,0 +1,32 @@
+
+
+{#if $foo}
+ blah
+{:else}
+ {#if bar()}
+
+ {/if}
+{/if}
+
+{#if $foo}
+ blah
+{:else}
+ {#if bar}
+
+ {/if}
+{/if}
+
+{#if $foo}
+ blah
+{:else if bar()}
+
+{/if}
+
+{#if $foo}
+ blah
+{:else if bar}
+
+{/if}
diff --git a/test/runtime/samples/sigil-expression-function-body/_config.js b/test/runtime/samples/sigil-expression-function-body/_config.js
new file mode 100644
index 0000000000..fccd0db2d0
--- /dev/null
+++ b/test/runtime/samples/sigil-expression-function-body/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: `@foo`
+};
diff --git a/test/runtime/samples/sigil-expression-function-body/main.svelte b/test/runtime/samples/sigil-expression-function-body/main.svelte
new file mode 100644
index 0000000000..074496d6f4
--- /dev/null
+++ b/test/runtime/samples/sigil-expression-function-body/main.svelte
@@ -0,0 +1 @@
+{(() => '@foo')()}
diff --git a/test/runtime/samples/store-imported/_config.js b/test/runtime/samples/store-imported/_config.js
index c2d471a329..251866e5ba 100644
--- a/test/runtime/samples/store-imported/_config.js
+++ b/test/runtime/samples/store-imported/_config.js
@@ -1,4 +1,6 @@
export default {
+ compileOptions: { dev: true }, // tests `@validate_store` code generation
+
html: `
42
`