From 23167da0dd5f78bc1589b9833c48f12690d36050 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Sat, 21 Sep 2019 18:10:22 -0400 Subject: [PATCH] fixes --- .../compile/render_ssr/handlers/AwaitBlock.ts | 18 +++++++++++------- .../render_ssr/handlers/InlineComponent.ts | 3 +-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/compiler/compile/render_ssr/handlers/AwaitBlock.ts b/src/compiler/compile/render_ssr/handlers/AwaitBlock.ts index 85bf7b3135..6dd38bfd2e 100644 --- a/src/compiler/compile/render_ssr/handlers/AwaitBlock.ts +++ b/src/compiler/compile/render_ssr/handlers/AwaitBlock.ts @@ -1,16 +1,20 @@ import Renderer, { RenderOptions } from '../Renderer'; -import { snip } from '../../utils/snip'; import AwaitBlock from '../../nodes/AwaitBlock'; +import { x } from 'code-red'; export default function(node: AwaitBlock, renderer: Renderer, options: RenderOptions) { - renderer.append('${(function(__value) { if(@is_promise(__value)) return `'); - + renderer.push(); renderer.render(node.pending.children, options); + const pending = renderer.pop(); - renderer.append('`; return function(' + (node.value || '') + ') { return `'); - + renderer.push(); renderer.render(node.then.children, options); + const then = renderer.pop(); - const snippet = snip(node.expression); - renderer.append(`\`;}(__value);}(${snippet})) }`); + renderer.add_expression(x` + (function(__value) { + if (@is_promise(__value)) return ${pending}; + return (function(${node.value}) { return ${then}; }(__value)); + }(${node.expression.node})) + `); } diff --git a/src/compiler/compile/render_ssr/handlers/InlineComponent.ts b/src/compiler/compile/render_ssr/handlers/InlineComponent.ts index 775e8afd0c..9ca6a82b38 100644 --- a/src/compiler/compile/render_ssr/handlers/InlineComponent.ts +++ b/src/compiler/compile/render_ssr/handlers/InlineComponent.ts @@ -3,7 +3,6 @@ import { quote_name_if_necessary } from '../../../utils/names'; import Renderer, { RenderOptions } from '../Renderer'; import { get_slot_scope } from './shared/get_slot_scope'; import InlineComponent from '../../nodes/InlineComponent'; -import { INode } from '../../nodes/interfaces'; import { p, x } from 'code-red'; function get_prop_value(attribute) { @@ -64,7 +63,7 @@ export default function(node: InlineComponent, renderer: Renderer, options: Rend node.name === 'svelte:self' ? '__svelte:self__' // TODO conflict-proof this : node.name === 'svelte:component' - ? `((${snip(node.expression)}) || @missing_component)` + ? x`(${node.expression.node}) || @missing_component` : node.name );