Where can I find your source code so that I can produce the error you are referring to?
--Hongwei On Thu, Dec 30, 2021 at 12:47 PM d4v3y_5c0n3s <tmj9...@gmail.com> wrote: > 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 a topic in the > Google Groups "ats-lang-users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/ats-lang-users/sZgQapU08Bo/unsubscribe. > To unsubscribe from this group and all its topics, 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 > <https://groups.google.com/d/msgid/ats-lang-users/19270152-47db-4f7a-adf4-247b1adedd4dn%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/CAPPSPLpEcJ%2Byedyx8L-f7PALdvO5LdCtL8Ok3D-m4xkDVz749w%40mail.gmail.com.