Giter Site home page Giter Site logo

jckarter / clay Goto Github PK

View Code? Open in Web Editor NEW
401.0 401.0 33.0 34.42 MB

The Clay programming language

Home Page: http://claylabs.com/clay

License: Other

C++ 93.42% CSS 0.15% Emacs Lisp 0.57% Vim Script 0.56% C 1.68% Java 1.35% Objective-C 0.01% Shell 0.19% Python 2.00% Go 0.08%

clay's People

Contributors

aep avatar alfredr avatar arunchaganty avatar blei avatar ceninan avatar crabtw avatar drmaciver avatar erg avatar galchinsky avatar igauravsehrawat avatar jb55 avatar jckarter avatar kssreeram avatar mrjbq7 avatar sh4rk avatar shalabhc avatar stepancheg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clay's Issues

Fix failing tests on Windows

Failed tests:
  commandline\dispatch
  externals\abi
  floats\literals\long
  io\sockets\addresses
  io\sockets\connections
  io\sockets\reading
  io\sockets\valuesemantics
  lua\capi\claytolua
  lua\capi\luahello
  lua\capi\luatoclay
  lua\highlevel\claytolua
  lua\highlevel\customtype1
  lua\highlevel\customtype2
  lua\highlevel\customtype3
  lua\highlevel\customtype4
  lua\highlevel\customtype5
  lua\highlevel\luahello
  lua\highlevel\luatoclay
  math\1
  numbers\parser\1
  numbers\parser\4
  parsing
  printing\int128
  remote\messages\simple
  sqlite
  sqlite\sequences
  uncategorized\41
  uncategorized\7
=====================
commandline\dispatch
=====================
compiler error
--------------
clayobj.obj-694158 : error LNK2019: unresolved external symbol _strtoll referenced in function _clay_printlnUsage_28_StringConstant_2C__20_StringConstant_2C__20_Vector_5B_Char_5D__2C__20_StringConstant_2C__20_StringConstant_29_

test.exe : fatal error LNK1120: 1 unresolved externals


clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
externals\abi
=====================
out.txt and err.txt mismatch
expected out.txt
----------------

Passing C arguments to Clay:
3248800164u, true, 0x1.c1a4c0p+123f, 0x1.c1a4c1a4c1a4cp+123
0x1.c1a4c0p+123f+0x1.abcdeep+99fj
0x1.c1a4c1a4c1a4cp+123+0x1.abcdefabcdefap+99j
Struct1(13953490458868236708ul)
Struct2(3248800164u)
Struct3(3248800164u, 305419896u)
Struct4(3248800164u, 305419896u, 2882382797u)
Struct5(3248800164u, 305419896u, 12379739850550389709ul)
Struct6(3248800164u, 12379739850550389709ul)
Struct7(3248800164u, 12379739850550389709ul, 305419896u)
Struct8(13953490458868236708ul, 12379739850550389709ul, 1311768465173141112ul)
Struct9(3248800164u, 0x1.c1a4c1a4c1a4cp+123)
Struct10(3248800164u, 0x1.c1a4c0p+123f)
Struct11(0x1.c1a4c1a4c1a4cp+123, 3248800164u)
Struct12(0x1.c1a4c0p+123f, 3248800164u)
Struct13(0x1.c1a4c0p+123f)
Struct14(0x1.c1a4c0p+123f, 0x1.abcdeep+99f)
Struct15(0x1.c1a4c0p+123f, 0x1.abcdeep+99f, 0x1.010102p+10f)
Struct16(0x1.c1a4c0p+123f, 0x1.abcdeep+99f, 0x1.010102p+10f, 0x1.020202p+20f, 0x1.030302p+30f)
Struct17(0x1.c1a4c1a4c1a4cp+123)
Struct18(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99)
Struct19(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99, 0x1.0101010101010p+10)
Struct20(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99, 0x1.0101010101010p+10, 0x1.0202020202020p+20)
Struct21(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99, 0x1.0101010101010p+10, 0x1.0202020202020p+20, 0x1.0303030303030p+30)
3248800164u
0x1.c1a4c0p+123f
3248800164u
0x1.c1a4c1a4c1a4cp+123
3248800164u
0x1.c1a4c0p+123f+0x1.abcdeep+99fj
3248800164u
0x1.c1a4c1a4c1a4cp+123+0x1.abcdefabcdefap+99j

Passing Clay return values to C:
c1a4c1a4 1 0x1.c1a4cp+123 0x1.c1a4c1a4c1a4cp+123
0x1.c1a4cp+123,0x1.abcdeep+99
0x1.c1a4c1a4c1a4cp+123,0x1.abcdefabcdefap+99
c1a4c1a4c1a4c1a4
c1a4c1a4
c1a4c1a4 12345678
c1a4c1a4 12345678 abcdabcd
c1a4c1a4 12345678 abcdabcdabcdabcd
c1a4c1a4 abcdabcdabcdabcd
c1a4c1a4 abcdabcdabcdabcd 12345678
c1a4c1a4c1a4c1a4 abcdabcdabcdabcd 1234567812345678
c1a4c1a4 0x1.c1a4c1a4c1a4cp+123
c1a4c1a4 0x1.c1a4cp+123
0x1.c1a4c1a4c1a4cp+123 c1a4c1a4
0x1.c1a4cp+123 c1a4c1a4
0x1.c1a4cp+123
0x1.c1a4cp+123 0x1.abcdeep+99
0x1.c1a4cp+123 0x1.abcdeep+99 0x1.010102p+10
0x1.c1a4cp+123 0x1.abcdeep+99 0x1.010102p+10 0x1.020202p+20 0x1.030302p+30
0x1.c1a4c1a4c1a4cp+123
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99 0x1.010101010101p+10
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99 0x1.010101010101p+10 0x1.020202020202p+20
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99 0x1.010101010101p+10 0x1.020202020202p+20 0x1.030303030303p+30
0: c1a4c1a4
1: 0x1.c1a4cp+123
0: c1a4c1a4
1: 0x1.c1a4c1a4c1a4cp+123
0: c1a4c1a4
1: 0x1.c1a4cp+123,0x1.abcdeep+99
0: c1a4c1a4
1: 0x1.c1a4c2p+123,0x1.abcdfp+99

