From 6a23949f07f4eba38086b656e7073ce3bf8cd2fe Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 13 Jun 2025 22:13:00 -0700 Subject: Allow interface methods to have default implementations. (#7439) --- .../interfaces/default-method-generic.slang | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/language-feature/interfaces/default-method-generic.slang (limited to 'tests/language-feature/interfaces/default-method-generic.slang') diff --git a/tests/language-feature/interfaces/default-method-generic.slang b/tests/language-feature/interfaces/default-method-generic.slang new file mode 100644 index 000000000..48e1d98de --- /dev/null +++ b/tests/language-feature/interfaces/default-method-generic.slang @@ -0,0 +1,36 @@ +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj -output-using-type + +// Test that a generic interface method can have a body providing default implementation. + +interface IFoo +{ + int getVal(); + int getGreaterVal() + { + return getVal() + x; + } +} + +struct Impl : IFoo +{ + int getVal() + { + return 42; + } + + // Using the default implementation for getGreaterVal. +} + +int test(T v) { return v.getGreaterVal<1>(); } + +//TEST_INPUT: set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4) +RWStructuredBuffer resultBuffer; + +[numthreads(1,1,1)] +void computeMain() +{ + Impl impl = {}; + int result = test(impl); + resultBuffer[0] = result; + // CHECK: 43 +} \ No newline at end of file -- cgit v1.2.3