Ok, so I've been able to get the "dict" type to be abstract, but I can't seem to get "bucket" to be abstract. I tried adding the "= ptr" part you suggested, but I'm not having any luck. Using your solution, the code will compile, unless I test the "dict" type by calling "dict_new" & "dict_delete." Looking at the error messages, the problem appears to be related to the "dict_delete" call, and I've provided the error below so you can see for yourself. I know that there are a lot of details missing, so let me know if you'd like me to provide any more details.
Error message: In file included from dict_dats.c:15: dict_dats.c: In function ‘loop_95__95__1’: dict_dats.c:6190:28: error: ‘PMVtmpltcstmat’ undeclared (first use in this function) 6190 | ATSINSmove_void(tmp195__1, PMVtmpltcstmat[0](array_uninitize$clear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ^~~~~~~~~~~~~~ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ dict_dats.c:6190:28: note: each undeclared identifier is reported only once for each function it appears in 6190 | ATSINSmove_void(tmp195__1, PMVtmpltcstmat[0](array_uninitize$clear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ^~~~~~~~~~~~~~ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ dict_dats.c:6190:46: error: ‘array_uninitize$clear’ undeclared (first use in this function) 6190 | ATSINSmove_void(tmp195__1, PMVtmpltcstmat[0](array_uninitize$clear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ^~~~~~~~~~~~~~~~~~~~~ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ dict_dats.c:6190:68: warning: implicit declaration of function ‘S2Eapp’ [-Wimplicit-function-declaration] 6190 | ATSINSmove_void(tmp195__1, PMVtmpltcstmat[0](array_uninitize$clear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ^~~~~~ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ dict_dats.c:6190:75: warning: implicit declaration of function ‘S2Ecst’ [-Wimplicit-function-declaration] 6190 | ATSINSmove_void(tmp195__1, PMVtmpltcstmat[0](array_uninitize$clear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ^~~~~~ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ dict_dats.c:6190:82: error: ‘BUCKET’ undeclared (first use in this function) 6190 | ATSINSmove_void(tmp195__1, PMVtmpltcstmat[0](array_uninitize$clear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ^~~~~~ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ dict_dats.c:6190:89: error: expected ‘)’ before ‘;’ token 6190 | move_void(tmp195__1, PMVtmpltcstmat[0](array_uninitize$clear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ~ ^ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ dict_dats.c:6190:145: error: expected expression before ‘)’ token 6190 | lear<S2Eapp(S2Ecst(BUCKET); S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))>)(arg2, ATSPMVrefarg1(arg0))) ; | ^ /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: note: in definition of macro ‘ATSINSmove_void’ 284 | #define ATSINSmove_void(tmp, command) command | ^~~~~~~ On Tuesday, December 7, 2021 at 8:08:48 AM UTC-5 d4v3y_5c0n3s wrote: > Thanks, I tried something similar with the "dict" type, but completely > overlooked the "bucket" type. I'll test this to see if it resolves the > issue. > > On Wednesday, December 1, 2021 at 12:28:15 AM UTC-5 gmhwxi wrote: > >> After taking a quick look at dict.sats, I spotted the following line: >> >> absvtype bucket(a:vt@ype) >> >> which should be change to the following one: >> >> absvtype bucket(a:vt@ype) = ptr // ptr takes the compiler the size of >> bucket >> >> The simple reason is that the compiler needs to know the size of an >> abstract type in order to compile it to a type in C. >> >> >> On Wednesday, December 1, 2021 at 12:16:34 AM UTC-5 gmhwxi wrote: >> >>> I don't quite understand. >>> Templates in ATS2 are supposed to be working with abstract types. >>> >>> If I could try precisely what you did on your machine, then I may be >>> able to suggest something. >>> >>> >>> >>> On Tue, Nov 30, 2021 at 8:27 PM d4v3y_5c0n3s <tmj...@gmail.com> wrote: >>> >>>> Update 2: >>>> After investigating the prelude, I've determined that templates in ATS2 >>>> just conflict with abstract types in some instances. For this reason, it >>>> seems that in many parts of the prelude avoided the use of the "assume" >>>> keyword with template-heavy code. >>>> >>>> On Tuesday, November 30, 2021 at 7:08:48 PM UTC-5 d4v3y_5c0n3s wrote: >>>> >>>>> Update: >>>>> I was able to get the code I provided above running by staloading the >>>>> dict.dats file from the dict_test.dats file using " staload _ = >>>>> "./dict.dats" ". Now, my only problem is that if I make the "dict" & >>>>> bucket types abstract, the templates stop working. >>>>> >>>>> On Tuesday, November 30, 2021 at 1:39:39 PM UTC-5 d4v3y_5c0n3s wrote: >>>>> >>>>>> You are right, including " share/atspre_staload.hats" causes the code >>>>>> to compile. However, I'm still having issues. You see, the code I >>>>>> provided I had taken from a static (.sats) and dynamic (.dats) file in >>>>>> order to make it more presentable when asking for help. Your fix only >>>>>> fixes the issue in the single-file version, and when including the >>>>>> external >>>>>> static file it doesn't work. Do you know what might be going wrong? >>>>>> I'll >>>>>> provide the (simplified) contents of each of these files below. >>>>>> >>>>>> *dict.sats*: >>>>>> #include "share/atspre_staload.hats" >>>>>> >>>>>> >>>>>> datavtype BUCKET (a:vt@ype) = >>>>>> | bucket_empty of () >>>>>> | bucket_filled of (Strptr1, a, BUCKET(a)) >>>>>> >>>>>> vtypedef bucket(a:vt@ype) = BUCKET(a) >>>>>> >>>>>> fn{a:vt@ype} bucket_item$delete ( x: a ): void >>>>>> >>>>>> fun{a:vt@ype} bucket_delete_recursive ( b: bucket(a) ) : void >>>>>> >>>>>> sortdef dsz = {s:int | s > 0} >>>>>> >>>>>> vtypedef dict(a:vt@ype, n:int) = >>>>>> @{ >>>>>> size=int n, >>>>>> buckets=arrayptr(bucket(a), n) >>>>>> } >>>>>> >>>>>> fn{a:vt@ype} dict_new {s:dsz} ( int s ) : dict(a, s) >>>>>> fn{a:t@ype} dict_delete {s:dsz} ( d: dict(a, s) ) : void >>>>>> fn{a:vt@ype} dict_delete_lin {s:dsz} ( d: dict(a, s) ) : void >>>>>> >>>>>> >>>>>> *dict.dats*: >>>>>> #include "share/atspre_staload.hats" >>>>>> >>>>>> staload "./dict.sats" >>>>>> >>>>>> local >>>>>> in >>>>>> >>>>>> >>>>>> implement{a} dict_new {s} ( size ) = let >>>>>> val size_st = size_of_int(size) >>>>>> val bucket_arr = arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>> implmnt array_initize$init<bucket(a)> (i, x) = x := bucket_empty() >>>>>> val () = arrayptr_initize<bucket(a)>(bucket_arr, size_st) >>>>>> in >>>>>> @{size=size, buckets=bucket_arr}:dict(a, s) >>>>>> end >>>>>> >>>>>> implmnt{a} dict_delete ( d ) = let >>>>>> implmnt(a2:t@ype) bucket_item$delete<a2> ( x ) = () >>>>>> in >>>>>> dict_delete_lin<a>(d) >>>>>> end >>>>>> >>>>>> implmnt{a} bucket_delete_recursive ( b ) = >>>>>> case+ b of >>>>>> | ~bucket_empty() => () >>>>>> | ~bucket_filled(str, x, next_bucket) => let >>>>>> val () = strptr_free(str) >>>>>> val () = bucket_item$delete<a>(x) >>>>>> in >>>>>> bucket_delete_recursive<a>(next_bucket) >>>>>> end >>>>>> >>>>>> implmnt{a} dict_delete_lin ( d ) = let >>>>>> implmnt array_uninitize$clear<bucket(a)> (i, x) = >>>>>> bucket_delete_recursive<a>(x) >>>>>> in >>>>>> arrayptr_freelin(d.buckets, size_of_int(d.size)) >>>>>> end >>>>>> end >>>>>> >>>>>> *dict_test.dats*, where main is: >>>>>> #include "share/atspre_staload.hats" >>>>>> >>>>>> staload "./dict.sats" >>>>>> >>>>>> >>>>>> implmnt main0 () = let >>>>>> var d = dict_new<int>(13) >>>>>> in >>>>>> dict_delete(d) >>>>>> end >>>>>> >>>>>> *My output*: >>>>>> $ patscc --gline -DATS_MEMALLOC_LIBC dict_test.dats >>>>>> >>>>>> In file included from dict_test_dats.c:15: >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats: In function >>>>>> ‘mainats_0_void’: >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:21: error: >>>>>> ‘PMVtmpltcstmat’ undeclared (first use in this function) >>>>>> 58 | var d = dict_new<int>(13) >>>>>> | ^~~~~~~ >>>>>> >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:21: note: >>>>>> each undeclared identifier is reported only once for each function it >>>>>> appears in >>>>>> 58 | var d = dict_new<int>(13) >>>>>> | ^~~~~~~ >>>>>> >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:39: error: >>>>>> ‘dict_new’ undeclared (first use in this function) >>>>>> 58 | var d = dict_new<int>(13) >>>>>> >>>>>> | ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:48: >>>>>> warning: implicit declaration of function ‘S2Eapp’ >>>>>> [-Wimplicit-function-declaration] >>>>>> 58 | var d = dict_new<int>(13) >>>>>> >>>>>> | ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:55: >>>>>> warning: implicit declaration of function ‘S2Ecst’ >>>>>> [-Wimplicit-function-declaration] >>>>>> 58 | var d = dict_new<int>(13) >>>>>> >>>>>> | ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:62: error: >>>>>> ‘g0int_t0ype’ undeclared (first use in this function) >>>>>> 58 | var d = dict_new<int>(13) >>>>>> >>>>>> | >>>>>> ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:74: error: >>>>>> expected ‘)’ before ‘;’ token >>>>>> 58 | var d = dict_new<int>(13) >>>>>> >>>>>> >>>>>> | >>>>>> ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:58:101: >>>>>> error: expected expression before ‘)’ token >>>>>> 58 | var d = dict_new<int>(13) >>>>>> >>>>>> >>>>>> | >>>>>> >>>>>> ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>> | ^~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:60:44: error: >>>>>> ‘dict_delete’ undeclared (first use in this function); did you mean >>>>>> ‘timer_delete’? >>>>>> 60 | dict_delete(d) >>>>>> >>>>>> | ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>> | ^~~~~~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:60:82: error: >>>>>> expected ‘)’ before ‘;’ token >>>>>> 60 | dict_delete(d) >>>>>> >>>>>> >>>>>> | >>>>>> >>>>>> ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>> | ^~~~~~~ >>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:60:109: >>>>>> error: expected expression before ‘)’ token >>>>>> 60 | dict_delete(d) >>>>>> >>>>>> >>>>>> | >>>>>> >>>>>> ^ >>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>> >>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>> | ^~~~~~~ >>>>>> On Tuesday, November 30, 2021 at 11:28:47 AM UTC-5 gmhwxi wrote: >>>>>> >>>>>>> I tried your code and it compiled without any issue. >>>>>>> >>>>>>> Did you have the following line at the top: >>>>>>> >>>>>>> #include "share/atspre_staload.hats" >>>>>>> >>>>>>> The error messages you showed indicate that many template >>>>>>> implementations were not >>>>>>> available to the compiler (patsopt). >>>>>>> >>>>>>> --Hongwei >>>>>>> >>>>>>> >>>>>>> On Tue, Nov 30, 2021 at 10:52 AM d4v3y_5c0n3s <tmj...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Okay, so I've been struggling with my use of templates for a >>>>>>>> while now, and I'm making this post to get some more eyes on the >>>>>>>> issue. >>>>>>>> I've been getting really frustrated, because nothing I've tried seems >>>>>>>> to >>>>>>>> work, and I have no way to understand what is going wrong whatsoever >>>>>>>> besides becoming familiar with compiler internals (which could take >>>>>>>> who >>>>>>>> knows how long to learn.) >>>>>>>> >>>>>>>> Here's my code: >>>>>>>> datavtype BUCKET (a:vt@ype) = >>>>>>>> | bucket_empty of () >>>>>>>> | bucket_filled of (Strptr1, a, BUCKET(a)) >>>>>>>> >>>>>>>> vtypedef bucket(a:vt@ype) = BUCKET(a) >>>>>>>> >>>>>>>> sortdef dsz = {s:int | s > 0} >>>>>>>> >>>>>>>> vtypedef dict(a:vt@ype, n:int) = >>>>>>>> @{ >>>>>>>> size=int n, >>>>>>>> buckets=arrayptr(bucket(a), n) >>>>>>>> } >>>>>>>> >>>>>>>> extern fn{a:vt@ype} dict_new {s:dsz} ( int s ) : dict(a, s) >>>>>>>> extern fn{a:t@ype} dict_delete {s:dsz} ( d: dict(a, s) ) : void >>>>>>>> extern fn{a:vt@ype} dict_delete_lin {s:dsz} ( d: dict(a, s) ) : void >>>>>>>> >>>>>>>> extern fun{a:vt@ype} bucket_delete_recursive ( b: bucket(a) ) : void >>>>>>>> extern fn{a:vt@ype} bucket_item$delete ( x: a ): void >>>>>>>> >>>>>>>> implement{a} dict_new {s} ( size ) = let >>>>>>>> val size_st = size_of_int(size) >>>>>>>> val bucket_arr = arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> implmnt array_initize$init<bucket(a)> (i, x) = x := >>>>>>>> bucket_empty() >>>>>>>> val () = arrayptr_initize<bucket(a)>(bucket_arr, size_st) >>>>>>>> in >>>>>>>> @{size=size, buckets=bucket_arr}:dict(a, s) >>>>>>>> end >>>>>>>> >>>>>>>> implmnt{a} dict_delete ( d ) = let >>>>>>>> implmnt(a2:t@ype) bucket_item$delete<a2> ( x ) = () >>>>>>>> in >>>>>>>> dict_delete_lin<a>(d) >>>>>>>> end >>>>>>>> >>>>>>>> implmnt{a} bucket_delete_recursive ( b ) = >>>>>>>> case+ b of >>>>>>>> | ~bucket_empty() => () >>>>>>>> | ~bucket_filled(str, x, next_bucket) => let >>>>>>>> val () = strptr_free(str) >>>>>>>> val () = bucket_item$delete<a>(x) >>>>>>>> in >>>>>>>> bucket_delete_recursive<a>(next_bucket) >>>>>>>> end >>>>>>>> >>>>>>>> implmnt{a} dict_delete_lin ( d ) = let >>>>>>>> implmnt array_uninitize$clear<bucket(a)> (i, x) = >>>>>>>> bucket_delete_recursive<a>(x) >>>>>>>> in >>>>>>>> arrayptr_freelin(d.buckets, size_of_int(d.size)) >>>>>>>> end >>>>>>>> >>>>>>>> implmnt main0 () = let >>>>>>>> var d = dict_new<int>(13) >>>>>>>> in >>>>>>>> dict_delete(d) >>>>>>>> end >>>>>>>> >>>>>>>> >>>>>>>> Here's the output: >>>>>>>> $ patscc --gline dict_test.dats >>>>>>>> In file included from dict_test_dats.c:15: >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats: In >>>>>>>> function >>>>>>>> ‘_057_home_057_tmj90_057_Goldelish_055_Engine_057_source_057_data_057_dict_test_056_dats__dict_new__0__1’: >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:21: >>>>>>>> error: ‘PMVtmpltcstmat’ undeclared (first use in this function) >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> | ^~~~~~~~~~~~~~ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:21: >>>>>>>> note: each undeclared identifier is reported only once for each >>>>>>>> function it >>>>>>>> appears in >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> | ^~~~~~~~~~~~~~ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:39: >>>>>>>> error: ‘arrayptr_make_uninitized’ undeclared (first use in this >>>>>>>> function) >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> | >>>>>>>> ^~~~~~~~~~~~~~~~~~~~~~~~ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:64: >>>>>>>> warning: implicit declaration of function ‘S2Eapp’ >>>>>>>> [-Wimplicit-function-declaration] >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> >>>>>>>> | ^~ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:71: >>>>>>>> warning: implicit declaration of function ‘S2Ecst’ >>>>>>>> [-Wimplicit-function-declaration] >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:78: >>>>>>>> error: ‘BUCKET’ undeclared (first use in this function) >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:85: >>>>>>>> error: expected ‘)’ before ‘;’ token >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:24:141: >>>>>>>> error: expected expression before ‘)’ token >>>>>>>> 24 | val bucket_arr = >>>>>>>> arrayptr_make_uninitized<bucket(a)>(size_st) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:276:37: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove’ >>>>>>>> 276 | #define ATSINSmove(tmp, val) (tmp = val) >>>>>>>> | ^~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:26:44: >>>>>>>> error: ‘arrayptr_initize’ undeclared (first use in this function) >>>>>>>> 26 | val () = arrayptr_initize<bucket(a)>(bucket_arr, >>>>>>>> size_st) >>>>>>>> | ^~~~~~~~~~~~~~~~ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:26:82: >>>>>>>> error: expected ‘)’ before ‘;’ token >>>>>>>> 26 | val () = arrayptr_initize<bucket(a)>(bucket_arr, >>>>>>>> size_st) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:26:138: >>>>>>>> error: expected expression before ‘)’ token >>>>>>>> 26 | val () = arrayptr_initize<bucket(a)>(bucket_arr, >>>>>>>> size_st) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats: In >>>>>>>> function >>>>>>>> ‘_057_home_057_tmj90_057_Goldelish_055_Engine_057_source_057_data_057_dict_test_056_dats__dict_delete_lin__5__1’: >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:50:30: >>>>>>>> error: ‘PMVtmpltcstmat’ undeclared (first use in this function) >>>>>>>> 50 | arrayptr_freelin(d.buckets, size_of_int(d.size)) >>>>>>>> | ^~~~~~~~~~~~~~ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:50:48: >>>>>>>> error: ‘arrayptr_freelin’ undeclared (first use in this function) >>>>>>>> 50 | arrayptr_freelin(d.buckets, size_of_int(d.size)) >>>>>>>> | >>>>>>>> ^~~ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:50:79: >>>>>>>> error: ‘BUCKET’ undeclared (first use in this function) >>>>>>>> 50 | arrayptr_freelin(d.buckets, size_of_int(d.size)) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:50:86: >>>>>>>> error: expected ‘)’ before ‘;’ token >>>>>>>> 50 | arrayptr_freelin(d.buckets, size_of_int(d.size)) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> /home/tmj90/Goldelish-Engine/source/data/dict_test.dats:50:142: >>>>>>>> error: expected expression before ‘)’ token >>>>>>>> 50 | arrayptr_freelin(d.buckets, size_of_int(d.size)) >>>>>>>> >>>>>>>> | >>>>>>>> >>>>>>>> >>>>>>>> ^ >>>>>>>> /usr/local/lib/ats2-postiats-0.4.2/ccomp/runtime/pats_ccomp_instrset.h:284:39: >>>>>>>> >>>>>>>> note: in definition of macro ‘ATSINSmove_void’ >>>>>>>> 284 | #define ATSINSmove_void(tmp, command) command >>>>>>>> | ^~~~~~~ >>>>>>>> >>>>>>>> Any help is greatly appreciated, and let me know if you have any >>>>>>>> questions. Thank you. >>>>>>>> >>>>>>>> -- >>>>>>>> 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-user...@googlegroups.com. >>>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/ats-lang-users/d42e5377-0287-4311-9b39-716235b7a0c3n%40googlegroups.com >>>>>>>> >>>>>>>> <https://groups.google.com/d/msgid/ats-lang-users/d42e5377-0287-4311-9b39-716235b7a0c3n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>> . >>>>>>>> >>>>>>> -- >>>> 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-user...@googlegroups.com. >>>> >>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/ats-lang-users/8f8bd20f-8ec3-4008-ae28-e28b013d8069n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/ats-lang-users/8f8bd20f-8ec3-4008-ae28-e28b013d8069n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/19270152-47db-4f7a-adf4-247b1adedd4dn%40googlegroups.com.