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 <tmj9...@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-users+unsubscr...@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/CAPPSPLqxcBgJEbRh3k_oR%3DrNwiD6FeFGTY6OiW6KG_bYb_Qo9w%40mail.gmail.com.

Reply via email to