<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/compute/generic-interface-method.slang.expected.txt, 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>2017-11-08T00:09:40+00:00</updated>
<entry>
<title>Support generic interface methods (#251)</title>
<updated>2017-11-08T00:09:40+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2017-11-08T00:09:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=6e591ada0eb652c320bba4bd8a46cd579946df01'/>
<id>urn:sha1:6e591ada0eb652c320bba4bd8a46cd579946df01</id>
<content type='text'>
* improve diagnostic messages and prevent fatal errors from crashing the compiler.

* fix top level exception catching.

* spelling fix

* change wording of invalidSwizzleExpr diagnostic

* add speculative GenericsApp expr parsing

* add new test case of cascading generics call.

* Fixing bugs in compiling cascaded generic function calls.

Add implementation of DeclaredSubTypeWitness::SubstituteImpl()

This is not needed by the type checker, but needed by IR specialization. When input source contains cascading generic function call, the arguments to `specialize` instruction is currently represented as a substitution. The arg values of this subsittution can be a `DeclaredSubTypeWitness` when a generic function uses one of its generic parameter to specialize another generic function. When the top level generics function is being specialized, this substitution argument, which is a `DeclaredSubTypeWitness`, needs to be substituted with the witness that used to specialize the top level function in the specialized specialize instruction as well.

* add a test case for cascading generic function call.

* parser bug fix

* fixes #255

* add test case for issue #255

* Generate missing `specialize` instruction when calling a generic method from an interface constraint.

When calling a generic method via an interface, we should be generating the following ir:
...
f = lookup_interface_method(...)
f_s = specailize(f, declRef)
...

This commit fixes this  `emitFuncRef` function to emit the needed `specialize` instruction.

* fixes #260

This fix follows the second apporach in the disucssion. It generated mangled name for specialized functions by appending new substitution type names to the original mangled name.

* Disabling removing and re-inserting specailized functions in getSpecalizeFunc()

I am not sure why it is needed, it seems HLSL and GLSL backends are generating forward declarations anyways, so the order of functions in IRModule shouldn't matter.

* cleanup and complete test cases.

* fix warnings
</content>
</entry>
</feed>
