Commit graph

7598 commits

Author SHA1 Message Date
Andrew Kelley
5f0bfcac24 fix undefined reference to memcpy in release mode
when not depending on libc, we generate memcpy and memset
implementations.
2016-01-06 06:40:25 -07:00
Andrew Kelley
66eee5a06b add unknown size array test 2016-01-06 01:30:11 -07:00
Andrew Kelley
4ef062b9c8 array syntax is [10]i32 instead of [i32; 10] 2016-01-05 22:47:47 -07:00
Andrew Kelley
3327b0488d add #min_value() and #max_value() 2016-01-05 06:30:49 -07:00
Andrew Kelley
a11d0aaf62 progress toward compile time constant expression evaluation 2016-01-04 23:37:17 -07:00
Andrew Kelley
e0aa0736be add pointer dereferencing operator 2016-01-04 19:11:36 -07:00
Andrew Kelley
4514661cfe add member functions 2016-01-04 16:57:22 -07:00
Andrew Kelley
44d5d008d0 partial import segregation
See #3
2016-01-04 03:31:57 -07:00
Andrew Kelley
333a322127 multiple files example no longer use libc 2016-01-04 01:52:32 -07:00
Andrew Kelley
e64c0941f9 implement #sizeof()
closes #8
2016-01-03 19:38:36 -07:00
Andrew Kelley
fa6e3eec46 add #typeof() compiler function 2016-01-03 18:17:50 -07:00
Andrew Kelley
258bc73eee fix implicit cast after unreachable bad code gen 2016-01-02 20:13:10 -07:00
Andrew Kelley
187d00ca83 ability to access pointers with array indexing syntax
closes #40
2016-01-02 19:47:36 -07:00
Andrew Kelley
724dcdd384 error for if var expression not maybe type 2016-01-02 00:09:49 -07:00
Andrew Kelley
9a8851515b basic maybe type working 2016-01-02 00:06:06 -07:00
Andrew Kelley
b3ac5c16ec block expressions require parens
closes #39
2015-12-31 16:04:13 -07:00
Andrew Kelley
5943f99510 implement continue expression
closes #6
2015-12-24 15:36:49 -07:00
Andrew Kelley
44ca5e19dc add error for break outside loop
also fix break in nested loops
2015-12-24 15:30:55 -07:00
Andrew Kelley
5ceaae288c add break expression 2015-12-24 15:09:47 -07:00
Andrew Kelley
ffc593b808 add test for while loop 2015-12-24 14:41:00 -07:00
Andrew Kelley
2e74889c3c add test for invalid field in struct value expression 2015-12-24 13:49:23 -07:00
Andrew Kelley
08a7ce7dd5 add error for missing or duplicate field in struct value expr 2015-12-24 13:47:07 -07:00
Andrew Kelley
8915883cf6 add error for byvalue struct param on exported fn 2015-12-24 13:25:54 -07:00
Andrew Kelley
4e52281142 add test for error for redefinition of struct 2015-12-24 13:19:31 -07:00
Andrew Kelley
50357dad45 add struct value expression 2015-12-24 00:00:23 -07:00
Andrew Kelley
e21369a153 codegen: support byvalue struct assignment 2015-12-23 03:19:22 -07:00
Andrew Kelley
ebd7aeb541 add test for invalid struct field access 2015-12-22 13:45:13 -07:00
Andrew Kelley
fe3ad27d5f analyze: error for infinite size struct 2015-12-22 13:41:33 -07:00
Andrew Kelley
431170d981 codegen: fix struct pointer field access 2015-12-22 13:22:40 -07:00
Andrew Kelley
aa56f016f7 support addressof operator and struct pointer field access 2015-12-15 20:08:53 -07:00
Andrew Kelley
5a8822c714 fix assignment operators for struct fields 2015-12-15 19:17:39 -07:00
Andrew Kelley
28c5a8f2ca analyze: clean up type checking 2015-12-15 18:21:59 -07:00
Andrew Kelley
431d8f946f implicit casting from constant size array to string
closes #36
2015-12-15 17:29:44 -07:00
Andrew Kelley
423ee0689b add implicit casting support 2015-12-15 17:11:57 -07:00
Josh Wolfe
8a570c458b base 10 decimals work now. closes #15 2015-12-15 14:54:16 -07:00
Josh Wolfe
43099932d5 add number literal tests for integers 2015-12-15 14:12:33 -07:00
Josh Wolfe
1e09de0ff4 some tests for number literals 2015-12-15 13:15:24 -07:00
Andrew Kelley
f5a3281877 when linking with libc use the C runtime library 2015-12-15 12:44:42 -07:00
Josh Wolfe
f2a9b40231 more number literal syntax is supported. floats still need work 2015-12-15 04:05:53 -07:00
Andrew Kelley
4dc2b82506 constant initializers allow simple expressions 2015-12-14 23:49:56 -07:00
Andrew Kelley
3049410260 const and var instead of let and let mut
closes #34
2015-12-14 18:51:07 -07:00
Andrew Kelley
f17e20d5fe instead of *mut and *const, & and &const
closes #33
2015-12-14 18:10:25 -07:00
Andrew Kelley
e411467e1d add number literal type
it gets implicitly casted to whatever is needed.

closes #24
2015-12-14 02:46:37 -07:00
Andrew Kelley
bd77bc749a structs are working 2015-12-12 22:55:29 -07:00
Josh Wolfe
0f02e29a2b codegen and tests for modify operators. closes #16 2015-12-12 19:47:37 -07:00
Josh Wolfe
2082588201 fix short circuit expressions 2015-12-12 17:33:45 -07:00
Josh Wolfe
64dd0b8d95 fix a + b + c and similar
fix || and &&

closes #17
2015-12-12 17:07:43 -07:00
Andrew Kelley
ac630d354d std: print_str no longer requires length argument
add explicit casting support from array to string
2015-12-12 02:05:08 -07:00
Andrew Kelley
a10277bd94 prepare codebase for struct and string support
parsing code for structs, strings, and c string literals
partial semantic analyzing code for structs, strings, and c string literals
2015-12-12 00:10:37 -07:00
Andrew Kelley
d697404f64 hello world working without libc 2015-12-11 03:55:26 -07:00