diff options
Diffstat (limited to 'tests/language-feature')
| -rw-r--r-- | tests/language-feature/interfaces/assoctype-param.slang | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/language-feature/interfaces/assoctype-param.slang b/tests/language-feature/interfaces/assoctype-param.slang new file mode 100644 index 000000000..f2572484e --- /dev/null +++ b/tests/language-feature/interfaces/assoctype-param.slang @@ -0,0 +1,32 @@ +//TEST:INTERPRET(filecheck=CHECK): + +public interface IDataTrait { + public associatedtype InputType; + public static const int32_t kElementCount; +} + +public struct DataTrait0 : IDataTrait { + public typedef float InputType; + public static const int32_t kElementCount = 2; +} + +public interface IGenericInterface<Ti : IFloat> { + public Array<Di.InputType, Di.kElementCount> eval<Di : IDataTrait>(const Di.InputType interface_input); +} + +public struct GenericImpl<T : IFloat> : IGenericInterface<T> +{ + public Array<Dx.InputType, Dx.kElementCount> eval<Dx : IDataTrait>( + const Dx.InputType impl_input) + { + return makeArrayFromElement<Dx.InputType, Dx.kElementCount>(impl_input); + } +} + +void main() +{ + GenericImpl<float> f; + let rs = f.eval<DataTrait0>(1.0); + printf("result is %f\n", rs[0]); + // CHECK: result is 1.0 +} |