Passing Clay arguments to C:
c1a4c1a4 1 0x1.c1a4cp+123 0x1.c1a4c1a4c1a4cp+123
0x1.c1a4cp+123,0x1.abcdeep+99
0x1.c1a4c1a4c1a4cp+123,0x1.abcdefabcdefap+99
c1a4c1a4c1a4c1a4
c1a4c1a4
c1a4c1a4 12345678
c1a4c1a4 12345678 abcdabcd
c1a4c1a4 12345678 abcdabcdabcdabcd
c1a4c1a4 abcdabcdabcdabcd
c1a4c1a4 abcdabcdabcdabcd 12345678
c1a4c1a4c1a4c1a4 abcdabcdabcdabcd 1234567812345678
c1a4c1a4 0x1.c1a4c1a4c1a4cp+123
c1a4c1a4 0x1.c1a4cp+123
0x1.c1a4c1a4c1a4cp+123 c1a4c1a4
0x1.c1a4cp+123 c1a4c1a4
0x1.c1a4cp+123
0x1.c1a4cp+123 0x1.abcdeep+99
0x1.c1a4cp+123 0x1.abcdeep+99 0x1.010102p+10
0x1.c1a4cp+123 0x1.abcdeep+99 0x1.010102p+10 0x1.020202p+20 0x1.030302p+30
0x1.c1a4c1a4c1a4cp+123
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99 0x1.010101010101p+10
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99 0x1.010101010101p+10 0x1.020202020202p+20
0x1.c1a4c1a4c1a4cp+123 0x1.abcdefabcdefap+99 0x1.010101010101p+10 0x1.020202020202p+20 0x1.030303030303p+30
0: c1a4c1a4
1: 0x1.c1a4cp+123
0: c1a4c1a4
1: 0x1.c1a4c1a4c1a4cp+123
0: c1a4c1a4
1: 0x1.c1a4cp+123,0x1.abcdeep+99
0: c1a4c1a4
1: 0x1.c1a4c2p+123,0x1.abcdfp+99

Passing C return values to Clay:
3248800164u, true, 0x1.c1a4c0p+123f, 0x1.c1a4c1a4c1a4cp+123
0x1.c1a4c0p+123f+0x1.abcdeep+99fj
0x1.c1a4c1a4c1a4cp+123+0x1.abcdefabcdefap+99j
Struct1(13953490458868236708ul)
Struct2(3248800164u)
Struct3(3248800164u, 305419896u)
Struct4(3248800164u, 305419896u, 2882382797u)
Struct5(3248800164u, 305419896u, 12379739850550389709ul)
Struct6(3248800164u, 12379739850550389709ul)
Struct7(3248800164u, 12379739850550389709ul, 305419896u)
Struct8(13953490458868236708ul, 12379739850550389709ul, 1311768465173141112ul)
Struct9(3248800164u, 0x1.c1a4c1a4c1a4cp+123)
Struct10(3248800164u, 0x1.c1a4c0p+123f)
Struct11(0x1.c1a4c1a4c1a4cp+123, 3248800164u)
Struct12(0x1.c1a4c0p+123f, 3248800164u)
Struct13(0x1.c1a4c0p+123f)
Struct14(0x1.c1a4c0p+123f, 0x1.abcdeep+99f)
Struct15(0x1.c1a4c0p+123f, 0x1.abcdeep+99f, 0x1.010102p+10f)
Struct16(0x1.c1a4c0p+123f, 0x1.abcdeep+99f, 0x1.010102p+10f, 0x1.020202p+20f, 0x1.030302p+30f)
Struct17(0x1.c1a4c1a4c1a4cp+123)
Struct18(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99)
Struct19(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99, 0x1.0101010101010p+10)
Struct20(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99, 0x1.0101010101010p+10, 0x1.0202020202020p+20)
Struct21(0x1.c1a4c1a4c1a4cp+123, 0x1.abcdefabcdefap+99, 0x1.0101010101010p+10, 0x1.0202020202020p+20, 0x1.0303030303030p+30)
3248800164u
0x1.c1a4c0p+123f
3248800164u
0x1.c1a4c1a4c1a4cp+123
3248800164u
0x1.c1a4c0p+123f+0x1.abcdeep+99fj
3248800164u
0x1.c1a4c1a4c1a4cp+123+0x1.abcdefabcdefap+99j

-------------
actual output
-------------
!! error code 1

----------------
expected err.txt
----------------

-------------
actual stderr
-------------
external_test.c:5:10: fatal error: 'complex.h' file not found
#include <complex.h>
         ^
1 error generated.


=====================
floats\literals\long
=====================
compiler error
--------------

###############################



main() {

    println(repr(0x1.0000_0000_0000_0002p0l));

-----------------^

    println(repr(0x1.0000_0000_0000_0001p0l));

    println(repr(0x1.0000_0000_0000_0003p0l));

###############################

C:\Users\Joe\Documents\Code\clay\test\floats\literals\long\main.clay(4,17): error: invalid float80 literal



compilation context: 

    main()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,33):

    getExitCode()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,26):

    callMain(Static[main])



=====================
io\sockets\addresses
=====================
compiler error
--------------

###############################



overload lookupInetHostname(n: UInt32) --> s: In_addr {

    s.s_addr <-- hostToNetwork(n);

-----^

}



###############################

