diff options
Diffstat (limited to 'tests')
4 files changed, 53 insertions, 0 deletions
diff --git a/tests/diagnostics/interface-requirement-not-satisfied.slang.expected b/tests/diagnostics/interface-requirement-not-satisfied.slang.expected index d7614186b..464ffde25 100644 --- a/tests/diagnostics/interface-requirement-not-satisfied.slang.expected +++ b/tests/diagnostics/interface-requirement-not-satisfied.slang.expected @@ -3,6 +3,7 @@ standard error = { tests/diagnostics/interface-requirement-not-satisfied.slang(10): error 38100: type 'T' does not provide required interface member 'bar' struct T : IFoo ^~~~ +tests/diagnostics/interface-requirement-not-satisfied.slang(7): note: see declaration of 'bar' } standard output = { } diff --git a/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected b/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected index 3c9ef58d5..cc4f310ad 100644 --- a/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected +++ b/tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang.expected @@ -3,6 +3,7 @@ standard error = { tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang(10): error 38100: type 'Counter' does not provide required interface member 'processValue' struct Counter : IThing ^~~~~~ +tests/diagnostics/interfaces/mutating-impl-of-non-mutating-req.slang(7): note: see declaration of 'processValue' } standard output = { } diff --git a/tests/language-feature/parameters/generic-func-param-default-arg.slang b/tests/language-feature/parameters/generic-func-param-default-arg.slang new file mode 100644 index 000000000..b7e8d6fa2 --- /dev/null +++ b/tests/language-feature/parameters/generic-func-param-default-arg.slang @@ -0,0 +1,47 @@ +// generic-func-param-default-arg.slang + +// Test that generic functions can have default argument values on their parameters. + +//TEST(compute):COMPARE_COMPUTE: -shaderobj +//TEST_DISABLED:SIMPLE:-target hlsl -entry computeMain -dump-ir + + +interface IValue +{ + __init(); + + This plusA(This other); + This plusB(int other); +} + +T sum<T : IValue>(T value, T other = T(), int extra = 0) +{ + return value.plusA(other).plusB(extra); +} + +struct Simple : IValue +{ + int val; + + __init() { val = 0; } + __init(int val) { this.val = val; } + + Simple plusA(Simple other) { return Simple(val + other.val); } + Simple plusB(int other) { return Simple(val + other); } +} + +int test(int val) +{ + let s = Simple(val); + return sum<Simple>(s).val + 16*sum(s).val; +} + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=gBuffer +RWStructuredBuffer<int> gBuffer; + +[shader("compute")] +[numthreads(4)] +void computeMain(int tid : SV_DispatchThreadID) +{ + gBuffer[tid] = test(tid); +} diff --git a/tests/language-feature/parameters/generic-func-param-default-arg.slang.expected.txt b/tests/language-feature/parameters/generic-func-param-default-arg.slang.expected.txt new file mode 100644 index 000000000..d4cb1cc00 --- /dev/null +++ b/tests/language-feature/parameters/generic-func-param-default-arg.slang.expected.txt @@ -0,0 +1,4 @@ +0 +11 +22 +33 |
