Andrew Kelley
0e92b44043
prepend underscore to non exported functions
...
to prevent symbol collisions
2016-02-16 17:06:19 -07:00
Andrew Kelley
77ffb5075b
update bootstrap to work for macos too
...
* Directives can have arbitrary expressions as parameters
* Fix switch statement not generating code sometimes
* Rename "main" fn in bootstrap.zig to "zig_user_main" to
avoid name collisions
* codegen: fix badref when unreachable is last thing in an
expression
* support #condition directive on exported functions
2016-02-16 16:41:56 -07:00
Andrew Kelley
f580c7fa43
handle libc include path and libc lib path differently
2016-02-15 16:52:37 -07:00
Andrew Kelley
baf889c879
parseh: fix __cdecl causing a fn ptr to be double ptr
2016-02-14 16:14:30 -07:00
Andrew Kelley
1141e4f5b2
if any c imports fail, don't emit undefined identifier errors
2016-02-13 23:02:45 -07:00
Andrew Kelley
03b51a753a
a = b % c uses the types of b and c instead of a
2016-02-13 15:03:19 -07:00
Andrew Kelley
8d510c699a
parseh: fix branching on undefined memory
2016-02-13 13:25:55 -07:00
Andrew Kelley
c8376af92d
add @ctz, @clz and compiler_rt implementation
2016-02-13 12:50:13 -07:00
Andrew Kelley
a5aeb7381f
if statement children nodes know if they're compiled out
2016-02-12 16:00:50 -07:00
Andrew Kelley
b8a1cb299e
avoid codegening functions never called from conditional compilation
2016-02-12 15:51:12 -07:00
Andrew Kelley
0c1ce21f7d
add @compile_var("environ")
2016-02-12 01:23:06 -07:00
Andrew Kelley
2dc4ac0e21
add @compile_var("os") and @compile_var("arch")
2016-02-11 18:33:04 -07:00
Andrew Kelley
08eb19456b
add compile error for missing enumeration value in switch
2016-02-11 16:15:08 -07:00
Andrew Kelley
a180168871
fix division by 0 crashing compiler
...
closes #99
closes #124
thanks to Michael Patraw for submitting a patch for this.
2016-02-11 15:02:22 -07:00
Andrew Kelley
2bf6c28bc3
ability to cross compile
...
hello_libc.zig can produce a windows build
2016-02-11 01:33:27 -07:00
Andrew Kelley
aa504275f0
don't create debug type for void arrays
2016-02-09 20:38:42 -07:00
Andrew Kelley
d8f6388b63
if statements can be const expr evaluated
...
also introduce error for unnecessary if statement
but if the condition depends on a compile variable, then
the if statement is OK
2016-02-09 18:53:28 -07:00
Andrew Kelley
5bdcdd1669
@const_eval returns poison value for type when it fails
...
resulting in fewer redundant error messages
2016-02-09 10:02:31 -07:00
Andrew Kelley
1d92700d08
fix build with GCC
2016-02-09 08:46:55 -07:00
Andrew Kelley
430d0dfcb2
support static linking against libc
2016-02-08 00:50:51 -07:00
Andrew Kelley
87cdbb6c25
improve performance for get_fn_type
2016-02-07 18:32:19 -07:00
Andrew Kelley
6b3ce918db
array.len generates a constant number literal expression
2016-02-07 15:52:52 -07:00
Andrew Kelley
42fe4e3cc8
remove ptr field access of arrays
...
use &array[0] instead
2016-02-07 15:43:19 -07:00
Andrew Kelley
36cf9f0c72
error for non const expr in array size outside fn
2016-02-07 15:16:36 -07:00
Andrew Kelley
26ea20d88f
implement @const_eval
...
closes #73
2016-02-07 15:11:20 -07:00
Andrew Kelley
94ed9f622a
blocks with one statement pass constant expression eval
2016-02-07 12:38:51 -07:00
Andrew Kelley
7b00ed362c
fix debug type of ptr and len fields of slices
2016-02-07 02:20:36 -07:00
Andrew Kelley
642b38a577
add debug info for slices
...
closes #47
2016-02-07 01:53:38 -07:00
Andrew Kelley
7f6b0ba6ea
ability to explicitly cast maybe pointers to each other
2016-02-07 01:25:04 -07:00
Andrew Kelley
4174134108
unreachable return type can cast to any other return type
2016-02-07 00:23:05 -07:00
Andrew Kelley
c7dc56f737
add test for ?? return and add const expr eval for ? prefix op
2016-02-06 19:35:33 -07:00
Andrew Kelley
65a03c5859
implement %defer and ?defer
...
see #110
2016-02-06 16:36:49 -07:00
Andrew Kelley
34a7e6fdb3
codegen: return respects unconditional defer
...
See #110
2016-02-06 01:18:39 -07:00
Andrew Kelley
ec33e5a638
simple unconditional defer support
...
See #110
2016-02-06 01:00:29 -07:00
Andrew Kelley
6a2ede5a6e
parsing code for defer and more
...
* disable goto and label support see #44
* refactor the way block contexts work
2016-02-05 23:20:34 -07:00
Andrew Kelley
15fe3c4235
fix explicit casting from integer literal to float
2016-02-05 04:30:04 -07:00
Andrew Kelley
093e0d1bb0
support variable in switch expression prongs
...
See #43
2016-02-04 17:21:08 -07:00
Andrew Kelley
a4cba900e5
no namespace required when switching on enum
...
See #43
2016-02-04 16:09:06 -07:00
Andrew Kelley
5490f907fe
switch statements resolve peer compatibility
2016-02-04 15:50:06 -07:00
Andrew Kelley
b87d0abefe
fix debug info for bool type
2016-02-04 14:02:37 -07:00
Andrew Kelley
25e74cb385
ability to explicitly cast bool to int
2016-02-04 12:59:06 -07:00
Andrew Kelley
32642ac9cb
for loop supports break and continue
...
See #51
2016-02-04 02:49:12 -07:00
Andrew Kelley
fdadab40c6
implement constant values for enums with payload
2016-02-04 02:11:50 -07:00
Andrew Kelley
3a9009b08e
fix crash when initializing struct if field is invalid
2016-02-04 01:06:31 -07:00
Andrew Kelley
1f9734d1ee
allow defining errors with the same name
...
they get the same value, too.
2016-02-04 00:58:45 -07:00
Andrew Kelley
2521afef69
add ability to call function pointer field
...
also introduce the self hosted tests
closes #108
2016-02-03 21:34:09 -07:00
Andrew Kelley
5c310f4343
skip analyzing parameters of invalid function call
2016-02-03 19:10:02 -07:00
Andrew Kelley
c3123158b7
fix handling of implicit casts in binary operators
2016-02-03 19:07:15 -07:00
Andrew Kelley
11a0644365
basic support for building a test target
2016-02-03 18:02:01 -07:00
Andrew Kelley
afdb47c32d
fix debug symbols for byval arguments
2016-02-03 03:32:45 -07:00