aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-03-24 03:16:41 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2023-03-24 03:16:41 +0200
commit3bd9103ce0b18f6900ba544a8b2786145868524f (patch)
tree235ed722d5058ee0c2bf32d7c0eabd9f581e9273 /tests
parent5b038666c3e911ffeb78a4d656044e5bd076705b (diff)
downloadek-3bd9103ce0b18f6900ba544a8b2786145868524f.tar.gz
ek-3bd9103ce0b18f6900ba544a8b2786145868524f.zip
struct initializers
Diffstat (limited to 'tests')
-rw-r--r--tests/structs.cu48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/structs.cu b/tests/structs.cu
new file mode 100644
index 0000000..24e520e
--- /dev/null
+++ b/tests/structs.cu
@@ -0,0 +1,48 @@
+type any {}
+
+struct basic_struct {
+ a i64;
+ b i64;
+ c i64;
+}
+
+struct complex_struct (A any, B any, C any) {
+ a A;
+ b B;
+ c C;
+}
+
+main()
+{
+ /* infer types */
+ simple_named const = {.a = 1, .b = 2, .c = 3} as basic_struct;
+ simple_ordinal const = {1, 2, 3} as basic_struct;
+ simple_mixed const = {1, .b = 2, 3} as basic_struct;
+
+ complex_named const = {.a = 1, .b = 2, .c = 3} as complex_struct;
+ /* should parentheses be required around typeof? */
+ complex_ordinal const = {1, 2, 3} as complex_named;
+ complex_mixed const = {1, .b = 2, 3} as complex_struct;
+
+ /* force types */
+ force_named complex_struct(u32, u32, u32) = {.a = 1, .b = 2, .c = 3};
+ force_ordinal typeof force_named = {1, 2, 3};
+ force_mixed typeof force_ordinal = {1, .b = 2, 3};
+
+ force_inferred_named mut = {.a = 1, .b = 2, .c = 3} as
+ complex_struct(u32, u32, u32);
+
+ force_inferred_ordinal mut = {1, 2, 3} as
+ complex_struct(u32, u32, u32);
+
+ force_inferred_mixed mut = {1, .b = 2, 3} as
+ complex_struct(u32, u32, u32);
+
+ /* shouldn't be compileable due to not enough type info */
+ // error_named const = {.a = 1, .b = 2, .c = 3};
+
+ /* types should be inferred */
+ force_inferred_named = {.a = 2, .b = 3, .c = 4};
+ force_inferred_ordinal = {2, 3, 4};
+ force_inferred_mixed = {2, .b = 3, 4};
+}