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.

Reply via email to