@@ -1021,7 +1021,7 @@ if (typeof Symbol !== 'undefined') {
10211021{
10221022 const set = new Set ( ) ;
10231023 set . add ( set ) ;
1024- assert . strictEqual ( util . inspect ( set ) , 'Set { [Circular] }' ) ;
1024+ assert . strictEqual ( util . inspect ( set ) , '<ref *1> Set { [Circular *1 ] }' ) ;
10251025}
10261026
10271027// Test Map.
@@ -1039,12 +1039,32 @@ if (typeof Symbol !== 'undefined') {
10391039{
10401040 const map = new Map ( ) ;
10411041 map . set ( map , 'map' ) ;
1042- assert . strictEqual ( util . inspect ( map ) , "Map { [Circular] => 'map' }" ) ;
1042+ assert . strictEqual ( inspect ( map ) , "<ref *1> Map { [Circular *1 ] => 'map' }" ) ;
10431043 map . set ( map , map ) ;
1044- assert . strictEqual ( util . inspect ( map ) , 'Map { [Circular] => [Circular] }' ) ;
1044+ assert . strictEqual (
1045+ inspect ( map ) ,
1046+ '<ref *1> Map { [Circular *1] => [Circular *1] }'
1047+ ) ;
10451048 map . delete ( map ) ;
10461049 map . set ( 'map' , map ) ;
1047- assert . strictEqual ( util . inspect ( map ) , "Map { 'map' => [Circular] }" ) ;
1050+ assert . strictEqual ( inspect ( map ) , "<ref *1> Map { 'map' => [Circular *1] }" ) ;
1051+ }
1052+
1053+ // Test multiple circular references.
1054+ {
1055+ const obj = { } ;
1056+ obj . a = [ obj ] ;
1057+ obj . b = { } ;
1058+ obj . b . inner = obj . b ;
1059+ obj . b . obj = obj ;
1060+
1061+ assert . strictEqual (
1062+ inspect ( obj ) ,
1063+ '<ref *1> {\n' +
1064+ ' a: [ [Circular *1] ],\n' +
1065+ ' b: <ref *2> { inner: [Circular *2], obj: [Circular *1] }\n' +
1066+ '}'
1067+ ) ;
10481068}
10491069
10501070// Test Promise.
@@ -1242,7 +1262,9 @@ if (typeof Symbol !== 'undefined') {
12421262 arr [ 0 ] [ 0 ] [ 0 ] = { a : 2 } ;
12431263 assert . strictEqual ( util . inspect ( arr ) , '[ [ [ [Object] ] ] ]' ) ;
12441264 arr [ 0 ] [ 0 ] [ 0 ] = arr ;
1245- assert . strictEqual ( util . inspect ( arr ) , '[ [ [ [Circular] ] ] ]' ) ;
1265+ assert . strictEqual ( util . inspect ( arr ) , '<ref *1> [ [ [ [Circular *1] ] ] ]' ) ;
1266+ arr [ 0 ] [ 0 ] [ 0 ] = arr [ 0 ] [ 0 ] ;
1267+ assert . strictEqual ( util . inspect ( arr ) , '[ [ <ref *1> [ [Circular *1] ] ] ]' ) ;
12461268}
12471269
12481270// Corner cases.
@@ -1609,7 +1631,7 @@ util.inspect(process);
16091631 ' 2,' ,
16101632 ' [length]: 2' ,
16111633 ' ]' ,
1612- ' } => [Map Iterator] {' ,
1634+ ' } => <ref *1> [Map Iterator] {' ,
16131635 ' Uint8Array [' ,
16141636 ' [BYTES_PER_ELEMENT]: 1,' ,
16151637 ' [length]: 0,' ,
@@ -1620,7 +1642,7 @@ util.inspect(process);
16201642 ' foo: true' ,
16211643 ' }' ,
16221644 ' ],' ,
1623- ' [Circular]' ,
1645+ ' [Circular *1 ]' ,
16241646 ' },' ,
16251647 ' [size]: 2' ,
16261648 '}'
@@ -1648,15 +1670,15 @@ util.inspect(process);
16481670 ' [byteOffset]: 0,' ,
16491671 ' [buffer]: ArrayBuffer { byteLength: 0, foo: true }' ,
16501672 ' ],' ,
1651- ' [Set Iterator] { [ 1, 2, [length]: 2 ] } => [Map Iterator] {' ,
1673+ ' [Set Iterator] { [ 1, 2, [length]: 2 ] } => <ref *1> [Map Iterator] {' ,
16521674 ' Uint8Array [' ,
16531675 ' [BYTES_PER_ELEMENT]: 1,' ,
16541676 ' [length]: 0,' ,
16551677 ' [byteLength]: 0,' ,
16561678 ' [byteOffset]: 0,' ,
16571679 ' [buffer]: ArrayBuffer { byteLength: 0, foo: true }' ,
16581680 ' ],' ,
1659- ' [Circular]' ,
1681+ ' [Circular *1 ]' ,
16601682 ' },' ,
16611683 ' [size]: 2' ,
16621684 '}'
@@ -1688,7 +1710,7 @@ util.inspect(process);
16881710 ' [Set Iterator] {' ,
16891711 ' [ 1,' ,
16901712 ' 2,' ,
1691- ' [length]: 2 ] } => [Map Iterator] {' ,
1713+ ' [length]: 2 ] } => <ref *1> [Map Iterator] {' ,
16921714 ' Uint8Array [' ,
16931715 ' [BYTES_PER_ELEMENT]: 1,' ,
16941716 ' [length]: 0,' ,
@@ -1697,7 +1719,7 @@ util.inspect(process);
16971719 ' [buffer]: ArrayBuffer {' ,
16981720 ' byteLength: 0,' ,
16991721 ' foo: true } ],' ,
1700- ' [Circular] },' ,
1722+ ' [Circular *1 ] },' ,
17011723 ' [size]: 2 }'
17021724 ] . join ( '\n' ) ;
17031725
0 commit comments