<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/language-feature/interfaces, 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>2025-07-24T23:47:21+00:00</updated>
<entry>
<title>Avoid early specialization for witness tables in SimplifyIR (#7636)</title>
<updated>2025-07-24T23:47:21+00:00</updated>
<author>
<name>Jay Kwak</name>
<email>82421531+jkwak-work@users.noreply.github.com</email>
</author>
<published>2025-07-24T23:47:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=138efb9c25aadd319db6e6300a263574d90e3391'/>
<id>urn:sha1:138efb9c25aadd319db6e6300a263574d90e3391</id>
<content type='text'>
* Avoid early specialization for witness tables in SimplifyIR

Prevents SimplifyIR from prematurely specializing witness tables before
the main specialization pass. Witness tables are hoistable immutable
objects that must maintain consistent signatures to avoid incorrect
deduplication. SimplifyIR was incorrectly transforming expressions like
"witness_table_t(%IFoo)(specialize(%7, %GenericValue4))" into
"witness_table_t(%IFoo)(%Foo)" even when %GenericValue4 was unused.

Fixes #7233

* Add a missing test file</content>
</entry>
<entry>
<title>Fix confusing error messages for interface return type mismatches (#7854)</title>
<updated>2025-07-24T07:47:26+00:00</updated>
<author>
<name>Copilot</name>
<email>198982749+Copilot@users.noreply.github.com</email>
</author>
<published>2025-07-24T07:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=2d23a962766a97cbb11bcee5483a66aec923da49'/>
<id>urn:sha1:2d23a962766a97cbb11bcee5483a66aec923da49</id>
<content type='text'>
* Initial plan

* Add improved diagnostic for interface return type mismatches

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Complete fix for interface return type mismatch error reporting

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Move diagnostic to synthesis phase for better interface return type mismatch errors

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Remove extraneous test file and update .gitignore

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Add diagnostic test for interface return type mismatch and apply formatting

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Address feedback: restore whitespace and use filecheck for diagnostic test

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Fix logic error in return type mismatch detection

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Remove unnecessary flag by using out parameter for diagnostic tracking

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Refactor witness synthesis failure reporting to use structured approach

Replace ad-hoc `outSpecificDiagnosticEmitted` parameter with `WitnessSynthesisFailureReason` enum and `MethodWitnessSynthesisFailureDetails` struct as requested in code review. This provides:

- Clear taxonomy of failure reasons (General, MethodResultTypeMismatch, MethodParameterMismatch)
- Centralized diagnostic emission in findWitnessForInterfaceRequirement
- Better extensibility for future failure types
- Improved maintainability by removing state tracking flags

The return type mismatch diagnostic continues to work correctly, showing error 38106 with precise location information.

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Remove unused MethodParameterMismatch enum and duplicate code

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Remove redundant requiredMethod field from MethodWitnessSynthesisFailureDetails

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Address feedback: add outFailureDetails guard and remove unnecessary hasReturnTypeError variable

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Fix regression: restore original diagnostic message for mutating method mismatch

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Fix.

* Fix.

* Remove `innerSink`.

* Print candidates considered  for interface match upon error.

* Fix tests.

---------

Co-authored-by: copilot-swe-agent[bot] &lt;198982749+Copilot@users.noreply.github.com&gt;
Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;
Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Fix unnecessary Int64 SPIRV capability usage in pointer marshalling (#7717)</title>
<updated>2025-07-11T22:27:28+00:00</updated>
<author>
<name>Copilot</name>
<email>198982749+Copilot@users.noreply.github.com</email>
</author>
<published>2025-07-11T22:27:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=704d0c7109cf066f4b311e55a141f117f76c0672'/>
<id>urn:sha1:704d0c7109cf066f4b311e55a141f117f76c0672</id>
<content type='text'>
* Initial plan

* Fix unnecessary Int64 SPIRV capability usage in pointer marshalling

Replace uint64-based pointer marshalling with uint2-based approach to avoid requiring Int64 capability in SPIRV output. This affects both basic type marshalling and resource handle marshalling for pointer types.

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Replace test cases with user-provided test case

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

* Fix test case to avoid unrelated pointer casting operations that require Int64

Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;

---------

Co-authored-by: copilot-swe-agent[bot] &lt;198982749+Copilot@users.noreply.github.com&gt;
Co-authored-by: csyonghe &lt;2652293+csyonghe@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Fix issue in match parameter type that depend on an associatedtype. (#7707)</title>
<updated>2025-07-11T04:11:46+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2025-07-11T04:11:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=7764b83d24d341334ca7c1693cae2472be8f8d99'/>
<id>urn:sha1:7764b83d24d341334ca7c1693cae2472be8f8d99</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Require `override` keyword for overriding default interface methods. (#7458)</title>
<updated>2025-06-17T03:37:27+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2025-06-17T03:37:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=a4345725a083651c16795d27fedd769f2d7e55ae'/>
<id>urn:sha1:a4345725a083651c16795d27fedd769f2d7e55ae</id>
<content type='text'>
* Require `override` keyword for overriding default interface methods.

* Update doc.

* Fix test.</content>
</entry>
<entry>
<title>Allow interface methods to have default implementations. (#7439)</title>
<updated>2025-06-14T05:13:00+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2025-06-14T05:13:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=6a23949f07f4eba38086b656e7073ce3bf8cd2fe'/>
<id>urn:sha1:6a23949f07f4eba38086b656e7073ce3bf8cd2fe</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make interface types non c-style in Slang2026. (#7260)</title>
<updated>2025-06-04T20:05:58+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2025-06-04T20:05:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=812e478989e27983b8dea7ab11964de751654ba2'/>
<id>urn:sha1:812e478989e27983b8dea7ab11964de751654ba2</id>
<content type='text'>
* Make interface types non c-style.

* Make Optional&lt;T&gt; work with autodiff and existential types.

* Fix.

* patch behind slang 2026.

* Fix warnings.

* cleanup.

* Fix tests.

* Fix.

* Fix com interface lowering.

* Add comment to test.

* regenerate command line reference

* Add test for passing `none` to autodiff function.

* Fix recording of `getDynamicObjectRTTIBytes`.

* Fix nested Optional types.

---------

Co-authored-by: slangbot &lt;186143334+slangbot@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Fix a bug in default ctor synthesizing (#6527)</title>
<updated>2025-03-07T04:38:28+00:00</updated>
<author>
<name>kaizhangNV</name>
<email>149626564+kaizhangNV@users.noreply.github.com</email>
</author>
<published>2025-03-07T04:38:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=e1952dc8cf8f5b62d00ce114e353c5390cc6c37a'/>
<id>urn:sha1:e1952dc8cf8f5b62d00ce114e353c5390cc6c37a</id>
<content type='text'>
* Fix a bug in default ctor synthesizing

- This is fix for the implementation bug, when a struct has explicit ctor
  we should not synthesize the default ctor anymore.

- When invoke the synthesized ctor converted from initializer list, we should
  check if the struct is a c-style type if it struct has no synthesized ctor. In this
  case we should report error because it's invalid to use initializer list here.

- The only exception is the unsized array, we still have to fall back to use the
  legacy initializer list logic to initialize the unsized array until we formalize a
  proper solution.

- update test.</content>
</entry>
<entry>
<title>Feature/initialize list side branch (#6058)</title>
<updated>2025-02-05T18:37:03+00:00</updated>
<author>
<name>kaizhangNV</name>
<email>149626564+kaizhangNV@users.noreply.github.com</email>
</author>
<published>2025-02-05T18:37:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=9ec6b91686b651d959fd9ffbec283845bd725dd6'/>
<id>urn:sha1:9ec6b91686b651d959fd9ffbec283845bd725dd6</id>
<content type='text'>
* SP004: implement initialize list translation to ctor

- We synthesize a member-wise constructor for each struct follow
   the rules described in SP004.
- Add logic to translate the initialize list to constructor invoke
- Add cuda-host decoration for the synthesized constructor
- Remove the default constructor when we have a valid member init constructor
- Disable -zero-initialize option, will re-implement it in followup (#6109).
- Fix the overload lookup issue
    When creating invoke expression for ctor, we need to call
    ResolveInvoke() to find us the best candidates, however
    the existing lookup logic could find us the base constructor
    for child struct, we should eliminate this case by providing
    the LookupOptions::IgnoreInheritance to lookup, this requires
    us to create a subcontext on SemanticsVisitor to indicate that
    we only want to use this option on looking the constructor.
- Do not implicit initialize a struct that doesn't have explicit default
   constructor.

Co-authored-by: slangbot &lt;186143334+slangbot@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Fix exact-match witness synthesis for static functions (#6204)</title>
<updated>2025-01-29T02:24:35+00:00</updated>
<author>
<name>Darren Wihandi</name>
<email>65404740+fairywreath@users.noreply.github.com</email>
</author>
<published>2025-01-29T02:24:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=cf66563cfdcff9b7d76017e5b73319705ccdb735'/>
<id>urn:sha1:cf66563cfdcff9b7d76017e5b73319705ccdb735</id>
<content type='text'>
* fix non-static methods when trying to synthesize method requirement witness

* add tests

* update test

* improve test

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
</feed>
