<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/language-feature/inheritance/struct-inheritance-import.slang, 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>2022-08-18T06:08:34+00:00</updated>
<entry>
<title>Warning on lossy implicit casts. (#2367)</title>
<updated>2022-08-18T06:08:34+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2022-08-18T06:08:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=adaea0e993fd8db351b5dad92802e47ed6d0ec77'/>
<id>urn:sha1:adaea0e993fd8db351b5dad92802e47ed6d0ec77</id>
<content type='text'>
* Warning on bool to float conversion.

* Fix test cases.

* Improve.

* LanguageServer: don't show constant value for non constant variables.

* Fix tests.

* Fix warnings in tests.

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>Fix a bug in struct inheritance (#1861)</title>
<updated>2021-05-27T20:40:17+00:00</updated>
<author>
<name>T. Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2021-05-27T20:40:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=63dcc7acf4784d95407866730a70f5d37d391b88'/>
<id>urn:sha1:63dcc7acf4784d95407866730a70f5d37d391b88</id>
<content type='text'>
During lowering from AST to IR, the Slang compiler translates code that uses `struct` inheritance:

```hlsl
struct Base { int a; }
struct Derived : Base {}
```

into code where the inheritance relationship is "witnessed" by a simple field:

```hlsl
struct Base { int a; }
struct Derived { Base __anonymous_field__; }
```

The underlying bug here is that the `__anonymous_field__` that the compiler generated during IR lowering was not being given any linkage decorations (no mangled name). As a result, if multiple separately-compiled modules all access that field they could disagree on its identity as an IR instruction. This could lead to output code being generated where the declaration of `__anonymous_field__` uses one IR instruction, but accesses use another.

This change includes a fix for the issue, and a test that serves as a reproducer for the original problem.</content>
</entry>
</feed>
