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.

Reply via email to