<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/language-feature/modules/error-in-nested-import/error-in-nested-import.slang.expected, branch master</title>
<subtitle>Making it easier to work with shaders</subtitle>
<id>https://git.yummers.dev/slang.git/atom?h=master</id>
<link rel='self' href='https://git.yummers.dev/slang.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/'/>
<updated>2021-06-06T16:27:19+00:00</updated>
<entry>
<title>Include a "stack trace" with nested-import errors (#1872)</title>
<updated>2021-06-06T16:27:19+00:00</updated>
<author>
<name>T. Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2021-06-06T16:27:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=688d5fa6eb2c7f5281e50ace1401737479911ebc'/>
<id>urn:sha1:688d5fa6eb2c7f5281e50ace1401737479911ebc</id>
<content type='text'>
* Include a "stack trace" with nested-import errors

When errors occur in nested `#include` files it is often helpful to have a "stack trace" / traceback of the `#include` chain that led from a root translation unit to the file with an error.

This change implements a similar feature for `import`s.

It is worth noting that `import`s don't really *require* this kind of compiler support the way `#include`s do because the intention is that the meaning of an `import`ed file does not depend on the order or nesting of `import`s. As such, when trying to *fix* an error in an `import`ed file, you usually don't care how it came to be `import`ed into your shaders.

The use case here is somebody adapting a large body of Slang code to use in a different codebase, such that they have certain `.slang` files they don't actually intend to have compile correctly, and they want to be able to diagnose how they came to include those files when/if they cause problems.

The actual feature implementation is pretty simple because we already track a stack of active `import`s so that we can detect and diagnose recursive `import`s. This change simply changes the disagnostics when there is an error in imported code so that instead of just noting the inner-most `import` site it lists all the `import` sites that were active at the time.

The change includes a test case to confirm that the behavior works (at least for the case of a parse error).

* fixup: test outputs

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;
Co-authored-by: jsmall-nvidia &lt;jsmall@nvidia.com&gt;</content>
</entry>
</feed>