C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5): error: no matching overload found

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(87,0)

        predicate "ReferenceType?(T) and (fieldNameIndex(T, Field) >= 0)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(61,0)

        predicate "ReferenceType?(T)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\statics\statics.clay(75,0)

        pattern "<generated expression>" did not match type "Struct_in_addr" of argument 1

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\records\records.clay(8,0)

        predicate "RecordWithField?(T, FIELD)" failed

    83 universal overloads not shown (show with -full-match-errors option)



compilation context: 

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\complex\complex.clay(92,15):

    fieldRef(Struct_in_addr, Static[#s_addr])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5):

    lookupInetHostname(UInt32)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,29):

    Inet(Struct_in_addr, UInt16)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,10):

    Inet(UInt32, Int32)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(27,24):

    expectSockaddrIn(TestStatus, StringConstant, UInt32, Int32, Inet)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(24,32):

    <lambda C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(23,42)>(TestStatus)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\statics\statics.clay(67,15):

    call(Static[<lambda C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(23,42)>], TestStatus)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\lambdas\lambdas.clay(73,33):

    LambdaBody[(TestStatus), ()](Static[<lambda C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(23,42)>])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\lambdas\lambdas.clay(17,48):

    new(LambdaBody[(TestStatus), ()])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\lambdas\lambdas.clay(17,29):

    Lambda[(TestStatus), ()](SharedPointer[LambdaBody[(TestStatus), ()]])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\lambdas\lambdas.clay(17,25):

    Lambda[(TestStatus), ()](Static[<lambda C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(23,42)>])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\test\test.clay(22,69):

    TestCase(StringConstant, Lambda[(TestStatus), ()], Bool)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\test\test.clay(22,38):

    TestCase(StringConstant, Static[<lambda C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(23,42)>])

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(23,20):

    Array[TestCase, 3](TestCase, TestCase, TestCase)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\arrays\arrays.clay(243,61):

    array(TestCase, TestCase, TestCase)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(22,48):

    TestSuite(StringConstant, Array[TestCase, 3])

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(22,17):

    testMain(TestSuite)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\addresses\test.clay(21,20):

    main()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,33):

    getExitCode(Int32)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,26):

    callMain(Static[main])



=====================
io\sockets\connections
=====================
compiler error
--------------

###############################



overload lookupInetHostname(n: UInt32) --> s: In_addr {

    s.s_addr <-- hostToNetwork(n);

-----^

}



###############################

C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5): error: no matching overload found

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(87,0)

        predicate "ReferenceType?(T) and (fieldNameIndex(T, Field) >= 0)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(61,0)

        predicate "ReferenceType?(T)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\statics\statics.clay(75,0)

        pattern "<generated expression>" did not match type "Struct_in_addr" of argument 1

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\records\records.clay(8,0)

        predicate "RecordWithField?(T, FIELD)" failed

    83 universal overloads not shown (show with -full-match-errors option)



compilation context: 

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\complex\complex.clay(92,15):

    fieldRef(Struct_in_addr, Static[#s_addr])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5):

    lookupInetHostname(UInt32)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,29):

    Inet(Struct_in_addr, UInt16)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,10):

    Inet(UInt32, Int32)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\connections\main.clay(12,36):

    ListenSocket(Inet)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\connections\main.clay(12,31):

    server(Vector[Vector[Char]])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(90,33):

    invokeCommand(Static[server], Vector[Vector[Char]])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(100,36):

    call(<lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Vector[Char])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\maybe\maybe.clay(46,77):

    maybeValue(Static[Vector[Char]], Vector[Char], <lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Static[(() => usage(..commandTuples))])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\maybe\maybe.clay(57,26):

    maybeValue(Static[Vector[Char]], Maybe[Vector[Char]], <lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Static[(() => usage(..commandTuples))])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\maybe\maybe.clay(57,26):

    maybe(Maybe[Vector[Char]], <lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Static[(() => usage(..commandTuples))])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,16):

    dispatchMain(Static[server], Static[client])

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\connections\main.clay(7,24):

    main()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,33):

    getExitCode(Int32)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,26):

    callMain(Static[main])



=====================
io\sockets\reading
=====================
compiler error
--------------

###############################



overload lookupInetHostname(n: UInt32) --> s: In_addr {

    s.s_addr <-- hostToNetwork(n);

-----^

}



###############################

C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5): error: no matching overload found

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(87,0)

        predicate "ReferenceType?(T) and (fieldNameIndex(T, Field) >= 0)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(61,0)

        predicate "ReferenceType?(T)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\statics\statics.clay(75,0)

        pattern "<generated expression>" did not match type "Struct_in_addr" of argument 1

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\records\records.clay(8,0)

        predicate "RecordWithField?(T, FIELD)" failed

    83 universal overloads not shown (show with -full-match-errors option)



compilation context: 

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\complex\complex.clay(92,15):

    fieldRef(Struct_in_addr, Static[#s_addr])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5):

    lookupInetHostname(UInt32)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,29):

    Inet(Struct_in_addr, UInt16)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,10):

    Inet(UInt32, Int32)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\reading\main.clay(13,36):

    ListenSocket(Inet)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\reading\main.clay(13,31):

    server(Vector[Vector[Char]])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(90,33):

    invokeCommand(Static[server], Vector[Vector[Char]])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(100,36):

    call(<lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Vector[Char])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\maybe\maybe.clay(46,77):

    maybeValue(Static[Vector[Char]], Vector[Char], <lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Static[(() => usage(..commandTuples))])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\maybe\maybe.clay(57,26):

    maybeValue(Static[Vector[Char]], Maybe[Vector[Char]], <lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Static[(() => usage(..commandTuples))])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\maybe\maybe.clay(57,26):

    maybe(Maybe[Vector[Char]], <lambda C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,27)>, Static[(() => usage(..commandTuples))])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\commandline\dispatch\dispatch.clay(97,16):

    dispatchMain(Static[server], Static[client])

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\reading\main.clay(7,24):

    main()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,33):

    getExitCode(Int32)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,26):

    callMain(Static[main])



