Merge pull request #319 from sveltejs/gh-258

more informative error message when elements/blocks are left open
pull/266/merge
Rich Harris 8 years ago committed by GitHub
commit 25d68a34ab

@ -123,7 +123,14 @@ export default function parse ( template, options = {} ) {
state = state( parser ) || fragment;
}
if ( state !== fragment || parser.stack.length > 1 ) {
if ( parser.stack.length > 1 ) {
const current = parser.current();
const type = current.type === 'Element' ? `<${current.name}>` : 'Block';
parser.error( `${type} was left open`, current.start );
}
if ( state !== fragment ) {
parser.error( 'Unexpected end of input' );
}

@ -45,7 +45,7 @@ describe( 'parse', () => {
svelte.compile( `<h1>unclosed`, {
onerror ( err ) {
errored = true;
assert.equal( err.message, `Unexpected end of input` );
assert.equal( err.message, `<h1> was left open` );
}
});
@ -55,6 +55,6 @@ describe( 'parse', () => {
it( 'throws without options.onerror', () => {
assert.throws( () => {
svelte.compile( `<h1>unclosed` );
}, /Unexpected end of input/ );
}, /<h1> was left open/ );
});
});

@ -0,0 +1,8 @@
{
"message": "Block was left open",
"loc": {
"line": 1,
"column": 0
},
"pos": 0
}

@ -1,8 +1,8 @@
{
"message": "Unexpected end of input",
"message": "<div> was left open",
"loc": {
"line": 1,
"column": 5
"column": 0
},
"pos": 5
"pos": 0
}

Loading…
Cancel
Save