@@ -83,6 +83,18 @@ function deepClone(obj) {
8383 return JSON . parse ( JSON . stringify ( obj ) ) ;
8484}
8585
86+ function appendToErrorPrefix ( errPrefix , appended ) {
87+ if ( errPrefix . endsWith ( '"' ) ) {
88+ return errPrefix . slice ( 0 , - 1 ) + appended + '"' ;
89+ } else if ( errPrefix . endsWith ( "'" ) ) {
90+ return errPrefix . slice ( 0 , - 1 ) + appended + "'" ;
91+ } else if ( errPrefix . endsWith ( "`" ) ) {
92+ return errPrefix . slice ( 0 , - 1 ) + appended + "`" ;
93+ }
94+
95+ return `\`\${${ errPrefix } }${ appended } \`` ;
96+ }
97+
8698function generateTypeConversion ( ctx , name , idlType , argAttrs = [ ] , parentName , errPrefix = '"The provided value"' ) {
8799 const requires = new utils . RequiresMap ( ctx ) ;
88100 let str = "" ;
@@ -211,25 +223,25 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
211223 if ( union . sequenceLike ) {
212224 code += `if (${ name } [Symbol.iterator] !== undefined) {` ;
213225 const conv = generateTypeConversion ( ctx , name , union . sequenceLike , [ ] , parentName ,
214- ` ${ errPrefix } + " sequence"` ) ;
226+ appendToErrorPrefix ( errPrefix , " sequence" ) ) ;
215227 requires . merge ( conv . requires ) ;
216228 code += conv . body ;
217229 code += `} else {` ;
218230 }
219231
220232 if ( union . dictionary ) {
221233 const conv = generateTypeConversion ( ctx , name , union . dictionary , [ ] , parentName ,
222- ` ${ errPrefix } + " dictionary"` ) ;
234+ appendToErrorPrefix ( errPrefix , " dictionary" ) ) ;
223235 requires . merge ( conv . requires ) ;
224236 code += conv . body ;
225237 } else if ( union . record ) {
226238 const conv = generateTypeConversion ( ctx , name , union . record , [ ] , parentName ,
227- ` ${ errPrefix } + " record"` ) ;
239+ appendToErrorPrefix ( errPrefix , " record" ) ) ;
228240 requires . merge ( conv . requires ) ;
229241 code += conv . body ;
230242 } else if ( union . callbackInterface ) {
231243 const conv = generateTypeConversion ( ctx , name , union . callbackInterface , [ ] , parentName ,
232- ` ${ errPrefix } + " callback interface"` ) ;
244+ appendToErrorPrefix ( errPrefix , " callback interface" ) ) ;
233245 requires . merge ( conv . requires ) ;
234246 code += conv . body ;
235247 } else if ( union . object ) {
@@ -269,7 +281,7 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
269281 code += conv . body ;
270282 requires . merge ( conv . requires ) ;
271283 } else {
272- code += `throw new TypeError(${ errPrefix } + " is not of any supported type.")` ;
284+ code += `throw new TypeError(${ appendToErrorPrefix ( errPrefix , " is not of any supported type." ) } )` ;
273285 }
274286 code += "}" ;
275287 output . push ( code ) ;
@@ -280,12 +292,12 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
280292
281293 function generateSequence ( ) {
282294 const conv = generateTypeConversion ( ctx , "nextItem" , idlType . idlType [ 0 ] , [ ] , parentName ,
283- ` ${ errPrefix } + "'s element"` ) ;
295+ appendToErrorPrefix ( errPrefix , "'s element" ) ) ;
284296 requires . merge ( conv . requires ) ;
285297
286298 str += `
287299 if (!utils.isObject(${ name } )) {
288- throw new TypeError(${ errPrefix } + " is not an iterable object.");
300+ throw new TypeError(${ appendToErrorPrefix ( errPrefix , " is not an iterable object." ) } );
289301 } else {
290302 const V = [];
291303 const tmp = ${ name } ;
@@ -300,15 +312,15 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
300312
301313 function generateRecord ( ) {
302314 const keyConv = generateTypeConversion ( ctx , "typedKey" , idlType . idlType [ 0 ] , [ ] , parentName ,
303- ` ${ errPrefix } + "'s key"` ) ;
315+ appendToErrorPrefix ( errPrefix , "'s key" ) ) ;
304316 requires . merge ( keyConv . requires ) ;
305317 const valConv = generateTypeConversion ( ctx , "typedValue" , idlType . idlType [ 1 ] , [ ] , parentName ,
306- ` ${ errPrefix } + "'s value"` ) ;
318+ appendToErrorPrefix ( errPrefix , "'s value" ) ) ;
307319 requires . merge ( valConv . requires ) ;
308320
309321 str += `
310322 if (!utils.isObject(${ name } )) {
311- throw new TypeError(${ errPrefix } + " is not an object.");
323+ throw new TypeError(${ appendToErrorPrefix ( errPrefix , " is not an object." ) } );
312324 } else {
313325 const result = Object.create(null);
314326 for (const key of Reflect.ownKeys(${ name } )) {
@@ -334,7 +346,7 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
334346 handler = "" ;
335347 } else {
336348 const conv = generateTypeConversion ( ctx , "value" , idlType . idlType [ 0 ] , [ ] , parentName ,
337- ` ${ errPrefix } + " promise value"` ) ;
349+ appendToErrorPrefix ( errPrefix , " promise value" ) ) ;
338350 requires . merge ( conv . requires ) ;
339351 handler = `
340352 ${ conv . body }
0 commit comments