=====================
io\sockets\valuesemantics
=====================
compiler error
--------------

###############################



overload lookupInetHostname(n: UInt32) --> s: In_addr {

    s.s_addr <-- hostToNetwork(n);

-----^

}



###############################

C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5): error: no matching overload found

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(87,0)

        predicate "ReferenceType?(T) and (fieldNameIndex(T, Field) >= 0)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\referencetypes\referencetypes.clay(61,0)

        predicate "ReferenceType?(T)" failed

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\statics\statics.clay(75,0)

        pattern "<generated expression>" did not match type "Struct_in_addr" of argument 1

    C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\records\records.clay(8,0)

        predicate "RecordWithField?(T, FIELD)" failed

    82 universal overloads not shown (show with -full-match-errors option)



compilation context: 

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\complex\complex.clay(92,15):

    fieldRef(Struct_in_addr, Static[#s_addr])

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(125,5):

    lookupInetHostname(UInt32)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,29):

    Inet(Struct_in_addr, UInt16)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\io\sockets\sockets.clay(97,10):

    Inet(UInt32, Int32)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\valuesemantics\main.clay(4,29):

    ListenSocket(Inet)

  C:\Users\Joe\Documents\Code\clay\test\io\sockets\valuesemantics\main.clay(4,24):

    main()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,33):

    getExitCode()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,26):

    callMain(Static[main])



=====================
lua\capi\claytolua
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-541068 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _lua_pcall referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _lua_getfield referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _lua_pushnumber referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _lua_call referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _lua_tonumber referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _lua_settop referenced in function _main

clayobj.obj-541068 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

test.exe : fatal error LNK1120: 10 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib'
clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
lua\capi\luahello
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-015442 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-015442 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-015442 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-015442 : error LNK2019: unresolved external symbol _lua_pcall referenced in function _main

clayobj.obj-015442 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

test.exe : fatal error LNK1120: 5 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib'
clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
lua\capi\luatoclay
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-349197 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-349197 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_pushcclosure referenced in function _main

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_setfield referenced in function _main

clayobj.obj-349197 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_pcall referenced in function _main

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_gettop referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_Static_5B_integerAddWithOverflow_5D__2C__20_StringConstant_2C__20_ReprFormatter_5B_Tuple_5B_CapturedLValue_5B_Int32_5D__2C__20_CapturedLValue_5B_Int32_5D__5D__5D__2C__20_StringConstant_29_

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_pushstring referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_Static_5B_integerAddWithOverflow_5D__2C__20_StringConstant_2C__20_ReprFormatter_5B_Tuple_5B_CapturedLValue_5B_Int32_5D__2C__20_CapturedLValue_5B_Int32_5D__5D__5D__2C__20_StringConstant_29_

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_error referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_Static_5B_integerAddWithOverflow_5D__2C__20_StringConstant_2C__20_ReprFormatter_5B_Tuple_5B_CapturedLValue_5B_Int32_5D__2C__20_CapturedLValue_5B_Int32_5D__5D__5D__2C__20_StringConstant_29_

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_isnumber referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_Static_5B_integerAddWithOverflow_5D__2C__20_StringConstant_2C__20_ReprFormatter_5B_Tuple_5B_CapturedLValue_5B_Int32_5D__2C__20_CapturedLValue_5B_Int32_5D__5D__5D__2C__20_StringConstant_29_

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_tonumber referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_Static_5B_integerAddWithOverflow_5D__2C__20_StringConstant_2C__20_ReprFormatter_5B_Tuple_5B_CapturedLValue_5B_Int32_5D__2C__20_CapturedLValue_5B_Int32_5D__5D__5D__2C__20_StringConstant_29_

clayobj.obj-349197 : error LNK2019: unresolved external symbol _lua_pushnumber referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_Static_5B_integerAddWithOverflow_5D__2C__20_StringConstant_2C__20_ReprFormatter_5B_Tuple_5B_CapturedLValue_5B_Int32_5D__2C__20_CapturedLValue_5B_Int32_5D__5D__5D__2C__20_StringConstant_29_

test.exe : fatal error LNK1120: 13 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib' [warn_drv_unused_argument]
clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]


=====================
lua\highlevel\claytolua
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-756211 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-756211 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-756211 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_pushnumber referenced in function _main

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_tointeger referenced in function _main

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_settop referenced in function _clay_lua_pop_28_Pointer_5B_UInt8_5D__2C__20_Int32_29_

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20__7B__20_lua_call_28_x.handle_2C__20_nargs_2C__20_nresults_29__3B__20__7D__29__29_

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20__7B__20_lua_call_28_x.handle_2C__20_nargs_2C__20_nresults_29__3B__20__7D__29__29_

clayobj.obj-756211 : error LNK2019: unresolved external symbol _lua_getfield referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

test.exe : fatal error LNK1120: 11 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib'
clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
lua\highlevel\customtype1
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-031165 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-031165 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-031165 : error LNK2019: unresolved external symbol _luaL_register referenced in function _main

clayobj.obj-031165 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_settop referenced in function _main

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_newuserdata referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkint_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _luaL_checkinteger referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkint_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_pushlstring referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_error referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _luaL_typerror referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20__7B__20_luaL_typerror_28_x.handle_2C__20_index_2C__20_cstring_28_expected_29__29__3B__20__7D__29__29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_touserdata referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20__7B__20_luaL_typerror_28_x.handle_2C__20_index_2C__20_cstring_28_expected_29__29__3B__20__7D__29__29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_pushinteger referenced in function _clay_IntArray_get_28_State_29_

