fusionlanguage / fut

Fusion programming language. Transpiling to C, C++, C#, D, Java, JavaScript, Python, Swift, TypeScript and OpenCL C.
https://fusion-lang.org
GNU General Public License v3.0
1.76k stars 55 forks source link

Subject: Several tests fail or detect memory leaks. #87

Closed dreirund closed 1 year ago

dreirund commented 1 year ago

Ahoj,

I am building cito because I need it to build another software.

make test and other make test-*-targets give some errors and notifications about memory leaks:

make test:

test/bin/ConstLong/Test.c
test/bin/ConstLong/c.exe
test/bin/ConstLong/Test.c:8:24: error: result of comparison of constant 1000000000000000 with expression of type 'int' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
        return i * 1000000000 == 1000000000000000;
               ~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~
1 error generated.
            && i * Bar == Foo; //FAIL: c cpp cs d java ts cl
test/bin/ConstLong/c.txt
/bin/sh: line 1: ./test/bin/ConstLong/c.exe: No such file or directory
            && i * Bar == Foo; //FAIL: c cpp cs d java ts cl
test/bin/ListAddRange/Test.c
test/ListAddRange.ci(11): ERROR: AddRange not supported when targeting C
        dest.AddRange(src); //FAIL: c
test/bin/ListAddRange/c.exe
test/bin/ListAddRange/c.txt
        dest.AddRange(src); //FAIL: c
test/bin/ListAll/Test.c
test/ListAll.ci(17): ERROR: All not supported when targeting C
        return list.All(it => it.Value > 4); //FAIL: c
test/bin/ListAll/c.exe
test/bin/ListAll/Test.c:80:21: error: expected expression
        bool returnValue = ;
                           ^
1 error generated.
        return list.All(it => it.Value > 4); //FAIL: c
test/bin/ListAll/c.txt
/bin/sh: line 1: ./test/bin/ListAll/c.exe: No such file or directory
        return list.All(it => it.Value > 4); //FAIL: c
test/bin/ListAny/Test.c
test/ListAny.ci(17): ERROR: Any not supported when targeting C
        return list.Any(it => it.Value > 10); //FAIL: c
test/bin/ListAny/c.exe
test/bin/ListAny/Test.c:80:21: error: expected expression
        bool returnValue = ;
                           ^
1 error generated.
        return list.Any(it => it.Value > 10); //FAIL: c
test/bin/ListAny/c.txt
/bin/sh: line 1: ./test/bin/ListAny/c.exe: No such file or directory
        return list.Any(it => it.Value > 10); //FAIL: c
test/ListIndexOf.ci(17): ERROR: IndexOf not supported when targeting C
test/ListIndexOf.ci(17): ERROR: IndexOf not supported when targeting C
test/ListIndexOf.ci(18): ERROR: IndexOf not supported when targeting C
test/ListIndexOf.ci(18): ERROR: IndexOf not supported when targeting C
test/ListIndexOf.ci(19): ERROR: IndexOf not supported when targeting C
test/ListIndexOf.ci(19): ERROR: IndexOf not supported when targeting C
        return li.IndexOf(15) == 1 && li.IndexOf(1) == -1 //FAIL: c
test/bin/ListIndexOf/c.exe
test/bin/ListIndexOf/Test.c:32:22: error: expected expression
        bool returnValue =  == 1 &&  == -1 &&  == 1 &&  == -1 &&  == 1 &&  == -1;
                            ^
test/bin/ListIndexOf/Test.c:32:31: error: expected expression
        bool returnValue =  == 1 &&  == -1 &&  == 1 &&  == -1 &&  == 1 &&  == -1;
                                     ^
test/bin/ListIndexOf/Test.c:32:41: error: expected expression
        bool returnValue =  == 1 &&  == -1 &&  == 1 &&  == -1 &&  == 1 &&  == -1;
                                               ^
test/bin/ListIndexOf/Test.c:32:50: error: expected expression
        bool returnValue =  == 1 &&  == -1 &&  == 1 &&  == -1 &&  == 1 &&  == -1;
                                                        ^
test/bin/ListIndexOf/Test.c:32:60: error: expected expression
        bool returnValue =  == 1 &&  == -1 &&  == 1 &&  == -1 &&  == 1 &&  == -1;
                                                                  ^
test/bin/ListIndexOf/Test.c:32:69: error: expected expression
        bool returnValue =  == 1 &&  == -1 &&  == 1 &&  == -1 &&  == 1 &&  == -1;
                                                                           ^
6 errors generated.
        return li.IndexOf(15) == 1 && li.IndexOf(1) == -1 //FAIL: c
test/bin/ListIndexOf/c.txt
/bin/sh: line 1: ./test/bin/ListIndexOf/c.exe: No such file or directory
        return li.IndexOf(15) == 1 && li.IndexOf(1) == -1 //FAIL: c
test/bin/Lock/Test.c
test/Lock.ci(5): ERROR: Lock not supported yet when targeting C
        Lock() mutex; //FAIL: c TODO; js ts cl
test/bin/Lock/c.exe
test/bin/Lock/c.txt
test/bin/MathClamp/Test.c
test/MathClamp.ci(6): ERROR: Clamp not supported when targeting C
test/MathClamp.ci(6): ERROR: Clamp not supported when targeting C
test/MathClamp.ci(6): ERROR: Clamp not supported when targeting C
test/MathClamp.ci(7): ERROR: Clamp not supported when targeting C
test/MathClamp.ci(8): ERROR: Clamp not supported when targeting C
test/MathClamp.ci(8): ERROR: Clamp not supported when targeting C
test/MathClamp.ci(8): ERROR: Clamp not supported when targeting C
        return Math.Clamp(5, 0, 255) == 5 && Math.Clamp(-5, 0, 255) == 0 && Math.Clamp(1000, 0, 255) == 255 //FAIL: c TODO
test/bin/MathClamp/c.exe
test/bin/MathClamp/Test.c:9:10: error: expected expression
        return  == 5 &&  == 0 &&  == 255 &&  == 2 * l &&  == 0.25f &&  == 0.0f &&  == 1.0f;
                ^
test/bin/MathClamp/Test.c:9:19: error: expected expression
        return  == 5 &&  == 0 &&  == 255 &&  == 2 * l &&  == 0.25f &&  == 0.0f &&  == 1.0f;
                         ^
test/bin/MathClamp/Test.c:9:28: error: expected expression
        return  == 5 &&  == 0 &&  == 255 &&  == 2 * l &&  == 0.25f &&  == 0.0f &&  == 1.0f;
                                  ^
test/bin/MathClamp/Test.c:9:39: error: expected expression
        return  == 5 &&  == 0 &&  == 255 &&  == 2 * l &&  == 0.25f &&  == 0.0f &&  == 1.0f;
                                             ^
