@@ -83,6 +83,18 @@ function deepClone(obj) {
83
83
return JSON . parse ( JSON . stringify ( obj ) ) ;
84
84
}
85
85
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
+
86
98
function generateTypeConversion ( ctx , name , idlType , argAttrs = [ ] , parentName , errPrefix = '"The provided value"' ) {
87
99
const requires = new utils . RequiresMap ( ctx ) ;
88
100
let str = "" ;
@@ -211,25 +223,25 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
211
223
if ( union . sequenceLike ) {
212
224
code += `if (${ name } [Symbol.iterator] !== undefined) {` ;
213
225
const conv = generateTypeConversion ( ctx , name , union . sequenceLike , [ ] , parentName ,
214
- ` ${ errPrefix } + " sequence"` ) ;
226
+ appendToErrorPrefix ( errPrefix , " sequence" ) ) ;
215
227
requires . merge ( conv . requires ) ;
216
228
code += conv . body ;
217
229
code += `} else {` ;
218
230
}
219
231
220
232
if ( union . dictionary ) {
221
233
const conv = generateTypeConversion ( ctx , name , union . dictionary , [ ] , parentName ,
222
- ` ${ errPrefix } + " dictionary"` ) ;
234
+ appendToErrorPrefix ( errPrefix , " dictionary" ) ) ;
223
235
requires . merge ( conv . requires ) ;
224
236
code += conv . body ;
225
237
} else if ( union . record ) {
226
238
const conv = generateTypeConversion ( ctx , name , union . record , [ ] , parentName ,
227
- ` ${ errPrefix } + " record"` ) ;
239
+ appendToErrorPrefix ( errPrefix , " record" ) ) ;
228
240
requires . merge ( conv . requires ) ;
229
241
code += conv . body ;
230
242
} else if ( union . callbackInterface ) {
231
243
const conv = generateTypeConversion ( ctx , name , union . callbackInterface , [ ] , parentName ,
232
- ` ${ errPrefix } + " callback interface"` ) ;
244
+ appendToErrorPrefix ( errPrefix , " callback interface" ) ) ;
233
245
requires . merge ( conv . requires ) ;
234
246
code += conv . body ;
235
247
} else if ( union . object ) {
@@ -269,7 +281,7 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
269
281
code += conv . body ;
270
282
requires . merge ( conv . requires ) ;
271
283
} 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." ) } )` ;
273
285
}
274
286
code += "}" ;
275
287
output . push ( code ) ;
@@ -280,12 +292,12 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
280
292
281
293
function generateSequence ( ) {
282
294
const conv = generateTypeConversion ( ctx , "nextItem" , idlType . idlType [ 0 ] , [ ] , parentName ,
283
- ` ${ errPrefix } + "'s element"` ) ;
295
+ appendToErrorPrefix ( errPrefix , "'s element" ) ) ;
284
296
requires . merge ( conv . requires ) ;
285
297
286
298
str += `
287
299
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." ) } );
289
301
} else {
290
302
const V = [];
291
303
const tmp = ${ name } ;
@@ -300,15 +312,15 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
300
312
301
313
function generateRecord ( ) {
302
314
const keyConv = generateTypeConversion ( ctx , "typedKey" , idlType . idlType [ 0 ] , [ ] , parentName ,
303
- ` ${ errPrefix } + "'s key"` ) ;
315
+ appendToErrorPrefix ( errPrefix , "'s key" ) ) ;
304
316
requires . merge ( keyConv . requires ) ;
305
317
const valConv = generateTypeConversion ( ctx , "typedValue" , idlType . idlType [ 1 ] , [ ] , parentName ,
306
- ` ${ errPrefix } + "'s value"` ) ;
318
+ appendToErrorPrefix ( errPrefix , "'s value" ) ) ;
307
319
requires . merge ( valConv . requires ) ;
308
320
309
321
str += `
310
322
if (!utils.isObject(${ name } )) {
311
- throw new TypeError(${ errPrefix } + " is not an object.");
323
+ throw new TypeError(${ appendToErrorPrefix ( errPrefix , " is not an object." ) } );
312
324
} else {
313
325
const result = Object.create(null);
314
326
for (const key of Reflect.ownKeys(${ name } )) {
@@ -334,7 +346,7 @@ function generateTypeConversion(ctx, name, idlType, argAttrs = [], parentName, e
334
346
handler = "" ;
335
347
} else {
336
348
const conv = generateTypeConversion ( ctx , "value" , idlType . idlType [ 0 ] , [ ] , parentName ,
337
- ` ${ errPrefix } + " promise value"` ) ;
349
+ appendToErrorPrefix ( errPrefix , " promise value" ) ) ;
338
350
requires . merge ( conv . requires ) ;
339
351
handler = `
340
352
${ conv . body }
0 commit comments