clayobj.obj-031165 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_IntArray_size_28_State_29_

test.exe : fatal error LNK1120: 16 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib' [warn_drv_unused_argument]
clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]


=====================
lua\highlevel\customtype2
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-654664 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-654664 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-654664 : error LNK2019: unresolved external symbol _luaL_newmetatable referenced in function _main

clayobj.obj-654664 : error LNK2019: unresolved external symbol _luaL_register referenced in function _main

clayobj.obj-654664 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_settop referenced in function _clay_lua_pop_28_Pointer_5B_UInt8_5D__2C__20_Int32_29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_newuserdata referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_getfield referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_setmetatable referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkint_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _luaL_checkinteger referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkint_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_pushlstring referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_error referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _luaL_checkudata referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkudata_28_x.handle_2C__20_index_2C__20_cstring_28_tname_29__29__20__29__29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_pushinteger referenced in function _clay_IntArray_get_28_State_29_

clayobj.obj-654664 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_IntArray_get_28_State_29_

test.exe : fatal error LNK1120: 18 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib'
clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
lua\highlevel\customtype3
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-498283 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _luaL_newmetatable referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_pushvalue referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_setfield referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _luaL_register referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_settop referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkudata_28_x.handle_2C__20_index_2C__20_cstring_28_tname_29__29__20__29__29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _luaL_checkudata referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkudata_28_x.handle_2C__20_index_2C__20_cstring_28_tname_29__29__20__29__29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _luaL_checkinteger referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_pushlstring referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_error referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_pushinteger referenced in function _clay_IntArray_get_28_State_29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_newuserdata referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_getfield referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_setmetatable referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-498283 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_IntArray_new_28_State_29_

test.exe : fatal error LNK1120: 20 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib'
clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
lua\highlevel\customtype4
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-292385 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _luaL_newmetatable referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _luaL_register referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_settop referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_pushlstring referenced in function _clay_IntArray_tostring_28_State_29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkudata_28_x.handle_2C__20_index_2C__20_cstring_28_tname_29__29__20__29__29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _luaL_checkudata referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkudata_28_x.handle_2C__20_index_2C__20_cstring_28_tname_29__29__20__29__29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_error referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_pushinteger referenced in function _clay_IntArray_get_28_State_29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _luaL_checkinteger referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkint_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_newuserdata referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_getfield referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_setmetatable referenced in function _clay_IntArray_new_28_State_29_

clayobj.obj-292385 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_IntArray_new_28_State_29_

test.exe : fatal error LNK1120: 18 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib'
clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
lua\highlevel\customtype5
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_newmetatable referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_pushnumber referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_setfield referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_register referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkudata_28_x.handle_2C__20_index_2C__20_cstring_28_tname_29__29__20__29__29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_checkudata referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checkudata_28_x.handle_2C__20_index_2C__20_cstring_28_tname_29__29__20__29__29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_pushlstring referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_error referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_createtable referenced in function _clay_Point_xyArray_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_rawseti referenced in function _clay_Point_xyArray_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_settop referenced in function _clay_Point_xyArray_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_getfield referenced in function _clay_Point_index_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_pushvalue referenced in function _clay_Point_index_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_rawget referenced in function _clay_Point_index_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_isnumber referenced in function _clay_Point_index_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_tointeger referenced in function _clay_Point_index_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_type referenced in function _clay_Point_index_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_typerror referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20__7B__20_luaL_typerror_28_x.handle_2C__20_index_2C__20_cstring_28_expected_29__29__3B__20__7D__29__29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_tonumber referenced in function _clay_Point_newIndex_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_newuserdata referenced in function _clay_Point_new_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_setmetatable referenced in function _clay_Point_new_28_State_29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _luaL_checknumber referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checknumber_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-900079 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checknumber_28_x.handle_2C__20_index_29__20__29__29_

test.exe : fatal error LNK1120: 28 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib' [warn_drv_unused_argument]
clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]


=====================
lua\highlevel\luahello
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-036107 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-036107 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-036107 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-036107 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-036107 : error LNK2019: unresolved external symbol _lua_settop referenced in function _main

clayobj.obj-036107 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-036107 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20__7B__20_lua_call_28_x.handle_2C__20_nargs_2C__20_nresults_29__3B__20__7D__29__29_

clayobj.obj-036107 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20__7B__20_lua_call_28_x.handle_2C__20_nargs_2C__20_nresults_29__3B__20__7D__29__29_

test.exe : fatal error LNK1120: 8 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib' [warn_drv_unused_argument]
clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]


=====================
lua\highlevel\luatoclay
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/llua'; ignored

clayobj.obj-531068 : error LNK2019: unresolved external symbol _luaL_newstate referenced in function _main

clayobj.obj-531068 : error LNK2019: unresolved external symbol _luaL_openlibs referenced in function _main

clayobj.obj-531068 : error LNK2019: unresolved external symbol _luaL_register referenced in function _main

clayobj.obj-531068 : error LNK2019: unresolved external symbol _luaL_loadstring referenced in function _main

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_tolstring referenced in function _main

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_settop referenced in function _main

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_close referenced in function _main

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_pushlstring referenced in function _clay_exceptionAs_28_Static_5B_Error_5D__2C__20_Pointer_5B_UInt8_5D__29_

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_error referenced in function _clay_exceptionAs_28_Static_5B_Error_5D__2C__20_Pointer_5B_UInt8_5D__29_

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_gettop referenced in function _clay_sumAndAverage_28_State_29_

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_pushnumber referenced in function _clay_sumAndAverage_28_State_29_

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_atpanic referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checknumber_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-531068 : error LNK2019: unresolved external symbol _luaL_checknumber referenced in function _clay_safeCall_28_State_2C__20__28_x_20__2D__3E__20_luaL_checknumber_28_x.handle_2C__20_index_29__20__29__29_