test/bin/MathClamp/Test.c:9:52: error: expected expression
        return  == 5 &&  == 0 &&  == 255 &&  == 2 * l &&  == 0.25f &&  == 0.0f &&  == 1.0f;
                                                          ^
test/bin/MathClamp/Test.c:9:65: error: expected expression
        return  == 5 &&  == 0 &&  == 255 &&  == 2 * l &&  == 0.25f &&  == 0.0f &&  == 1.0f;
                                                                       ^
test/bin/MathClamp/Test.c:9:77: error: expected expression
        return  == 5 &&  == 0 &&  == 255 &&  == 2 * l &&  == 0.25f &&  == 0.0f &&  == 1.0f;
                                                                                   ^
7 errors generated.
        return Math.Clamp(5, 0, 255) == 5 && Math.Clamp(-5, 0, 255) == 0 && Math.Clamp(1000, 0, 255) == 255 //FAIL: c TODO
test/bin/MathClamp/c.txt
/bin/sh: line 1: ./test/bin/MathClamp/c.exe: No such file or directory
        return Math.Clamp(5, 0, 255) == 5 && Math.Clamp(-5, 0, 255) == 0 && Math.Clamp(1000, 0, 255) == 255 //FAIL: c TODO
test/bin/MathMaxMin/Test.c
test/MathMaxMin.ci(7): ERROR: Min not supported when targeting C
test/MathMaxMin.ci(7): ERROR: Max not supported when targeting C
test/MathMaxMin.ci(7): ERROR: Max not supported when targeting C
        return Math.Min(-5, 10) == -5 && Math.Max(-5, 10) == 10 && Math.Max(l, l) == l //FAIL: c cl TODO
test/bin/MathMaxMin/c.exe
test/bin/MathMaxMin/Test.c:11:10: error: expected expression
        return  == -5 &&  == 10 &&  == l && fmin(-3.0f, 10.5f) == -3 && fmax(-3.0f, 10.5f) == 10.5f;
                ^
test/bin/MathMaxMin/Test.c:11:20: error: expected expression
        return  == -5 &&  == 10 &&  == l && fmin(-3.0f, 10.5f) == -3 && fmax(-3.0f, 10.5f) == 10.5f;
                          ^
test/bin/MathMaxMin/Test.c:11:30: error: expected expression
        return  == -5 &&  == 10 &&  == l && fmin(-3.0f, 10.5f) == -3 && fmax(-3.0f, 10.5f) == 10.5f;
                                    ^
3 errors generated.
        return Math.Min(-5, 10) == -5 && Math.Max(-5, 10) == 10 && Math.Max(l, l) == l //FAIL: c cl TODO
test/bin/MathMaxMin/c.txt
/bin/sh: line 1: ./test/bin/MathMaxMin/c.exe: No such file or directory
        return Math.Min(-5, 10) == -5 && Math.Max(-5, 10) == 10 && Math.Max(l, l) == l //FAIL: c cl TODO
test/bin/MethodShortIsVar/Test.c
test/MethodShortIsVar.ci(13): ERROR: 'is' operator not supported when targeting C
    static bool Bar(Base b) => b is Derived d && d.Yes; //FAIL: c cpp js py swift ts cl TODO; java 17
test/bin/MethodShortIsVar/c.exe
test/bin/MethodShortIsVar/Test.c:26:3: error: use of undeclared identifier 'Base_Foo'
                Base_Foo,
                ^
test/bin/MethodShortIsVar/Test.c:40:10: error: expected ';' after return statement
        return b is const Derived *d && d->yes;
                ^
                ;
2 errors generated.
    static bool Bar(Base b) => b is Derived d && d.Yes; //FAIL: c cpp js py swift ts cl TODO; java 17
test/bin/MethodShortIsVar/c.txt
/bin/sh: line 1: ./test/bin/MethodShortIsVar/c.exe: No such file or directory
    static bool Bar(Base b) => b is Derived d && d.Yes; //FAIL: c cpp js py swift ts cl TODO; java 17
test/bin/ObjectToString/Test.c
test/bin/ObjectToString/c.exe
test/bin/ObjectToString/c.txt

=================================================================
==5989==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x561dc2fe4619 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/ObjectToString/c.exe+0xd7619) (BuildId: befda2313a3b3c202881aa667572caa0a991e2c0)
    #1 0x561dc3029345 in CiString_Format /tmp/makepkg/build/cito-git/src/cito/test/bin/ObjectToString/Test.c:16:14
    #2 0x561dc3029179 in Point_ToString /tmp/makepkg/build/cito-git/src/cito/test/bin/ObjectToString/Test.c:32:9
    #3 0x561dc30295a8 in Test_Run /tmp/makepkg/build/cito-git/src/cito/test/bin/ObjectToString/Test.c:40:18
    #4 0x561dc30296b3 in main /tmp/makepkg/build/cito-git/src/cito/test/Runner.c:7:6
    #5 0x7f5d00bdd78f  (/usr/lib/libc.so.6+0x2378f) (BuildId: 4e286ede94507b0a42b208487675ca8c73594776)

SUMMARY: AddressSanitizer: 4 byte(s) leaked in 1 allocation(s).
        return bar.ToString() == "3,6"; //FAIL: c TODO memleak
test/bin/OpAddString/Test.c
test/OpAddString.ci(7): ERROR: String concatenation not supported when targeting C
test/OpAddString.ci(8): ERROR: String concatenation not supported when targeting C
test/OpAddString.ci(9): ERROR: String concatenation not supported when targeting C
test/OpAddString.ci(10): ERROR: String concatenation not supported when targeting C
test/OpAddString.ci(11): ERROR: String concatenation not supported when targeting C
test/OpAddString.ci(12): ERROR: String concatenation not supported when targeting C
test/OpAddString.ci(13): ERROR: String concatenation not supported when targeting C
test/OpAddString.ci(14): ERROR: String concatenation not supported when targeting C
        return s + s == "foofoo" //FAIL: c
