diff options
| author | Yong He <yonghe@outlook.com> | 2017-12-26 21:04:53 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-26 21:04:53 -0500 |
| commit | 69242398be1ba76898c0d6541eec3b7ca0ec1ab4 (patch) | |
| tree | dd9649f2ae7bb04eae9c119f88c469f17638b1be /tests | |
| parent | d1c38523d4bfbb6672baca9973013538b549bfae (diff) | |
| parent | fd0b8ca60e62bbc51b2be220f985dc3cc0d6dc82 (diff) | |
Merge pull request #330 from tfoleyNV/implicit-generic-app
Support generic type constraints when implicitly invoking generic
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/compute/implicit-generic-app.slang | 40 | ||||
| -rw-r--r-- | tests/compute/implicit-generic-app.slang.expected.txt | 4 |
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/compute/implicit-generic-app.slang b/tests/compute/implicit-generic-app.slang new file mode 100644 index 000000000..d917a5f9a --- /dev/null +++ b/tests/compute/implicit-generic-app.slang @@ -0,0 +1,40 @@ +//TEST(compute):COMPARE_COMPUTE:-xslang -use-ir + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out + +// Testing that we can implicitly specialize a generic +// that has a constrained type parameter. + + +interface ISimple +{ + int getVal(); +} + +struct Simple : ISimple +{ + int val; + + int getVal() { return val; } +}; + +int doIt<T : ISimple>(T obj) +{ + return obj.getVal(); +} + +int test(int val) +{ + Simple simple; + simple.val = val; + return doIt(simple); +} + +RWStructuredBuffer<int> outputBuffer : register(u0); +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + int tid = (int) dispatchThreadID.x; + int outVal = test(tid); + outputBuffer[tid] = outVal; +}
\ No newline at end of file diff --git a/tests/compute/implicit-generic-app.slang.expected.txt b/tests/compute/implicit-generic-app.slang.expected.txt new file mode 100644 index 000000000..bc856dafa --- /dev/null +++ b/tests/compute/implicit-generic-app.slang.expected.txt @@ -0,0 +1,4 @@ +0 +1 +2 +3 |