clayobj.obj-531068 : error LNK2019: unresolved external symbol _lua_call referenced in function _clay_cwrapper_panicHandler_28_Pointer_5B_UInt8_5D__29_

test.exe : fatal error LNK1120: 14 unresolved externals


clang: warning: argument unused during compilation: '-L/opt/local/lib'
clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
math\1
=====================
compiler error
--------------

###############################

import libc.(csqrtf, crealf, cimagf);

-------------^

import math.(sqrt);

import printer.formatter.(repr);

###############################

C:\Users\Joe\Documents\Code\clay\test\math\1\main.clay(1,13): error: imported name not found



=====================
numbers\parser\1
=====================
compiler error
--------------

###############################

external strtold(

    argument0 : Pointer[CChar],

    argument1 : Pointer[Pointer[CChar]]) : UnsupportedCBuiltinType22;

-------------------------------------------^



external strtol(

###############################

C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\libc\generated\generated.windows.32.clay(681,43): error: undefined name: UnsupportedCBuiltinType22



compilation context: 

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\numbers\parser\parser.clay(145,23):

    parseFloat80(StringConstant)

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\numbers\numbers.clay(412,43):

    Float80(StringConstant)

  C:\Users\Joe\Documents\Code\clay\test\numbers\parser\1\main.clay(8,19):

    main()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,33):

    getExitCode()

  C:/Users/Joe/Documents/Code/clay/build/compiler/src/../../../lib-clay\system\system.clay(32,26):

    callMain(Static[main])



=====================
numbers\parser\4
=====================
compiler error
--------------
clayobj.obj-929020 : error LNK2019: unresolved external symbol _strtof referenced in function _main

test.exe : fatal error LNK1120: 1 unresolved externals


clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]


=====================
parsing
=====================
compiler error
--------------
clayobj.obj-121145 : error LNK2019: unresolved external symbol _strtoll referenced in function _clay_call_28__3C_lambda_20_C_3A__2F_Users_2F_Joe_2F_Documents_2F_Code_2F_clay_2F_build_2F_compiler_2F_src_2F_.._2F_.._2F_.._2F_lib_2D_clay_5C_parsing_5C_combinators_5C_generic_5C_generic.clay_28_235_2C_11_29__3E__2C__20_CoordinateRange_5B_Pointer_5B_Char_5D__5D__29_

test.exe : fatal error LNK1120: 1 unresolved externals


clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
printing\int128
=====================
compiler error
--------------

UNREACHABLE executed!


=====================
remote\messages\simple
=====================
out.txt mismatch
expected out.txt
----------------
-- server stderr
Hello from Server!
Hello from Lambda!
arguments from client:
* zim
* zang
* zung
-- client stderr


-------------
actual output
-------------
-- server stderr
Hello from Server!
Hello from Lambda!
arguments from client:
* zim
* zang
* zung
unhandled exception: error(109): The pipe has been ended.

-- client stderr



=====================
sqlite
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/lsqlite3'; ignored

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_open referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_errmsg referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_close referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_exec referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_last_insert_rowid referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_step referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_db_handle referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_column_text referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_column_int referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_finalize referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_bind_int referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_bind_null referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_column_type referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_reset referenced in function _clay_main_28__29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_prepare_v2 referenced in function _clay_SqliteStatement_28_SqliteDB_2C__20_StringConstant_29_

clayobj.obj-763778 : error LNK2019: unresolved external symbol _sqlite3_bind_text referenced in function _clay_bindStatement_28_SqliteStatement_2C__20_Int32_2C__20_StringConstant_29_

test.exe : fatal error LNK1120: 16 unresolved externals


clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]


=====================
sqlite\sequences
=====================
compiler error
--------------
LINK : warning LNK4044: unrecognized option '/lsqlite3'; ignored

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_open referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_errmsg referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_close referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_exec referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_prepare_v2 referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_finalize referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_step referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_db_handle referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_column_int referenced in function _clay_main_28__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_reset referenced in function _clay_runStatement_28_SqliteStatement_2C__20_StringConstant_29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_bind_text referenced in function _clay_bindStatementValues_28_SqliteStatement_2C__20_StringConstant_29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_bind_parameter_index referenced in function _clay_printTo_28_RawFile_2C__20_Static_5B__23_ic32c62c61c320c32andc32SizeTc40ic41c32c60c32sizec40ac41_5D__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_bind_int referenced in function _clay_printTo_28_RawFile_2C__20_Static_5B__23_ic32c62c61c320c32andc32SizeTc40ic41c32c60c32sizec40ac41_5D__29_

clayobj.obj-247708 : error LNK2019: unresolved external symbol _sqlite3_column_text referenced in function _clay_printTo_28_RawFile_2C__20_Static_5B__23_ic32c62c61c320c32andc32SizeTc40ic41c32c60c32sizec40ac41_5D__29_

test.exe : fatal error LNK1120: 14 unresolved externals


clang: error: linker command failed with exit code 1120 (use -v to see invocation)


=====================
uncategorized\41
=====================
compiler error
--------------
clayobj.obj-714417 : error LNK2019: unresolved external symbol _strtoll referenced in function _clay_main_28__29_

clayobj.obj-714417 : error LNK2019: unresolved external symbol _strtoull referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_StringConstant_2C__20_UInt32_2C__20_StringConstant_2C__20_UInt32_2C__20_StringConstant_2C__20_Static_5B__23_validVectorCoordinatec63c40ac44c32jc41_5D__2C__20_StringConstant_2C__20_StringConstant_2C__20_Static_5B_Vector_5B_Char_5D__5D__29_