test/bin/OpAddString/c.exe
test/bin/OpAddString/Test.c:10:30: error: invalid operands to binary expression ('char *' and 'char *')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                  ~ ^ ~
test/bin/OpAddString/Test.c:10:62: error: invalid operands to binary expression ('char *' and 'const char *')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                                                  ~ ^ ~
test/bin/OpAddString/Test.c:10:94: error: invalid operands to binary expression ('const char *' and 'char *')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                                                                                  ~ ^ ~
test/bin/OpAddString/Test.c:10:126: error: invalid operands to binary expression ('const char *' and 'const char *')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                                                                                                                  ~ ^ ~
test/bin/OpAddString/Test.c:10:158: error: invalid operands to binary expression ('char *' and 'char[5]')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                                                                                                                                                  ~ ^ ~~~~~~
test/bin/OpAddString/Test.c:10:201: error: invalid operands to binary expression ('char[5]' and 'char *')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                                                                                                                                                                                        ~~~~~~ ^ ~
test/bin/OpAddString/Test.c:10:234: error: invalid operands to binary expression ('const char *' and 'char[5]')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                                                                                                                                                                                                                              ~ ^ ~~~~~~
test/bin/OpAddString/Test.c:10:277: error: invalid operands to binary expression ('char[5]' and 'const char *')
        bool returnValue = strcmp(s + s, "foofoo") == 0 && strcmp(s + p, "foobar") == 0 && strcmp(p + s, "barfoo") == 0 && strcmp(p + p, "barbar") == 0 && strcmp(s + "quux", "fooquux") == 0 && strcmp("quux" + s, "quuxfoo") == 0 && strcmp(p + "quux", "barquux") == 0 && strcmp("quux" + p, "quuxbar") == 0;
                                                                                                                                                                                                                                                                                    ~~~~~~ ^ ~
8 errors generated.
        return s + s == "foofoo" //FAIL: c
test/bin/OpAddString/c.txt
/bin/sh: line 1: ./test/bin/OpAddString/c.exe: No such file or directory
        return s + s == "foofoo" //FAIL: c
test/bin/OpAddStringInterpolated/Test.c
test/bin/OpAddStringInterpolated/c.exe
test/bin/OpAddStringInterpolated/c.txt
test/bin/OpIs/Test.c
test/OpIs.ci(20): ERROR: 'is' operator not supported when targeting C
test/OpIs.ci(21): ERROR: 'is' operator not supported when targeting C
test/OpIs.ci(21): ERROR: 'is' operator not supported when targeting C
        return b is Derived //FAIL: c cl TODO
test/bin/OpIs/c.exe
test/bin/OpIs/Test.c:29:3: error: use of undeclared identifier 'Base_Foo'
                Base_Foo,
                ^
test/bin/OpIs/Test.c:49:10: error: expected ';' after return statement
        return b is Derived && !(b is NotThis) & b is Derived;
                ^
                ;
2 errors generated.
        return b is Derived //FAIL: c cl TODO
test/bin/OpIs/c.txt
/bin/sh: line 1: ./test/bin/OpIs/c.exe: No such file or directory
        return b is Derived //FAIL: c cl TODO
test/bin/OpIsDynamic/Test.c
test/OpIsDynamic.ci(15): ERROR: 'is' operator not supported when targeting C
        return p is Derived; //FAIL: c TODO; cl
test/bin/OpIsDynamic/c.exe
test/bin/OpIsDynamic/Test.c:59:3: error: use of undeclared identifier 'Base_Foo'
                Base_Foo,
                ^
test/bin/OpIsDynamic/Test.c:72:22: error: expected ';' at end of declaration
        bool returnValue = p is Derived;
                            ^
                            ;
2 errors generated.
        return p is Derived; //FAIL: c TODO; cl
test/bin/OpIsDynamic/c.txt
/bin/sh: line 1: ./test/bin/OpIsDynamic/c.exe: No such file or directory
        return p is Derived; //FAIL: c TODO; cl
test/bin/OpIsVar/Test.c
test/OpIsVar.ci(17): ERROR: 'is' operator not supported when targeting C
test/OpIsVar.ci(18): ERROR: 'is' operator not supported when targeting C
        return b is Derived ro && ro.Ok() //FAIL: c py swift cl TODO; java 17
test/bin/OpIsVar/c.exe
test/bin/OpIsVar/Test.c:25:3: error: use of undeclared identifier 'Base_Foo'
                Base_Foo,
                ^
test/bin/OpIsVar/Test.c:47:10: error: expected ';' after return statement
        return b is const Derived *ro && Derived_Ok(ro) && b is Derived *rw && Derived_Ok(rw);
                ^
                ;
2 errors generated.
        return b is Derived ro && ro.Ok() //FAIL: c py swift cl TODO; java 17
test/bin/OpIsVar/c.txt
/bin/sh: line 1: ./test/bin/OpIsVar/c.exe: No such file or directory
        return b is Derived ro && ro.Ok() //FAIL: c py swift cl TODO; java 17
