Skip to content

Commit

Permalink
fix: fragment property of Empty Component is set as true in dev mode,…
Browse files Browse the repository at this point in the history
… inconsistent with production mode
  • Loading branch information
qinmu authored and magentaqin committed Apr 29, 2022
1 parent 007d952 commit 35da0f5
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
5 changes: 4 additions & 1 deletion src/compiler/compile/render_dom/Block.ts
Expand Up @@ -428,13 +428,16 @@ export default class Block {
}

has_content(): boolean {
// exclude "ThrowStatment" type node
// as in dev mode, 'ThrowStatement' type node will always be added, which will make has_content() always return true in dev mode
const validClaims = this.chunks.claim.filter(i => Array.isArray(i) && i[0] && i[0].type !== 'ThrowStatement');
return !!this.first ||
this.event_listeners.length > 0 ||
this.chunks.intro.length > 0 ||
this.chunks.outro.length > 0 ||
this.chunks.create.length > 0 ||
this.chunks.hydrate.length > 0 ||
this.chunks.claim.length > 0 ||
validClaims.length > 0 ||
this.chunks.mount.length > 0 ||
this.chunks.update.length > 0 ||
this.chunks.destroy.length > 0 ||
Expand Down
8 changes: 5 additions & 3 deletions src/compiler/compile/render_dom/index.ts
Expand Up @@ -333,8 +333,10 @@ export default function dom(
// $$props arg is still needed for unknown prop check
args.push(x`$$props`);
}

const has_create_fragment = component.compile_options.dev || block.has_content();
// fix: remove "component.compile_options.dev" condition, which
// will set has_create_fragment always be true in dev mode,
// inconsistent with the behavior in production mode.
const has_create_fragment = block.has_content();
if (has_create_fragment) {
body.push(b`
function create_fragment(#ctx) {
Expand Down Expand Up @@ -593,7 +595,7 @@ export default function dom(
constructor(options) {
super(${options.dev && 'options'});
@init(this, options, ${definition}, ${has_create_fragment ? 'create_fragment' : 'null'}, ${not_equal}, ${prop_indexes}, ${optional_parameters});
${options.dev && b`@dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "${name.name}", options, id: create_fragment.name });`}
${options.dev && b`@dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "${name.name}", options, id: ${has_create_fragment ? 'create_fragment.name' : 'this.name'} });`}
${dev_props_check}
}
Expand Down

0 comments on commit 35da0f5

Please sign in to comment.