diff options
Diffstat (limited to 'tests/language-feature/interfaces')
| -rw-r--r-- | tests/language-feature/interfaces/generic-value-parameter-via-interface.slang | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/language-feature/interfaces/generic-value-parameter-via-interface.slang b/tests/language-feature/interfaces/generic-value-parameter-via-interface.slang new file mode 100644 index 000000000..abc1131e8 --- /dev/null +++ b/tests/language-feature/interfaces/generic-value-parameter-via-interface.slang @@ -0,0 +1,44 @@ +//TEST:INTERPRET(filecheck=CHECK): + +interface IFoo +{ + void test(); +}; + +struct Foo<let GenericValue : uint> : IFoo +{ + void test() + { + printf("GenericValue=%d, value=%d\n", GenericValue, value); + } + + uint value; +}; + +void testInterfaceAsParameter(IFoo foo) +{ + foo.test(); +} + +void testInterfaceAsGeneric<T:IFoo>(T foo) +{ + foo.test(); +} + +void main() +{ + // CHECK-COUNT-2:GenericValue=0, value=0 + Foo<0> foo0 = {0}; + testInterfaceAsParameter(foo0); + testInterfaceAsGeneric(foo0); + + // CHECK-COUNT-2:GenericValue=1, value=1 + Foo<1> foo1 = {1}; + testInterfaceAsParameter(foo1); + testInterfaceAsGeneric(foo1); + + // CHECK-COUNT-2:GenericValue=2, value=2 + Foo<2> foo2 = {2}; + testInterfaceAsParameter(foo2); + testInterfaceAsGeneric(foo2); +} |