test/bin/OpIsVarDynamic/Test.c
test/OpIsVarDynamic.ci(16): ERROR: 'is' operator not supported when targeting C
test/OpIsVarDynamic.ci(17): ERROR: 'is' operator not supported when targeting C
        if (p is Derived# d) { //FAIL: c js py swift ts TODO; cl java 17
test/bin/OpIsVarDynamic/c.exe
test/bin/OpIsVarDynamic/Test.c:60:3: error: use of undeclared identifier 'Base_Foo'
                Base_Foo,
                ^
test/bin/OpIsVarDynamic/Test.c:75:8: error: expected ')'
        if (p is Derived *d) {
              ^
test/bin/OpIsVarDynamic/Test.c:75:5: note: to match this '('
        if (p is Derived *d) {
           ^
test/bin/OpIsVarDynamic/Test.c:77:9: error: expected ')'
                if (p is Derived *r) {
                      ^
test/bin/OpIsVarDynamic/Test.c:77:6: note: to match this '('
                if (p is Derived *r) {
                   ^
3 errors generated.
        if (p is Derived# d) { //FAIL: c js py swift ts TODO; cl java 17
test/bin/OpIsVarDynamic/c.txt
/bin/sh: line 1: ./test/bin/OpIsVarDynamic/c.exe: No such file or directory
        if (p is Derived# d) { //FAIL: c js py swift ts TODO; cl java 17
test/bin/OpIsVarIf/Test.c
test/OpIsVarIf.ci(18): ERROR: 'is' operator not supported when targeting C
test/OpIsVarIf.ci(20): ERROR: 'is' operator not supported when targeting C
            if (b is Derived ro && !ro.Ok()) //FAIL: c py swift cl TODO; java 17
test/bin/OpIsVarIf/c.exe
test/bin/OpIsVarIf/Test.c:25:3: error: use of undeclared identifier 'Base_Foo'
                Base_Foo,
                ^
test/bin/OpIsVarIf/Test.c:47:9: error: expected ')'
                if (b is const Derived *ro && !Derived_Ok(ro))
                      ^
test/bin/OpIsVarIf/Test.c:47:6: note: to match this '('
                if (b is const Derived *ro && !Derived_Ok(ro))
                   ^
test/bin/OpIsVarIf/Test.c:51:10: error: expected ')'
                        if (b is Derived *rw && Derived_Ok(rw))
                              ^
test/bin/OpIsVarIf/Test.c:51:7: note: to match this '('
                        if (b is Derived *rw && Derived_Ok(rw))
                           ^
3 errors generated.
            if (b is Derived ro && !ro.Ok()) //FAIL: c py swift cl TODO; java 17
test/bin/OpIsVarIf/c.txt
/bin/sh: line 1: ./test/bin/OpIsVarIf/c.exe: No such file or directory
            if (b is Derived ro && !ro.Ok()) //FAIL: c py swift cl TODO; java 17
test/bin/OrderedDictionary/Test.c
test/OrderedDictionary.ci(5): ERROR: OrderedDictionary not supported when targeting C
test/OrderedDictionary.ci(5): ERROR: OrderedDictionary not supported when targeting C
test/OrderedDictionary.ci(7): ERROR: Clear not supported when targeting C
test/OrderedDictionary.ci(11): ERROR: Remove not supported when targeting C
test/OrderedDictionary.ci(12): ERROR: OrderedDictionary not supported when targeting C
test/OrderedDictionary.ci(12): ERROR: OrderedDictionary not supported when targeting C
test/OrderedDictionary.ci(14): ERROR: ContainsKey not supported when targeting C
        OrderedDictionary<string, int>() dict; //FAIL: c cpp d swift cl
test/bin/OrderedDictionary/c.exe
test/bin/OrderedDictionary/Test.c:30:2: error: use of undeclared identifier 'dict'
        dict = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
        ^
test/bin/OrderedDictionary/Test.c:30:10: error: expected expression
        dict = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
                ^
test/bin/OrderedDictionary/Test.c:31:2: error: call to undeclared function 'g_hash_table_insert'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration]
        g_hash_table_insert(dict, (gpointer) "foo", GINT_TO_POINTER(10));
        ^
test/bin/OrderedDictionary/Test.c:31:29: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict, (gpointer) "foo", GINT_TO_POINTER(10));
                                   ^
test/bin/OrderedDictionary/Test.c:31:46: error: call to undeclared function 'GINT_TO_POINTER'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration]
        g_hash_table_insert(dict, (gpointer) "foo", GINT_TO_POINTER(10));
                                                    ^
test/bin/OrderedDictionary/Test.c:31:22: error: use of undeclared identifier 'dict'; did you mean 'div'?
        g_hash_table_insert(dict, (gpointer) "foo", GINT_TO_POINTER(10));
                            ^~~~
                            div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/OrderedDictionary/Test.c:33:29: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict, (gpointer) "foo", GINT_TO_POINTER(12));
                                   ^
test/bin/OrderedDictionary/Test.c:33:22: error: use of undeclared identifier 'dict'; did you mean 'div'?
        g_hash_table_insert(dict, (gpointer) "foo", GINT_TO_POINTER(12));
                            ^~~~
                            div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/OrderedDictionary/Test.c:34:29: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict, (gpointer) "bar", GINT_TO_POINTER(20));
                                   ^
test/bin/OrderedDictionary/Test.c:34:22: error: use of undeclared identifier 'dict'; did you mean 'div'?
        g_hash_table_insert(dict, (gpointer) "bar", GINT_TO_POINTER(20));
                            ^~~~
                            div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/OrderedDictionary/Test.c:35:29: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict, (gpointer) "quux", GINT_TO_POINTER(30));
                                   ^
test/bin/OrderedDictionary/Test.c:35:22: error: use of undeclared identifier 'dict'; did you mean 'div'?
        g_hash_table_insert(dict, (gpointer) "quux", GINT_TO_POINTER(30));
                            ^~~~
                            div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/OrderedDictionary/Test.c:37:2: error: use of undeclared identifier 'dict2'
        dict2 = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
        ^
test/bin/OrderedDictionary/Test.c:37:11: error: expected expression
        dict2 = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
                 ^
test/bin/OrderedDictionary/Test.c:38:51: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict2, GINT_TO_POINTER(42), (gpointer) "answer");
                                                         ^
test/bin/OrderedDictionary/Test.c:38:22: error: use of undeclared identifier 'dict2'
        g_hash_table_insert(dict2, GINT_TO_POINTER(42), (gpointer) "answer");
                            ^
test/bin/OrderedDictionary/Test.c:39:40: error: use of undeclared identifier 'dict'; did you mean 'div'?
        bool returnValue = dict.count == 2 && dict["foo"] == 12 && dict["quux"] == 30 &&  && strcmp(dict2[42], "answer") == 0 && (int) strlen(dict2[42]) == 6;
                                              ^~~~
                                              div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/OrderedDictionary/Test.c:39:44: error: array subscript is not an integer
        bool returnValue = dict.count == 2 && dict["foo"] == 12 && dict["quux"] == 30 &&  && strcmp(dict2[42], "answer") == 0 && (int) strlen(dict2[42]) == 6;
                                                  ^~~~~~
test/bin/OrderedDictionary/Test.c:39:21: error: use of undeclared identifier 'dict'
        bool returnValue = dict.count == 2 && dict["foo"] == 12 && dict["quux"] == 30 &&  && strcmp(dict2[42], "answer") == 0 && (int) strlen(dict2[42]) == 6;
                           ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
        OrderedDictionary<string, int>() dict; //FAIL: c cpp d swift cl
test/bin/OrderedDictionary/c.txt
/bin/sh: line 1: ./test/bin/OrderedDictionary/c.exe: No such file or directory
        OrderedDictionary<string, int>() dict; //FAIL: c cpp d swift cl
test/bin/RegexCompile/Test.c
test/bin/RegexCompile/c.exe
test/bin/RegexCompile/c.txt

=================================================================
==8915==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 144 byte(s) in 2 object(s) allocated from:
    #0 0x55a119a509c1 in __interceptor_calloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd89c1) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cbdb4a31 in g_malloc0 (/usr/lib/libglib-2.0.so.0+0x5fa31) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Direct leak of 20 byte(s) in 3 object(s) allocated from:
    #0 0x55a119a50669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd8669) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cbdb3e19 in g_malloc (/usr/lib/libglib-2.0.so.0+0x5ee19) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 20480 byte(s) in 1 object(s) allocated from:
    #0 0x55a119a50669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd8669) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cba16577 in pcre2_match_8 (/usr/lib/libpcre2-8.so.0+0x64577) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 322 byte(s) in 2 object(s) allocated from:
    #0 0x55a119a50669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd8669) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cb9bfe69 in pcre2_compile_8 (/usr/lib/libpcre2-8.so.0+0xde69) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)
    #2 0x7fc9cba2103f  (/usr/lib/libpcre2-8.so.0+0x6f03f) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 144 byte(s) in 1 object(s) allocated from:
    #0 0x55a119a50669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd8669) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cb9c46e2  (/usr/lib/libpcre2-8.so.0+0x126e2) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x55a119a50669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd8669) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cb9c4705  (/usr/lib/libpcre2-8.so.0+0x12705) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x55a119a509c1 in __interceptor_calloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd89c1) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cbdb4a31 in g_malloc0 (/usr/lib/libglib-2.0.so.0+0x5fa31) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x55a119a4f79a in __interceptor_realloc.part.0 asan_malloc_linux.cpp.o
    #1 0x7fc9cbdb4ad0 in g_realloc (/usr/lib/libglib-2.0.so.0+0x5fad0) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 21 byte(s) in 2 object(s) allocated from:
    #0 0x55a119a50669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexCompile/c.exe+0xd8669) (BuildId: 6d4fd675771d5976b275a3e44661637b17a73a4b)
    #1 0x7fc9cbdb3e19 in g_malloc (/usr/lib/libglib-2.0.so.0+0x5ee19) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