clayobj.obj-714417 : error LNK2019: unresolved external symbol _strtof referenced in function _clay_errorNoThrow_28_StringConstant_2C__20_StringConstant_2C__20_UInt32_2C__20_StringConstant_2C__20_UInt32_2C__20_StringConstant_2C__20_Static_5B__23_validVectorCoordinatec63c40ac44c32jc41_5D__2C__20_StringConstant_2C__20_StringConstant_2C__20_Static_5B_Vector_5B_Char_5D__5D__29_

test.exe : fatal error LNK1120: 3 unresolved externals


clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]


=====================
uncategorized\7
=====================
compiler error
--------------
clayobj.obj-422932 : error LNK2019: unresolved external symbol _fdopen referenced in function _main

test.exe : fatal error LNK1120: 1 unresolved externals


clang: error: linker command failed with exit code 1120 (use -v to see invocation) [err_drv_command_failed]

Generalize 'and' and 'or' operators

It would be useful to be able to overload and and or for Maybe, Either, and other monadic types:

var x = maybeA() and maybeB() and maybeC(); // short-circuit maybe chaining (aka ">>=")
var y = maybeA() or maybeB(); // maybe alternation (aka "mplus")
var z = maybeA() or 0; // maybe unpack with default

Add defined-on-overflow math operators

Should add wrapAdd(), wrapSubtract(), etc. functions that allow for wraparound even with -Dclay.IntegerOverflowChecks enabled, so that algorithms that intend to use modular math can still be written easily.

Hide '[F] F()' and 'call()' overloads from match error reports

In most cases it's not very interesting that random [F] F() overloads didn't match a typical call site. call() overloads are also uninteresting for static callables. Match errors should prune those error entries unless the compiler is given a -full-match-errors flag.

Get builds working on Windows again

  • Build LLVM 3.0 and Clang for Windows. See if Clang 3.0 works sufficiently when targeting the Microsoft toolchain.
  • Update Clay's cmake files to work with Windows again.

bindgen: incomplete generation of struct containing anonymous union

The following struct from gst/gstmessage.h:

struct _GstMessage
{
  GstMiniObject mini_object;

  /*< private >*//* with MESSAGE_LOCK */
  GMutex *lock;                 /* lock and cond for async delivery */
  GCond *cond;

  /*< public > *//* with COW */
  GstMessageType type;
  guint64 timestamp;
  GstObject *src;

  GstStructure *structure;

  /*< private >*/
  union {
    struct {
      guint32 seqnum;
    } ABI;
    /* + 0 to mark ABI change for future greppage */
    gpointer _gst_reserved[GST_PADDING + 0];
  } abidata;
};

gets generated as:

record Struct__GstMessage (
    mini_object : GstMiniObject,
    lock : Pointer[GMutex],
    cond : Pointer[GCond],
    type : GstMessageType,
    timestamp : guint64,
    src : Pointer[GstObject],
    structure : Pointer[GstStructure],
    abidata : Union_Unnamed44,
);

without any mention of a Union_Unnamed44 anywhere else.

Use C conversion rules in call(CCodePointer, ..)

C functions are monomorphic and C APIs often have weak integer type discipline, so it would be convenient for call(CCodePointer, ..) to perform the same implicit conversions as C automatically.

Missing hash() for Static[x]

Static[x] and variants or records containing Static[x] members can't be used as hashtable keys because hash(Static[x]) is missing.

cmake doesn't pick the correct python on arch linux

On Arch Linux, cmake picks /usr/bin/python, which is a symlink to /usr/bin/python3, but the python script that make test uses needs /usr/bin/python2.

A simple workaround is to edit CMakeCache.txt and change it to the right python, but it took a little digging to find that as a cmake noob.

Exceptions aren't thread-safe

The exception mechanism stores the current exception in a global variable, which is facepalmingly stupid. throwValue should malloc space for the exception object, and the exception state should be passed as a pointer instead of a boolean.

bindgen doesn't check if parsed identifiers conflict with clay keywords

Example, test.h:

struct foo {
    int external;
};

produces the following code:

/* automatically generated by clay-bindgen */

record Struct_foo (
    external : Int,
);

which fails with a parse error.

I'm not sure what the correct course of action would be. Maybe mangle everything that clashes with keywords to something like originallyExternal?

Add overflow checks for bitshl

I was thinking overflow was expected behavior for left shift, but the people have spoken, and they want left shift to be checked. Add overflow checks to bitshl when enabled, and add a wrapBitshl function which gives unchecked two's-complement overflow behavior.

Indentation bug in emacs clay-mode

If you do the following in emac's clay-mode, it won't indent correctly.

// happens with any braces
void main() {
}

After you put this in, if you go to the center and press tab, it will not indent. It only happens when you close the brace before typing. If you tab and type a line of code into the middle area then it will work. It only doesn't work if the closing brace is there before indenting.

It's annoying when your coding style is "function, braces, close braces, then type body".

Variant dispatch doesn't work with call-by-name functions

alias foo(x) { ... }

bar(x:Variant) { foo(*x); }

fails with a "dispatch cannot be used in this context" or similar error. Dispatch should be expanded normally into a switch over instances of the alias function, before it is analyzed as call-by-name, since mechanically, dispatch happens before the call.

Bad loader performance on Windows

From Elrood, when building LLVM 3.0 and Clay 0.1 on Windows with MSVC:

load time = 2140.72 ms
compile time = 420.577 ms
optimization time = 976.115 ms
codegen time = 317.49 ms

Linking of clay fails on Linux x86_64

The problem is, that the -ldl flag is included in the LLVM_LDFLAGS and not in the LLVM_LIBS. The LDFLAGS are added to the front of the command line, but the -ldl should be at the end to link correctly. (The linker command can be seen in ./build/compiler/src/CMakeFiles/clay.dir/link.txt).

