That seems to have fixed my issue, thanks.  :)

On Thursday, December 30, 2021 at 9:28:57 PM UTC-5 gmhwxi wrote:

> Or you could supply a template parameter (bucket(a) in this case) to
> arrayptr_freelin:
>
> implmnt{a} dict_delete_lin ( d ) = let
>   implmnt array_uninitize$clear<bucket(a)> (i, x) = 
> bucket_delete_recursive<a>(x)
> in
>   arrayptr_freelin<bucket(a)>(d.buckets, size_of_int(d.size))
> end
> On Thursday, December 30, 2021 at 9:00:48 PM UTC-5 gmhwxi wrote:
>
>> Just need to replace bucket(a) with BUCKET(a) as is shown below:
>>
>>   implmnt array_uninitize$clear<BUCKET(a)> (i, x) = 
>> bucket_delete_recursive<a>(x)
>>
>> On Thursday, December 30, 2021 at 6:07:31 PM UTC-5 d4v3y_5c0n3s wrote:
>>
>>> Here are the files, with some of the functions that are never used in 
>>> the example removed.
>>> The code was compiled with:  *patscc -c -DATS_MEMALLOC_LIBC dict.dats*
>>> | | |
>>> (*
>>> ###  dict.sats  ###
>>>
>>>
>>> *)
>>>
>>> #include "share/atspre_staload.hats"
>>>
>>> (*  buckets (aka linked lists)  *)
>>> absvtype bucket (a:vt@ype) = ptr
>>>
>>> fn{a:vt@ype} bucket_new ( string, a ) : bucket(a)
>>>
>>> fn{a:vt@ype} bucket_map ( !bucket(a) ) : void
>>> fn{a:vt@ype} bucket_filter_map ( b: !bucket(a) ) : void
>>>
>>>
>>> fn{a:vt@ype} bucket_item$delete ( x: a ): void
>>> fn{a:vt@ype} bucket_item$map ( x: &a ): void
>>> fn{a:vt@ype} bucket_item$filter ( x: !a ): bool
>>> fn{a:vt@ype} bucket_item$to_string ( x: !a ): string
>>>
>>>
>>> fun{a:vt@ype} bucket_delete_recursive ( b: bucket(a) ) : void
>>>
>>> fn{a:vt@ype} bucket_print ( b: !bucket(a) ) : void
>>>
>>> (*  dictionaries  *)
>>>
>>> sortdef dsz = {s:int | s > 0}
>>> absvt@ype dict (a:vt@ype, n:int) = @{size=int,buckets=ptr}
>>>
>>>
>>> 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
>>> fn{a:vt@ype} dict_delete_fun {s:dsz} ( d: dict(a, s), (a) -> void ) : 
>>> void
>>> | | |
>>> (*
>>> ###  dict.dats  ###
>>>
>>>
>>> *)
>>>
>>> #include "share/atspre_staload.hats"
>>>
>>> staload "./dict.sats"
>>>
>>> fn hash {n:int | n>0}{s:int | s>0}
>>> ( s: string(s), size: int(n) ) : [o:int | o >= 0; o < n] int o = let
>>>         fun hash_num {i:nat | i <= s}
>>>         ( i: int i, h: int, str_sz: int(s) ) : int =
>>>                 if i < str_sz then let
>>>                         val c_at_i = string_get_at_gint(s, i)
>>>                 in
>>>                         hash_num(i+1, h * 101 + g0int_of_char(c_at_i), 
>>> str_sz)
>>>                 end else h
>>> in
>>>         g1int_nmod(abs(g1ofg0(hash_num(0, 0, sz2i(strlen(s))))), size)
>>> end
>>>
>>> local
>>>
>>> datavtype BUCKET (a:vt@ype) =
>>> | bucket_empty of ()
>>> | bucket_filled of (Strptr1, a, BUCKET(a))
>>>
>>> assume bucket(a:vt@ype) = BUCKET(a)
>>> assume dict(a:vt@ype, n:int) = @{
>>>   size=int n,
>>>   buckets=arrayptr(bucket(a), n)
>>> }
>>>
>>> extern fn{a:vt@ype} bucket_operate ( !bucket(a) ) : void
>>>
>>>
>>> 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
>>>
>>> implmnt{a} dict_delete_fun ( d, dltr ) = let
>>>   implmnt bucket_item$delete<a> ( x ) = dltr(x)
>>> in
>>>   dict_delete_lin(d)
>>> end
>>>
>>>
>>> implmnt{a} bucket_new ( key, item ) = 
>>> bucket_filled($UNSAFE.castvwtp0{Strptr1}(key), item, bucket_empty())
>>>
>>> implmnt{a} bucket_map ( b ) =
>>>   case+ b of
>>>   | bucket_empty() => ()
>>>   | @bucket_filled(_, x, next_bucket) => {
>>>     val () = bucket_item$map(x)
>>>     val () = bucket_map(next_bucket)
>>>     prval () = fold@(b)
>>>   }
>>>
>>> implmnt{a} bucket_filter_map ( b ) =
>>>   case+ b of
>>>   | bucket_empty() => ()
>>>   | @bucket_filled(_, x, next_bucket) =>
>>>   if bucket_item$filter(x) then {
>>>       val () = bucket_item$map(x)
>>>       val () = bucket_filter_map(next_bucket)
>>>       prval () = fold@(b)
>>>   }
>>>   else {
>>>     val () = bucket_filter_map(next_bucket)
>>>     prval () = fold@(b)
>>>   }
>>>
>>> implmnt{a} bucket_print ( b ) =
>>>     case+ b of
>>>     | bucket_empty() => ()
>>>
>>>     | bucket_filled(str, x, next_bucket) => let
>>>         val () = print("\(")
>>>         val () = print(str)
>>>         val () = print(" : ")
>>>         val () = print( bucket_item$to_string(x) )
>>>         val () = print(")")
>>>     in
>>>         bucket_print(next_bucket)
>>>     end
>>>
>>> end
>>>
>>> var d = dict_new<int>(7)
>>> val () = dict_delete<int>(d)
>>> | | |
>>> On Thursday, December 30, 2021 at 2:48:29 PM UTC-5 gmhwxi wrote:
>>>
>>>> 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 <tmj...@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-user...@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/cb4acd7e-375d-4d7c-b7e7-5e22d066bba2n%40googlegroups.com.

Reply via email to