SUMMARY: AddressSanitizer: 21299 byte(s) leaked in 14 allocation(s).
        re = Regex.Compile("(B.+?) (\\wo\\w)", RegexOptions.IgnoreCase); //FAIL: c TODO memleak
test/bin/RegexMatch/Test.c
test/bin/RegexMatch/c.exe
test/bin/RegexMatch/c.txt

=================================================================
==9024==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f1679c1 in __interceptor_calloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd89c1) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c4e9a31 in g_malloc0 (/usr/lib/libglib-2.0.so.0+0x5fa31) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Direct leak of 20 byte(s) in 3 object(s) allocated from:
    #0 0x55e77f167669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd8669) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c4e8e19 in g_malloc (/usr/lib/libglib-2.0.so.0+0x5ee19) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 20480 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f167669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd8669) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c14b577 in pcre2_match_8 (/usr/lib/libpcre2-8.so.0+0x64577) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 173 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f167669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd8669) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c0f4e69 in pcre2_compile_8 (/usr/lib/libpcre2-8.so.0+0xde69) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)
    #2 0x7f577c15603f  (/usr/lib/libpcre2-8.so.0+0x6f03f) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 144 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f167669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd8669) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c0f96e2  (/usr/lib/libpcre2-8.so.0+0x126e2) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f167669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd8669) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c0f9705  (/usr/lib/libpcre2-8.so.0+0x12705) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f1679c1 in __interceptor_calloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd89c1) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c4e9a31 in g_malloc0 (/usr/lib/libglib-2.0.so.0+0x5fa31) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f16679a in __interceptor_realloc.part.0 asan_malloc_linux.cpp.o
    #1 0x7f577c4e9ad0 in g_realloc (/usr/lib/libglib-2.0.so.0+0x5fad0) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 15 byte(s) in 1 object(s) allocated from:
    #0 0x55e77f167669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatch/c.exe+0xd8669) (BuildId: 1de0df9672b5806a3ea622e2d148c143cfedf5eb)
    #1 0x7f577c4e8e19 in g_malloc (/usr/lib/libglib-2.0.so.0+0x5ee19) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

SUMMARY: AddressSanitizer: 21096 byte(s) leaked in 11 allocation(s).
            && m.Value == "brown fox" //FAIL: c TODO memleak
test/bin/RegexMatchPtr/Test.c
test/bin/RegexMatchPtr/c.exe
test/bin/RegexMatchPtr/c.txt

=================================================================
==9056==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf39c1 in __interceptor_calloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd89c1) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f88e2a31 in g_malloc0 (/usr/lib/libglib-2.0.so.0+0x5fa31) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Direct leak of 20 byte(s) in 3 object(s) allocated from:
    #0 0x557561cf3669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd8669) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f88e1e19 in g_malloc (/usr/lib/libglib-2.0.so.0+0x5ee19) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 20480 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf3669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd8669) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f8544577 in pcre2_match_8 (/usr/lib/libpcre2-8.so.0+0x64577) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 173 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf3669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd8669) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f84ede69 in pcre2_compile_8 (/usr/lib/libpcre2-8.so.0+0xde69) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)
    #2 0x7fc2f854f03f  (/usr/lib/libpcre2-8.so.0+0x6f03f) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 144 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf3669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd8669) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f84f26e2  (/usr/lib/libpcre2-8.so.0+0x126e2) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf3669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd8669) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f84f2705  (/usr/lib/libpcre2-8.so.0+0x12705) (BuildId: bd281ab432f97f6a7c0af1c286a30d6f9160013a)

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf39c1 in __interceptor_calloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd89c1) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f88e2a31 in g_malloc0 (/usr/lib/libglib-2.0.so.0+0x5fa31) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf279a in __interceptor_realloc.part.0 asan_malloc_linux.cpp.o
    #1 0x7fc2f88e2ad0 in g_realloc (/usr/lib/libglib-2.0.so.0+0x5fad0) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

Indirect leak of 15 byte(s) in 1 object(s) allocated from:
    #0 0x557561cf3669 in __interceptor_malloc (/tmp/makepkg/build/cito-git/src/cito/test/bin/RegexMatchPtr/c.exe+0xd8669) (BuildId: 9cad780bf433b1724e68b71a1045b3201d69af00)
    #1 0x7fc2f88e1e19 in g_malloc (/usr/lib/libglib-2.0.so.0+0x5ee19) (BuildId: 2ec3466acaa7123dcc6ba1d1dd61e8fe9f75991f)

SUMMARY: AddressSanitizer: 21096 byte(s) leaked in 11 allocation(s).
            && m.Value == "brown fox" //FAIL: c TODO memleak
test/bin/StForeachList/Test.c
test/bin/StForeachList/c.exe
test/bin/StForeachList/Test.c:97:63: error: incompatible pointer types initializing 'const Test *const *' (aka 'const struct Test *const *') with an expression of type 'const Test *' (aka 'const struct Test *') [-Werror,-Wincompatible-pointer-types]
        for (Test const *inline_ = (Test const *) ol->data, * const *ciend = inline_ + ol->len; inline_ < ciend; inline_++)
                                                                     ^       ~~~~~~~~~~~~~~~~~
test/bin/StForeachList/Test.c:97:98: error: comparison of distinct pointer types ('const Test *' (aka 'const struct Test *') and 'const Test *const *' (aka 'const struct Test *const *')) [-Werror,-Wcompare-distinct-pointer-types]
        for (Test const *inline_ = (Test const *) ol->data, * const *ciend = inline_ + ol->len; inline_ < ciend; inline_++)
                                                                                                ~~~~~~~ ^ ~~~~~
