Merge pull request #199 from sveltejs/onerror

intercept parse errors with options.onerror
pull/201/head
Rich Harris 8 years ago committed by GitHub
commit 14ef2ed41e

@ -16,13 +16,25 @@ function normalizeOptions ( options ) {
} else {
console.warn( warning.message ); // eslint-disable-line no-console
}
},
onerror: error => {
throw error;
}
}, options );
}
export function compile ( source, _options ) {
const options = normalizeOptions( _options );
const parsed = parse( source, options );
let parsed;
try {
parsed = parse( source );
} catch ( err ) {
options.onerror( err );
return;
}
const { names } = validate( parsed, source, options );

@ -33,4 +33,23 @@ describe( 'parse', () => {
}
});
});
it( 'handles errors with options.onerror', () => {
let errored = false;
svelte.compile( `<h1>unclosed`, {
onerror ( err ) {
errored = true;
assert.equal( err.message, `Unexpected end of input` );
}
});
assert.ok( errored );
});
it( 'throws without options.onerror', () => {
assert.throws( () => {
svelte.compile( `<h1>unclosed` );
}, /Unexpected end of input/ );
});
});

Loading…
Cancel
Save