Ensure that only one {{yield}} can be used

pull/86/head
Fabrice Weinberg 9 years ago
parent 0179ee154c
commit 57ae613b6a

@ -490,7 +490,7 @@ export default function generate ( parsed, source, options ) {
};
this.appendChild = function appendChild ( child ) {
this.yield.appendChild(child)
this.yield.appendChild(child);
}
${initStatements.join( '\n\n' )}

@ -8,9 +8,14 @@ export default {
generator.addSourcemapLocations( node.expression );
if (node.expression.name === 'yield') {
generator.current.initStatements.push( deindent`
component.yield = ${generator.current.target};
` );
if (generator.hasYield === undefined) {
generator.hasYield = true;
generator.current.initStatements.push( deindent`
component.yield = ${generator.current.target};
` );
} else {
throw new Error( `Only one {{yield}} per component.` );
}
} else {
generator.addElement( name, `document.createTextNode( ${snippet} )`, true );

@ -0,0 +1,5 @@
export default {
compileError: function ( assert, err ) {
assert.equal('Error: Only one {{yield}} per component.', err)
}
};

@ -0,0 +1,2 @@
<p>{{yield}}</p>
<p>{{yield}}</p>

@ -228,7 +228,7 @@ describe( 'svelte', () => {
compiled = svelte.compile( source );
} catch ( err ) {
if ( config.compileError ) {
config.compileError( err );
config.compileError( assert, err );
return;
} else {
throw err;

Loading…
Cancel
Save