test/bin/StForeachList/Test.c:98:20: error: member reference type 'Test' (aka 'struct Test') is not a pointer; did you mean to use '.'?
                sum += (*inline_)->foo;
                       ~~~~~~~~~~^~
                                 .
3 errors generated.
        foreach (Test inline in ol) //FAIL: c TODO
test/bin/StForeachList/c.txt
/bin/sh: line 1: ./test/bin/StForeachList/c.exe: No such file or directory
        foreach (Test inline in ol) //FAIL: c TODO
test/bin/StForeachOrderedDictionary/Test.c
test/StForeachOrderedDictionary.ci(5): ERROR: OrderedDictionary not supported when targeting C
test/StForeachOrderedDictionary.ci(5): ERROR: OrderedDictionary not supported when targeting C
test/StForeachOrderedDictionary.ci(10): ERROR: OrderedDictionary not supported when targeting C
test/StForeachOrderedDictionary.ci(16): ERROR: OrderedDictionary not supported when targeting C
test/StForeachOrderedDictionary.ci(16): ERROR: OrderedDictionary not supported when targeting C
test/StForeachOrderedDictionary.ci(21): ERROR: OrderedDictionary not supported when targeting C
        OrderedDictionary<int, int>() dict; //FAIL: c cpp d swift cl
test/bin/StForeachOrderedDictionary/c.exe
test/bin/StForeachOrderedDictionary/Test.c:29:2: error: use of undeclared identifier 'dict'
        dict = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
        ^
test/bin/StForeachOrderedDictionary/Test.c:29:10: error: expected expression
        dict = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
                ^
test/bin/StForeachOrderedDictionary/Test.c:30:2: error: call to undeclared function 'g_hash_table_insert'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration]
        g_hash_table_insert(dict, GINT_TO_POINTER(3), GINT_TO_POINTER(5));
        ^
test/bin/StForeachOrderedDictionary/Test.c:30:28: error: call to undeclared function 'GINT_TO_POINTER'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration]
        g_hash_table_insert(dict, GINT_TO_POINTER(3), GINT_TO_POINTER(5));
                                  ^
test/bin/StForeachOrderedDictionary/Test.c:30:22: error: use of undeclared identifier 'dict'; did you mean 'div'?
        g_hash_table_insert(dict, GINT_TO_POINTER(3), GINT_TO_POINTER(5));
                            ^~~~
                            div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/StForeachOrderedDictionary/Test.c:31:22: error: use of undeclared identifier 'dict'; did you mean 'div'?
        g_hash_table_insert(dict, GINT_TO_POINTER(1), GINT_TO_POINTER(10));
                            ^~~~
                            div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/StForeachOrderedDictionary/Test.c:32:22: error: use of undeclared identifier 'dict'; did you mean 'div'?
        g_hash_table_insert(dict, GINT_TO_POINTER(2), GINT_TO_POINTER(15));
                            ^~~~
                            div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
test/bin/StForeachOrderedDictionary/Test.c:34:2: error: use of undeclared identifier 'dict2'
        dict2 = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
        ^
test/bin/StForeachOrderedDictionary/Test.c:34:11: error: expected expression
        dict2 = () CiShared_Make(1, sizeof(OrderedDictionary), NULL, NULL);
                 ^
test/bin/StForeachOrderedDictionary/Test.c:35:30: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict2, (gpointer) "I", GINT_TO_POINTER(1));
                                    ^
test/bin/StForeachOrderedDictionary/Test.c:35:22: error: use of undeclared identifier 'dict2'
        g_hash_table_insert(dict2, (gpointer) "I", GINT_TO_POINTER(1));
                            ^
test/bin/StForeachOrderedDictionary/Test.c:36:30: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict2, (gpointer) "", GINT_TO_POINTER(0));
                                    ^
test/bin/StForeachOrderedDictionary/Test.c:36:22: error: use of undeclared identifier 'dict2'
        g_hash_table_insert(dict2, (gpointer) "", GINT_TO_POINTER(0));
                            ^
test/bin/StForeachOrderedDictionary/Test.c:37:30: error: use of undeclared identifier 'gpointer'
        g_hash_table_insert(dict2, (gpointer) "II", GINT_TO_POINTER(2));
                                    ^
test/bin/StForeachOrderedDictionary/Test.c:37:22: error: use of undeclared identifier 'dict2'
        g_hash_table_insert(dict2, (gpointer) "II", GINT_TO_POINTER(2));
                            ^
test/bin/StForeachOrderedDictionary/Test.c:39:2: error: call to undeclared function 'OrderedDictionary_Destruct'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration]
        OrderedDictionary_Destruct(&dict2);
        ^
test/bin/StForeachOrderedDictionary/Test.c:39:30: error: use of undeclared identifier 'dict2'
        OrderedDictionary_Destruct(&dict2);
                                    ^
test/bin/StForeachOrderedDictionary/Test.c:40:30: error: use of undeclared identifier 'dict'; did you mean 'div'?
        OrderedDictionary_Destruct(&dict);
                                    ^~~~
                                    div
/usr/include/stdlib.h:873:14: note: 'div' declared here
extern div_t div (int __numer, int __denom)
             ^
18 errors generated.
        OrderedDictionary<int, int>() dict; //FAIL: c cpp d swift cl
test/bin/StForeachOrderedDictionary/c.txt
/bin/sh: line 1: ./test/bin/StForeachOrderedDictionary/c.exe: No such file or directory
        OrderedDictionary<int, int>() dict; //FAIL: c cpp d swift cl
test/bin/StIfIsVar/Test.c
test/StIfIsVar.ci(17): ERROR: 'is' operator not supported when targeting C
        if (b is Derived ro) //FAIL: c js py swift ts cl TODO; java 17
test/bin/StIfIsVar/c.exe
In file included from test/bin/StIfIsVar/Test.c:3:
test/bin/StIfIsVar/Test.h:8:37: error: unknown type name 'Derived'
static bool Derived_IsDerived(const Derived *self);
                                    ^
test/bin/StIfIsVar/Test.c:23:3: error: use of undeclared identifier 'Base_IsDerived'
                Base_IsDerived,
                ^
test/bin/StIfIsVar/Test.c:48:8: error: expected ')'
        if (b is const Derived *ro)
              ^
test/bin/StIfIsVar/Test.c:48:5: note: to match this '('
        if (b is const Derived *ro)
           ^
3 errors generated.
In file included from test/Runner.c:3:
test/bin/StIfIsVar/Test.h:8:37: error: unknown type name 'Derived'
static bool Derived_IsDerived(const Derived *self);
                                    ^
1 error generated.
        if (b is Derived ro) //FAIL: c js py swift ts cl TODO; java 17
