I'd like to write something like the following code: #include "share/atspre_staload.hats" #include "share/atspre_define.hats"
typedef test = () -> int (* better type later *) typedef suite(data:t0ype,n:int) = @{ name = string, setup = (data -> void), teardown = (data -> void), tests = @[test][n] } fun foo_setup(a:int): void = println!("setting up") fun foo_teardown(a:int): void = println!("tearing down") fun baz(): int = let val () = println!("baz") in 3 end fun bar(): int = let val () = println!("bar") in 4 end var foo_tests = @[test][2](bar, baz) val foo : suite(int,2) = @{ name = "hello world", setup = foo_setup, teardown = foo_teardown, tests = foo_tests } implement main0() = let in println!("Hello, world!") end but the C compiler fails with these errors modules_dats.c:262:1: warning: parameter names (without types) in function declaration atstype_funptr atstyarr_field(atslab__tests) ; ^~~~~~~~~~~~~~ In file included from modules_dats.c:14:0: /usr/lib/ats2-postiats-0.3.7/ccomp/runtime/pats_ccomp_typedefs.h:176:31: error: field ‘atstyarr_field_undef’ declared as a function #define atstyarr_field(fname) atstyarr_field_undef(fname) ^ modules_dats.c:262:16: note: in expansion of macro ‘atstyarr_field’ atstype_funptr atstyarr_field(atslab__tests) ; ^~~~~~~~~~~~~~ modules_dats.c:269:1: warning: parameter names (without types) in function declaration atstype_funptr atstyarr_field(atslab__tests) ; ^~~~~~~~~~~~~~ In file included from modules_dats.c:14:0: /usr/lib/ats2-postiats-0.3.7/ccomp/runtime/pats_ccomp_typedefs.h:176:31: error: field ‘atstyarr_field_undef’ declared as a function #define atstyarr_field(fname) atstyarr_field_undef(fname) ^ modules_dats.c:269:16: note: in expansion of macro ‘atstyarr_field’ atstype_funptr atstyarr_field(atslab__tests) ; ^~~~~~~~~~~~~~ In file included from modules_dats.c:15:0: modules_dats.c: In function ‘ _057_home_057_andy_057_tmp_057_modules_057_modules_056_dats__dynload’: modules_dats.c:623:52: error: ‘postiats_tyrec_0 {aka struct <anonymous>}’ has no member named ‘atslab__tests’; did you mean ‘atslab__setup’? ATSINSstore_fltrec_ofs(statmp12, postiats_tyrec_1, atslab__tests, statmpref10) ; ^ /usr/lib/ats2-postiats-0.3.7/ccomp/runtime/pats_ccomp_instrset.h:321:61: note: in definition of macro ‘ATSINSstore_fltrec_ofs’ #define ATSINSstore_fltrec_ofs(tmp, tyrec, lab, val) ((tmp).lab = val) ^~ I would use viewtype lists instead of arrays, but the compiler complains about requiring fields to be of sort t0ype, not viewt0ype. Thanks, Andrew -- You received this message because you are subscribed to the Google Groups "ats-lang-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to ats-lang-users+unsubscr...@googlegroups.com. To post to this group, send email to ats-lang-users@googlegroups.com. Visit this group at https://groups.google.com/group/ats-lang-users. To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/c2552f4f-8c9a-45b3-9847-53740f4abeb6%40googlegroups.com.