As a quick fix/hack, it is possible to add the dl library explicitely in the same way as the rt library (in ./compiler/src/CMakeLists.txt).

Can?, Monomorphic?, MonomorphicInputTypes primitives

CallDefined? is janky and doesn't deal with value kinds properly. A better primitive would be a SFINAE companion to Type, for which I like the name Can?:

[A, B | CallDefined?(add, A, B)] foo(a:A, b:B) = a + b;

[| Can?(a + b)] foo(a, b) = a + b;

To be useful, it would have to be possible for the predicate to refer to runtime argument names for type propagation purposes. However, it would be an error to actually evaluate a runtime argument.

Can? could also obviate the need for the gross typeToLValue and typeToRValue functions by accepting a monomorphic lambda, as in:

Sequence?(S) = Can?((s:S) -> iterator(s));

On a related note, it would also be useful to have Monomorphic? and MonomorphicInputTypes introspection for monomorphic lambdas and functions. These could be applied to allow things like the CodePointer constructor to infer the input and output types when applied to a monomorphic lambda or function:

CodePointer[[T, U, V], [W]]((t, u, v) -> w)

CodePointer((t:T, u:U, v:V) -> w)

Enable conversion checks for casts

UInt(Int) and friends should check for overflow when -Dclay.IntegerOverflowChecks is enabled. There should be a wrapCast(static T, U) function for cases when truncation is intended.

bindgen fails to generate the bindings for unix on linux64

Specifically, it generates multiple instances of one struct. Error message:

###############################
external (cdecl) recvmmsg(arg0:Int, arg1:Pointer[Struct_mmsghdr], arg2:UInt, arg3:Int, arg4:Pointer[Struct_timespec]) : Int;

alias Struct_mmsghdr = Opaque;
------^

external (cdecl) sendmmsg(arg0:Int, arg1:Pointer[Struct_mmsghdr], arg2:UInt, arg3:Int) : Int;
###############################
/home/philipp/programming/clay/build/compiler/src/../../../lib-clay/unix/generated/generated.linux.64.clay(1503,6): error: name redefined: Struct_mmsghdr

Excerpt of the generated file:

alias Struct_mmsghdr = Opaque;
external (cdecl) recvmmsg(arg0:Int, arg1:Pointer[Struct_mmsghdr], arg2:UInt, arg3:Int, arg4:Pointer[Struct_timespec]) : Int;
alias Struct_mmsghdr = Opaque;
external (cdecl) sendmmsg(arg0:Int, arg1:Pointer[Struct_mmsghdr], arg2:UInt, arg3:Int) : Int;

This gets generated from the file <bits/socket.h>:

#ifdef __USE_GNU
/* For `recvmmsg'.  */
struct mmsghdr
  {
    struct msghdr msg_hdr;  /* Actual message header.  */
    unsigned int msg_len;   /* Number of received bytes for the entry.  */
  };
#endif

[...]

/* Receive up to VLEN messages as described by VMESSAGES from socket FD.
   Returns the number of bytes read or -1 for errors.

   This function is a cancellation point and therefore not marked with
   __THROW.  */
extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
             unsigned int __vlen, int __flags,
             __const struct timespec *__tmo);

/* Send a VLEN messages as described by VMESSAGES to socket FD.
   Return the number of datagrams successfully written or -1 for errors.
This function is a cancellation point and therefore not marked with
   __THROW.  */
extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
             unsigned int __vlen, int __flags);

After removing the duplicate definition, everything works.

I'm not quite sure what is happening here. Apparently bindgen doesn't pick up the mmsghdr struct (because it doesn't define __USE_GNU?).

-e context doesn't print properly

% ./build/compiler/src/clay -Ilib-clay -e 'println(1 + "2");'
###############################

-------------------^
###############################
-e(1,19): error: no matching overload found

Bail early when empty variant is instantiated

Empty variants can't really exist, but the compiler doesn't raise an error until it sees a dispatch operation applied to a variant. It should raise the error when the type is instantiated.

Add 'llvm' ABI for externals

Since the compiler now supports C ABIs, we need a distinct llvm ABI for interfacing with intrinsics and non-C LLVM code.

change variant match function to use CallDefined?

Instead of interleaving the instance types and lambdas:

match(variant, Inst1, i1 -> { .. }, Inst2, i2 -> { .. });

The match function would be cleaner if it dispatched matching based on the lambda signature:

match(variant, (i1:Inst1) -> { .. }, (i2:Inst2) -> { .. });

which would look nice with block syntax:

match(variant): (i1:Inst1) -> {
  ..
}, (i2:Inst2) -> {
  ..
}

bindgen: no declaration of opaque structs on typedef

The following struct is defined/typedefd in glib/gthread.h:

typedef struct _GMutex          GMutex;

That's all there is; it's supposed to be opaque.

Bindgen on the other hand generates the following failing code:

alias GMutex = Struct__GMutex;

I thinks something like alias Struct__GMutex = Opaque; or alias GMutex = Opaque; should be generated.

clayfix needs to remove 'procedure'/'define' from before monomorphic definitions

Clay 0.1 now uses define foo(x:T, y:U); as syntax for defining a generic function interface, and define foo(x:T, y:U) { ... } with a body is invalid. clayfix needs to update code that placed the optional procedure keyword before a full definition.

// 0.0
procedure foo;
procedure bar(x,y) = x + y;

// 0.1
define foo;
bar(x,y) = x + y;

Single static values still match tuple patterns

A legacy of the old fast-and-loose tuple pattern matching code I haven't been able to purge:

[..X] overload foo(static Thingy[[..X]]) { println(repr(..X)); }


main() {
    foo(Thingy[Int]); // should not match, but does
}

Implement errors.backtrace on Windows

Windows has CaptureStackBackTrace to capture backtrace information, but I'm not sure what the equivalent of backtrace_symbols is to present the data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.