test/bin/StIfIsVar/c.txt
/bin/sh: line 1: ./test/bin/StIfIsVar/c.exe: No such file or directory
        if (b is Derived ro) //FAIL: c js py swift ts cl TODO; java 17
test/bin/StringInterpolatedObject/Test.c
test/bin/StringInterpolatedObject/c.exe
test/bin/StringInterpolatedObject/Test.c:71:87: error: call to undeclared function 'Abstract_ToString'; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration]
        char *citemp0 = CiString_Format("%s%s%s", Simple_ToString(&s), Overrid_ToString(&o), Abstract_ToString(a));
                                                                                             ^
1 error generated.
        return $"{s}{o}{a}" == "SimpOverOver"; //FAIL: c TODO; cpp C++20
test/bin/StringInterpolatedObject/c.txt
/bin/sh: line 1: ./test/bin/StringInterpolatedObject/c.exe: No such file or directory
        return $"{s}{o}{a}" == "SimpOverOver"; //FAIL: c TODO; cpp C++20
test/bin/StringWriter/Test.c
test/StringWriter.ci(5): ERROR: StringWriter not supported when targeting C
test/StringWriter.ci(7): ERROR: Clear not supported when targeting C
test/StringWriter.ci(17): ERROR: ToString not supported when targeting C
        StringWriter() w; //FAIL: c d java js swift ts TODO; cl
test/bin/StringWriter/c.exe
test/bin/StringWriter/Test.c:10:2: error: use of undeclared identifier 'w'
        w;
        ^
test/bin/StringWriter/Test.c:11:19: error: use of undeclared identifier 'w'
        fputs("kill me", w);
                         ^
test/bin/StringWriter/Test.c:13:17: error: use of undeclared identifier 'w'
        fputs("Hello", w);
                       ^
test/bin/StringWriter/Test.c:15:11: error: use of undeclared identifier 'w'
        fputs(s, w);
                 ^
test/bin/StringWriter/Test.c:16:14: error: use of undeclared identifier 'w'
        FILE *tw = &w->base;
                    ^
test/bin/StringWriter/Test.c:19:10: error: use of undeclared identifier 'w'
        fprintf(w, "%lld", (long long) l);
                ^
test/bin/StringWriter/Test.c:21:12: error: use of undeclared identifier 'w'
        putc('c', w);
                  ^
test/bin/StringWriter/Test.c:22:16: error: expected expression
        return strcmp(, "HelloWorld42599c") == 0;
                      ^
8 errors generated.
        StringWriter() w; //FAIL: c d java js swift ts TODO; cl
test/bin/StringWriter/c.txt
/bin/sh: line 1: ./test/bin/StringWriter/c.exe: No such file or directory
        StringWriter() w; //FAIL: c d java js swift ts TODO; cl
test/bin/StSwitchEnumWhen/Test.c
test/bin/StSwitchEnumWhen/c.exe
test/bin/StSwitchEnumWhen/Test.c:20:20: error: expected ':' after 'case'
        case Season_SPRING when !cold:
                          ^
                          :
test/bin/StSwitchEnumWhen/Test.c:20:21: error: use of undeclared identifier 'when'
        case Season_SPRING when !cold:
                           ^
test/bin/StSwitchEnumWhen/Test.c:23:18: error: expected ':' after 'case'
        case Season_FALL when cold:
                        ^
                        :
test/bin/StSwitchEnumWhen/Test.c:23:19: error: use of undeclared identifier 'when'
        case Season_FALL when cold:
                         ^
4 errors generated.
        case Season.Spring when !cold: //FAIL: c cpp d java js py ts cl TODO
test/bin/StSwitchEnumWhen/c.txt
/bin/sh: line 1: ./test/bin/StSwitchEnumWhen/c.exe: No such file or directory
        case Season.Spring when !cold: //FAIL: c cpp d java js py ts cl TODO
