mirror of https://github.com/sveltejs/svelte
				
				
				
			fix: avoid recursion error when tagging circular references (#16622)
	
		
	
				
					
				
			* fix: avoid recursion error when tagging circular references * try suggestion * add some logging * make logging clearer * more * try this * add test * tweak * fix? * fix??pull/16630/head
							parent
							
								
									ad19a1a0f5
								
							
						
					
					
						commit
						a543559acf
					
				@ -0,0 +1,5 @@
 | 
				
			||||
---
 | 
				
			||||
'svelte': patch
 | 
				
			||||
---
 | 
				
			||||
 | 
				
			||||
fix: avoid recursion error when tagging circular references
 | 
				
			||||
@ -0,0 +1,26 @@
 | 
				
			||||
import { test } from '../../test';
 | 
				
			||||
import { normalise_trace_logs } from '../../../helpers.js';
 | 
				
			||||
 | 
				
			||||
export default test({
 | 
				
			||||
	compileOptions: {
 | 
				
			||||
		dev: true
 | 
				
			||||
	},
 | 
				
			||||
 | 
				
			||||
	test({ assert, logs }) {
 | 
				
			||||
		const files = { id: 1, items: [{ id: 2, items: [{ id: 3 }, { id: 4 }] }] };
 | 
				
			||||
		// @ts-expect-error
 | 
				
			||||
		files.items[0].parent = files;
 | 
				
			||||
		assert.deepEqual(normalise_trace_logs(logs), [
 | 
				
			||||
			{ log: 'test (main.svelte:5:4)' },
 | 
				
			||||
			{ log: '$state', highlighted: true },
 | 
				
			||||
			{ log: 'filesState.files', highlighted: false },
 | 
				
			||||
			{ log: files },
 | 
				
			||||
			{ log: '$state', highlighted: true },
 | 
				
			||||
			{ log: 'filesState.files.items[0].parent.items', highlighted: false },
 | 
				
			||||
			{ log: files.items },
 | 
				
			||||
			{ log: '$state', highlighted: true },
 | 
				
			||||
			{ log: 'filesState.files.items[0].parent.items[0]', highlighted: false },
 | 
				
			||||
			{ log: files.items[0] }
 | 
				
			||||
		]);
 | 
				
			||||
	}
 | 
				
			||||
});
 | 
				
			||||
@ -0,0 +1,10 @@
 | 
				
			||||
<script>
 | 
				
			||||
    const filesState = $state({ files: {} });
 | 
				
			||||
    let nodes = { id: 1, items: [{ id: 2, items: [{ id: 3 }, { id: 4 }] }] };
 | 
				
			||||
    filesState.files = nodes;
 | 
				
			||||
    function test() {
 | 
				
			||||
        $inspect.trace();
 | 
				
			||||
        filesState.files.items[0].parent = filesState.files;
 | 
				
			||||
    }
 | 
				
			||||
    $effect(test);
 | 
				
			||||
</script>
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue