File tree Expand file tree Collapse file tree 1 file changed +16
-12
lines changed
Expand file tree Collapse file tree 1 file changed +16
-12
lines changed Original file line number Diff line number Diff line change @@ -394,26 +394,30 @@ final class Utils {
394394 final HashSet visited = HashSet .identity ()..add (root);
395395
396396 while (stack.isNotEmpty) {
397- final node = stack.removeLast ();
397+ final Object node = stack.removeLast ();
398398
399399 if (node is Map ) {
400- // Iterate over a snapshot of entries to allow safe removal while iterating
401- final List <MapEntry > entries = List .of (node.entries);
402- for (final MapEntry e in entries) {
403- switch (e.value) {
400+ for (final key in List <String >.from (node.keys)) {
401+ final value = node[key];
402+ switch (value) {
404403 case Undefined ():
405- node.remove (e.key);
406- case Map () || List () when visited.add (e.value):
407- stack.add (e.value);
404+ node.remove (key);
405+ case Map () || List () when visited.add (value):
406+ stack.add (value);
407+ default :
408+ break ;
408409 }
409410 }
410411 } else if (node is List ) {
411412 for (int i = node.length - 1 ; i >= 0 ; i-- ) {
412413 final v = node[i];
413- if (v is Undefined ) {
414- node.removeAt (i);
415- } else if (v is Map || v is List ) {
416- if (visited.add (v)) stack.add (v);
414+ switch (v) {
415+ case Undefined ():
416+ node.removeAt (i);
417+ case Map () || List () when visited.add (v):
418+ stack.add (v);
419+ default :
420+ break ;
417421 }
418422 }
419423 }
You can’t perform that action at this time.
0 commit comments