//TEST:SIMPLE(filecheck=CHECK_FAIL): -target spirv -entry computeMain -stage compute -DFAIL //TEST:SIMPLE(filecheck=CHECK_PASS): -target spirv -entry computeMain -stage compute //TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK): -slang -compute -shaderobj -output-using-type interface ITwoParamGeneric { int getVal(); } struct Foo : ITwoParamGeneric { int val = 0; int getVal() { return val; } } struct NotPrimitiveCastable { double data; } extension Foo where int(A) #ifdef FAIL where NotPrimitiveCastable(B) #else where float(B) #endif { [mutating] void setVal(int dataIn) { val = dataIn; } } //TEST_INPUT: set outBuffer = out ubuffer(data=[0 0 0 0], stride=4) RWStructuredBuffer outBuffer; void computeMain() { //CHECK_FAIL: error 30027:{{.*}}'setVal'{{.*}}'Foo'. //CHECK_PASS: OpEntryPoint //CHECK: 3 Foo x = Foo(); x.setVal(3); outBuffer[0] = x.getVal(); }