From 87dd1b8961c87519229f1d96e4a8b52c4a9c0de5 Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Sat, 19 Nov 2011 22:17:59 -0500 Subject: [PATCH] [#29] Re-added interface name to interface errors since abstract requirement change --- lib/interface.js | 67 +++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/lib/interface.js b/lib/interface.js index 2b005cd..2f074cc 100644 --- a/lib/interface.js +++ b/lib/interface.js @@ -209,36 +209,49 @@ var extend = ( function( extending ) var new_interface = createInterface( iname ); - util.propParse( props, { - assumeAbstract: true, + try + { + util.propParse( props, { + assumeAbstract: true, - property: function() - { - // should never get to this point because of assumeAbstract - throw TypeError( 'Unexpected internal error' ); - }, - - getset: function() - { - // should never get to this point because of assumeAbstract - throw TypeError( 'Unexpected internal error' ); - }, - - method: function( name, value, is_abstract, keywords ) - { - // all members must be public - if ( keywords[ 'protected' ] || keywords[ 'private' ] ) + property: function() { - throw TypeError( - iname + " member " + name + " must be public" - ); - } + // should never get to this point because of assumeAbstract + throw TypeError( 'Unexpected internal error' ); + }, - member_builder.buildMethod( - members, null, name, value, keywords - ); - }, - } ); + getset: function() + { + // should never get to this point because of assumeAbstract + throw TypeError( 'Unexpected internal error' ); + }, + + method: function( name, value, is_abstract, keywords ) + { + // all members must be public + if ( keywords[ 'protected' ] || keywords[ 'private' ] ) + { + throw TypeError( + iname + " member " + name + " must be public" + ); + } + + member_builder.buildMethod( + members, null, name, value, keywords + ); + }, + } ); + } + catch ( e ) + { + // alter the message to include our name + e.message = "Failed to define interface " + + ( ( iname ) ? iname : '(anonymous)' ) + ": " + e.message + ; + + // re-throw + throw e; + } attachExtend( new_interface ); attachStringMethod( new_interface, iname );