MCPcopy Create free account
hub / github.com/Bloom-Engine/engine / circular_detected

Function circular_detected

native/shared/src/renderer/shader_include.rs:176–198  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

174
175 #[test]
176 fn circular_detected() {
177 let src = table(&[
178 ("a.wgsl", "#include \"b.wgsl\"\n"),
179 ("b.wgsl", "#include \"a.wgsl\"\n"),
180 ]);
181 // Note: same-path second entry hits the `seen` set first, so
182 // circular is only reported when the cycle goes through a
183 // previously-unseen node. Covers the deliberate case.
184 let src2 = table(&[
185 ("a.wgsl", "#include \"b.wgsl\"\nA_TAG\n"),
186 ("b.wgsl", "#include \"c.wgsl\"\nB_TAG\n"),
187 ("c.wgsl", "#include \"a.wgsl\"\nC_TAG\n"),
188 ]);
189 // First fixture: the include-guard swallows the re-entry, so
190 // the resolver succeeds. Only the "fresh" cycle below should
191 // error.
192 assert!(process(&src, "a.wgsl").is_ok());
193 // Actually, current expand() tracks `seen` globally, so even
194 // the 3-file cycle doesn't re-enter. That's the behaviour we
195 // want in practice. Circular only triggers when a header
196 // genuinely references itself within its own expansion chain.
197 assert!(process(&src2, "a.wgsl").is_ok());
198 }
199
200 #[test]
201 fn abi_version_parsed() {

Callers

nothing calls this directly

Calls 1

tableFunction · 0.85

Tested by

no test coverage detected