Merge pull request #207 from sveltejs/gh-102

throw if options.name is illegal
pull/209/head
Rich Harris 9 years ago committed by GitHub
commit 298bfb803d

@ -3,7 +3,7 @@ import validateHtml from './html/index.js';
import { getLocator } from 'locate-character'; import { getLocator } from 'locate-character';
import getCodeFrame from '../utils/getCodeFrame.js'; import getCodeFrame from '../utils/getCodeFrame.js';
export default function validate ( parsed, source, { onerror, onwarn, filename } ) { export default function validate ( parsed, source, { onerror, onwarn, name, filename } ) {
const locator = getLocator( source ); const locator = getLocator( source );
const validator = { const validator = {
@ -18,11 +18,7 @@ export default function validate ( parsed, source, { onerror, onwarn, filename }
error.toString = () => `${error.message} (${error.loc.line}:${error.loc.column})\n${error.frame}`; error.toString = () => `${error.message} (${error.loc.line}:${error.loc.column})\n${error.frame}`;
if ( onerror ) { onerror( error );
onerror( error );
} else {
throw error;
}
}, },
warn: ( message, pos ) => { warn: ( message, pos ) => {
@ -47,6 +43,11 @@ export default function validate ( parsed, source, { onerror, onwarn, filename }
namespace: null namespace: null
}; };
if ( name && !/^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test( name ) ) {
const error = new Error( `options.name must be a valid identifier` );
onerror( error );
}
if ( parsed.js ) { if ( parsed.js ) {
validateJs( validator, parsed.js ); validateJs( validator, parsed.js );
} }

@ -58,4 +58,12 @@ describe( 'validate', () => {
} }
}); });
}); });
it( 'errors if options.name is illegal', () => {
assert.throws( () => {
svelte.compile( '<div></div>', {
name: 'not.valid'
});
}, /options\.name must be a valid identifier/ );
});
}); });

Loading…
Cancel
Save