File tree Expand file tree Collapse file tree 2 files changed +25
-1
lines changed Expand file tree Collapse file tree 2 files changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -243,7 +243,7 @@ function get_name(num) {
243243 num = ~ ~ ( num / chars . length ) - 1 ;
244244 } while ( num >= 0 ) ;
245245
246- return reserved . test ( name ) ? `${ name } _ ` : name ;
246+ return reserved . test ( name ) ? `${ name } 0 ` : name ;
247247}
248248
249249/** @param {any } thing */
Original file line number Diff line number Diff line change @@ -45,6 +45,22 @@ function throws(name, fn) {
4545 }
4646}
4747
48+ /**
49+ *
50+ * @param {string } name
51+ * @param {(...args: any[]) => void } fn
52+ */
53+ function allows ( name , fn ) {
54+ try {
55+ fn ( ) ;
56+ console . log ( `✅ ${ name } ` ) ;
57+ passed += 1 ;
58+ } catch ( e ) {
59+ console . log ( `❌ ${ name } (${ e . message } )` ) ;
60+ failed += 1 ;
61+ }
62+ }
63+
4864describe ( 'basics' , ( t ) => {
4965 t ( 'number' , 42 , '42' ) ;
5066 t ( 'negative number' , - 42 , '-42' ) ;
@@ -173,6 +189,14 @@ describe('misc', (t) => {
173189 throws ( 'throws for symbolic keys' , ( ) => {
174190 devalue ( { [ Symbol ( ) ] : null } ) ;
175191 } ) ;
192+
193+ allows ( 'does not create duplicate parameter names' , ( ) => {
194+ const foo = new Array ( 20000 ) . fill ( 0 ) . map ( ( _ , i ) => i ) ;
195+ const bar = foo . map ( ( _ , i ) => ( { [ i ] : foo [ i ] } ) ) ;
196+ const serialized = devalue ( [ foo , ...bar ] ) ;
197+
198+ eval ( serialized ) ;
199+ } ) ;
176200} ) ;
177201
178202console . log ( `\n---\n${ passed } passed, ${ failed } failed\n` ) ;
You can’t perform that action at this time.
0 commit comments