test/bin/StSwitchType/Test.c
test/StSwitchType.ci(29): ERROR: Type-matching 'switch' not supported when targeting C
        switch (a) { //FAIL: c cl
test/bin/StSwitchType/c.exe
test/bin/StSwitchType/c.txt
        switch (a) { //FAIL: c cl
test/bin/StSwitchTypeWhen/Test.c
test/StSwitchTypeWhen.ci(29): ERROR: Type-matching 'switch' not supported when targeting C
        switch (a) { //FAIL: c cl
test/bin/StSwitchTypeWhen/c.exe
test/bin/StSwitchTypeWhen/Test.c:38:1: error: non-void function does not return a value [-Werror,-Wreturn-type]
}
^
1 error generated.
        switch (a) { //FAIL: c cl
test/bin/StSwitchTypeWhen/c.txt
/bin/sh: line 1: ./test/bin/StSwitchTypeWhen/c.exe: No such file or directory
        switch (a) { //FAIL: c cl
test/bin/ConstLong/Test.cpp
test/bin/ConstLong/cpp.exe
test/bin/ConstLong/Test.cpp:7:24: error: result of comparison of constant 1000000000000000 with expression of type 'int' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
        return i * 1000000000 == 1000000000000000;
               ~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~
1 error generated.
            && i * Bar == Foo; //FAIL: c cpp cs d java ts cl
test/bin/ConstLong/cpp.txt
/bin/sh: line 1: ./test/bin/ConstLong/cpp.exe: No such file or directory
            && i * Bar == Foo; //FAIL: c cpp cs d java ts cl
test/bin/OrderedDictionary/Test.cpp
test/OrderedDictionary.ci(5): ERROR: OrderedDictionary not supported when targeting C++
test/OrderedDictionary.ci(7): ERROR: Clear not supported when targeting C++
test/OrderedDictionary.ci(11): ERROR: Remove not supported when targeting C++
test/OrderedDictionary.ci(12): ERROR: OrderedDictionary not supported when targeting C++
test/OrderedDictionary.ci(14): ERROR: ContainsKey not supported when targeting C++
        OrderedDictionary<string, int>() dict; //FAIL: c cpp d swift cl
test/bin/OrderedDictionary/cpp.exe
test/bin/OrderedDictionary/Test.cpp:2:10: fatal error: 'NOT_SUPPORTED' file not found
#include <NOT_SUPPORTED>
         ^~~~~~~~~~~~~~~
1 error generated.
        OrderedDictionary<string, int>() dict; //FAIL: c cpp d swift cl
test/bin/OrderedDictionary/cpp.txt
/bin/sh: line 1: ./test/bin/OrderedDictionary/cpp.exe: No such file or directory
        OrderedDictionary<string, int>() dict; //FAIL: c cpp d swift cl
test/bin/RegexEscape/Test.cpp
test/RegexEscape.ci(5): ERROR: Escape not supported when targeting C++
test/RegexEscape.ci(6): ERROR: Escape not supported when targeting C++
        string() pattern = Regex.Escape("b+c"); //FAIL: cpp swift TODO; cl
test/bin/RegexEscape/cpp.exe
test/bin/RegexEscape/cpp.txt
        string() pattern = Regex.Escape("b+c"); //FAIL: cpp swift TODO; cl
test/bin/RegexIsMatch/Test.cpp
test/bin/RegexIsMatch/cpp.exe
test/bin/RegexIsMatch/Test.cpp:9:531: error: no member named 'NOT_SUPPORTED_singleline' in 'std::basic_regex<char>'
        return std::regex_search(s.begin(), s.end(), std::regex("^\\d+$")) && std::regex_search(s.begin(), s.end(), std::regex("3")) && !std::regex_search(s.begin(), s.end(), std::regex("x")) && std::regex_search("1/\\2", std::regex("^\\d/\\\\\\d$")) && std::regex_search("foo", std::regex("FOO", std::regex::ECMAScript | std::regex::icase)) && std::regex_search("a\nb", std::regex("^B", std::regex::ECMAScript | std::regex::icase | std::regex::multiline)) && std::regex_search("\n", std::regex(".", std::regex::ECMAScript | std::regex::NOT_SUPPORTED_singleline));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ~~~~~~~~~~~~^
1 error generated.
            && Regex.IsMatch("\n", ".", RegexOptions.Singleline & ~RegexOptions.Multiline); //FAIL: cpp
test/bin/RegexIsMatch/cpp.txt
/bin/sh: line 1: ./test/bin/RegexIsMatch/cpp.exe: No such file or directory
            && Regex.IsMatch("\n", ".", RegexOptions.Singleline & ~RegexOptions.Multiline); //FAIL: cpp
test/bin/StForeachOrderedDictionary/Test.cpp
test/StForeachOrderedDictionary.ci(5): ERROR: OrderedDictionary not supported when targeting C++
test/StForeachOrderedDictionary.ci(16): ERROR: OrderedDictionary not supported when targeting C++
        OrderedDictionary<int, int>() dict; //FAIL: c cpp d swift cl
test/bin/StForeachOrderedDictionary/cpp.exe
test/bin/StForeachOrderedDictionary/Test.cpp:2:10: fatal error: 'NOT_SUPPORTED' file not found
#include <NOT_SUPPORTED>
         ^~~~~~~~~~~~~~~
1 error generated.
        OrderedDictionary<int, int>() dict; //FAIL: c cpp d swift cl
test/bin/StForeachOrderedDictionary/cpp.txt
/bin/sh: line 1: ./test/bin/StForeachOrderedDictionary/cpp.exe: No such file or directory
        OrderedDictionary<int, int>() dict; //FAIL: c cpp d swift cl
test/bin/StSwitchEnumWhen/Test.cpp
test/bin/StSwitchEnumWhen/cpp.exe
test/bin/StSwitchEnumWhen/Test.cpp:7:21: error: expected ':' after 'case'
        case Season::spring when !cold:
                           ^
                           :
test/bin/StSwitchEnumWhen/Test.cpp:7:22: error: use of undeclared identifier 'when'
        case Season::spring when !cold:
                            ^
test/bin/StSwitchEnumWhen/Test.cpp:10:19: error: expected ':' after 'case'
        case Season::fall when cold:
                         ^
                         :
test/bin/StSwitchEnumWhen/Test.cpp:10:20: error: unknown type name 'when'
        case Season::fall when cold:
                          ^
test/bin/StSwitchEnumWhen/Test.cpp:10:29: error: expected ';' at end of declaration
        case Season::fall when cold:
                                   ^
                                   ;
test/bin/StSwitchEnumWhen/Test.cpp:11:21: error: expected ':' after 'case'
        case Season::winter when cold:
                           ^
                           :
test/bin/StSwitchEnumWhen/Test.cpp:11:22: error: unknown type name 'when'
        case Season::winter when cold:
                            ^
test/bin/StSwitchEnumWhen/Test.cpp:11:31: error: expected ';' at end of declaration
        case Season::winter when cold:
                                     ^
                                     ;
8 errors generated.
        case Season.Spring when !cold: //FAIL: c cpp d java js py ts cl TODO
test/bin/StSwitchEnumWhen/cpp.txt
/bin/sh: line 1: ./test/bin/StSwitchEnumWhen/cpp.exe: No such file or directory
        case Season.Spring when !cold: //FAIL: c cpp d java js py ts cl TODO
test/bin/ArrayBinarySearch/Test.cs
test/bin/ArrayBinarySearch/cs.dll
error CS0006: Metadata file '/usr/share/dotnet/sdk/7.0.103/../../packs/Microsoft.NETCore.App.Ref/6.0.16/ref/net6.0/System.Collections.dll' could not be found
error CS0006: Metadata file '/usr/share/dotnet/sdk/7.0.103/../../packs/Microsoft.NETCore.App.Ref/6.0.16/ref/net6.0/System.Collections.Specialized.dll' could not be found
error CS0006: Metadata file '/usr/share/dotnet/sdk/7.0.103/../../packs/Microsoft.NETCore.App.Ref/6.0.16/ref/net6.0/System.Console.dll' could not be found
error CS0006: Metadata file '/usr/share/dotnet/sdk/7.0.103/../../packs/Microsoft.NETCore.App.Ref/6.0.16/ref/net6.0/System.Linq.dll' could not be found
error CS0006: Metadata file '/usr/share/dotnet/sdk/7.0.103/../../packs/Microsoft.NETCore.App.Ref/6.0.16/ref/net6.0/System.Runtime.dll' could not be found
error CS0006: Metadata file '/usr/share/dotnet/sdk/7.0.103/../../packs/Microsoft.NETCore.App.Ref/6.0.16/ref/net6.0/System.Text.RegularExpressions.dll' could not be found
error CS0006: Metadata file '/usr/share/dotnet/sdk/7.0.103/../../packs/Microsoft.NETCore.App.Ref/6.0.16/ref/net6.0/System.Threading.dll' could not be found
make: *** [Makefile:124: test/bin/ArrayBinarySearch/cs.dll] Error 1

I have not continued with the other test targets, because it would cause me too much work to test all test. I just had a short look into make test-cl, which also gives errors, and make test-d, which seems quite OK.

I am on Artix GNU/Linux (x86_64).

Software versions:

pfusik commented 1 year ago

These are mostly known failures and marked as such with the //FAIL: comment.

The fatal error comes from an attempt to run C# tests on .NET 7 SDK while the scripts and configs are prepared for .NET 6 which is LTS at the moment. I want to fix this so the C# tests run on both .NET 7 and 6.

Don't worry, ASAP is not leaking memory. It uses few heap allocations.