Commit Graph

636 Commits

Author SHA1 Message Date
Andrew Kelley
100e8e15fa fix tokenizing string symbols with hex characters in them 2016-07-09 07:54:55 -07:00
Andrew Kelley
b08bc84a36 don't add no-frame-pointer-elim for inline functions
and make syscall functions inline
this gets the tests all passing on i386
2016-05-18 18:30:03 -07:00
Andrew Kelley
762e686d17 inline assembly: allow empty output list 2016-05-18 18:20:15 -07:00
Andrew Kelley
39016c1d3e fix offset map for inline assembly error messages 2016-05-18 18:05:03 -07:00
Andrew Kelley
f6b16c99ba fix raw string literal crash 2016-05-18 17:55:07 -07:00
Andrew Kelley
fbb6d1d7ee support extern C ABI for return types 2016-05-18 15:32:34 -07:00
Andrew Kelley
2c710382a8 fix crash when error evaluating target of for expr
closes #153
2016-05-16 22:51:08 -07:00
Andrew Kelley
9813ae8586 add bit_count, is_wrapping, is_signed fields to int types 2016-05-15 01:30:25 -07:00
Andrew Kelley
6ff996f60f add int_type builtin function 2016-05-15 01:05:24 -07:00
Andrew Kelley
7f90dbbb11 switch on compile var marks entire namespaces
as depending on compile vars.

closes #154
2016-05-15 00:25:13 -07:00
Andrew Kelley
6ae6b5f5b5 add compile_err builtin 2016-05-14 18:54:37 -07:00
Andrew Kelley
33e3d56453 add error for wrong return type of main 2016-05-13 13:08:54 -07:00
Andrew Kelley
8e3ab28be9 ability to cast maybe pointer to isize/usize
also ability to put noalias on maybe pointer
2016-05-13 09:54:56 -07:00
José Miguel Sánchez
b7b864e5e5 For the sake of correctness: we can always rely on ZIG_STD_DIR 2016-05-12 19:55:50 +02:00
José Miguel Sánchez
a1817f462a Add --zig-std-dir 2016-05-12 18:41:20 +02:00
Andrew Kelley
1eafc85f1f add readonly attribute to relevant functions and parameters 2016-05-11 15:58:00 -07:00
Andrew Kelley
26718a619c recognize ar program and pass --gc-sections to ld
See #54
2016-05-11 14:44:10 -07:00
Andrew Kelley
22888ca524 some work in progress networking code
also, casting to or from a u8 slice makes a function impure
2016-05-10 15:00:59 -07:00
Andrew Kelley
d92ae20f45 add hashmap to standard library
closes #22
2016-05-09 15:07:38 -07:00
Andrew Kelley
f1e5be9686 fix ability to use previous generic params and
add error when `%return` shows up in a function with incorrect
return type
2016-05-09 13:44:29 -07:00
Andrew Kelley
745c325d0f support variable declarations in structs
See #22
2016-05-09 12:34:03 -07:00
Andrew Kelley
56908dcb9d add debug safety for shortening casts
closes #150
2016-05-09 08:44:41 -07:00
Andrew Kelley
0c32b0b4ad add list implementation to standard library 2016-05-08 01:34:00 -07:00
Andrew Kelley
18ed87c695 ability to cast u8 slice to bigger slice 2016-05-08 00:59:21 -07:00
Andrew Kelley
aed96e3512 fix null literal outside function 2016-05-08 00:15:05 -07:00
Andrew Kelley
404defd99b add div_exact builtin fn
closes #149
2016-05-07 20:53:16 -07:00
Andrew Kelley
eb83111f02 add debug safety for division
See #149
2016-05-07 19:58:02 -07:00
Andrew Kelley
9d29674711 ability to cast slice to u8 slice 2016-05-07 18:45:28 -07:00
Andrew Kelley
9e0165147e generic args available to member functions
See #22
2016-05-07 17:27:57 -07:00
Andrew Kelley
2ed72022ce support generic data structures
See #22
2016-05-07 17:00:58 -07:00
Andrew Kelley
6f0f357ee4 self hosted tests test release mode too
closes #69
2016-05-07 10:14:16 -07:00
Andrew Kelley
8c79438f6b better array concatenation semantics
closes #87
2016-05-07 10:05:59 -07:00
Andrew Kelley
d5d5fd928c link: don't put -l in front of .a or .so files 2016-05-07 01:58:18 -07:00
Andrew Kelley
c098a8f522 add frame_address and return_address builtins 2016-05-06 23:10:14 -07:00
Andrew Kelley
271a37b418 implicit wrap widening cast on integer peer types
closes #46
2016-05-06 19:49:28 -07:00
Andrew Kelley
6131b37163 fix eval integer wrapping and add tests
See #46
2016-05-06 19:23:21 -07:00
Andrew Kelley
9db45ac362 add shl_with_overflow builtin function
See #46
2016-05-06 16:45:04 -07:00
Andrew Kelley
100802cdc0 add debug safety for left shifting
See #46
2016-05-06 15:46:38 -07:00
Andrew Kelley
b8d17b11a7 add tests for integer overflow crashing
see #46
2016-05-05 18:07:15 -07:00
Andrew Kelley
094336f07c add integer wrapping
see #46
2016-05-05 17:19:01 -07:00
Andrew Kelley
dedde0d790 add fence builtin function 2016-05-04 18:34:17 -07:00
Andrew Kelley
c95e497857 add cmpxchg builtin function 2016-05-04 18:19:49 -07:00
Andrew Kelley
66ed7a5eb5 beginnings of network standard library code 2016-05-03 20:48:53 -07:00
Andrew Kelley
7f589c0cab support maybe destructuring into a pointer variable 2016-05-03 15:06:34 -07:00
Andrew Kelley
9ccd0ba961 implement string escapes 2016-05-01 14:53:48 -07:00
Andrew Kelley
d908afe105 add array multiplication operator 2016-04-28 18:03:44 -07:00
Andrew Kelley
46b0b84b90 ability to specify body of an extern function
closes #101
2016-04-28 16:04:44 -07:00
Andrew Kelley
a299de2265 better alignment value for stack variables
fixes debug info sometimes not being available for parameters
2016-04-28 15:10:27 -07:00
Andrew Kelley
4815c03caa better parameter codegen
* ability to take address of a parameter (closes #97)
 * debug symbols work for parameters
2016-04-27 17:34:53 -07:00
Andrew Kelley
09042f1b0c add missing debug entry for breakpoint 2016-04-26 15:35:36 -07:00
Andrew Kelley
8ec109de3c ability to compare booleans 2016-04-26 11:39:31 -07:00
Andrew Kelley
d1fa5692c6 add array bounds checking in debug mode
closes #27
2016-04-26 11:36:11 -07:00
Andrew Kelley
d0378057d1 support switching on error union type
closes #23
2016-04-25 21:51:04 -07:00
Andrew Kelley
d1b65c6f46 fix ability to parse character literals 2016-04-24 16:36:05 -07:00
Andrew Kelley
3886fdc19b rename unknown_size_array to slice 2016-04-24 16:33:52 -07:00
Andrew Kelley
8583fd7f9f add codegen for pointer comparison
see #145
2016-04-24 12:27:59 -07:00
Andrew Kelley
8ad75a9bf3 add compile error for invalid equality operator uses
See #145
2016-04-24 12:09:51 -07:00
Andrew Kelley
46ab981787 add skeleton for union support 2016-04-24 11:24:04 -07:00
Andrew Kelley
899fb14c30 fix handling of slice of zero bits type
closes #143
2016-04-23 13:58:30 -07:00
Andrew Kelley
55b28ab030 fix returning empty struct from function
closes #142
2016-04-23 12:21:47 -07:00
Josh Wolfe
4a7911e3eb fix gcc build errors 2016-04-23 00:26:29 -07:00
Andrew Kelley
66163692ad parseh: support anonymous enums and enums with initializers 2016-04-22 21:43:48 -07:00
Andrew Kelley
8187396f64 add syntax to allow symbols to have arbitrary strings as names 2016-04-22 15:24:18 -07:00
Andrew Kelley
35362f8137 better parsing of C macros
See #88
2016-04-21 15:48:13 -07:00
Andrew Kelley
a380b803ac ability to use a struct with no fields 2016-04-21 09:47:41 -07:00
Andrew Kelley
ae600d2f7f fix undeclared identifier not marking function as impure 2016-04-20 17:25:26 -07:00
Andrew Kelley
6acc354957 for loop: add ability to get pointer to elem var
see #51
2016-04-20 11:58:01 -07:00
Andrew Kelley
a25307c0a1 add optional continue expression to while loop
closes #139
2016-04-19 20:28:44 -07:00
Andrew Kelley
04364c45ce fix casting with imported symbol not working 2016-04-19 19:37:25 -07:00
Andrew Kelley
36c6acfc76 enum init uses container init syntax instead of fn call
See #5
2016-04-19 18:52:09 -07:00
Andrew Kelley
4e37fb2fa2 implement constant initialization of enum values
see #5
2016-04-19 17:15:55 -07:00
Andrew Kelley
ff1ab3fe9c fix crash in non-const expression in struct literal outside fn 2016-04-18 18:18:41 -07:00
Andrew Kelley
5e33175517 add @embed_file builtin function 2016-04-18 15:47:21 -07:00
Andrew Kelley
7f56e4ac16 move more tests to self-hosted land 2016-04-14 11:15:02 -07:00
Andrew Kelley
fcedc35551 fix crash with generic function and implicit cast 2016-04-14 10:39:03 -07:00
Andrew Kelley
83a59c4d07 fix evaluating generic functions in wrong context 2016-04-13 12:28:07 -07:00
Andrew Kelley
3f9632bb40 eval: support array literals 2016-04-13 10:13:49 -07:00
Andrew Kelley
3c27cb2527 more eval tests and fix eval call analyze code 2016-04-12 17:33:46 -07:00
Andrew Kelley
69109bc270 add error for dividing by zero in static function evaluation 2016-04-12 16:18:41 -07:00
Andrew Kelley
be4df96e4b passing all tests 2016-04-12 13:30:52 -07:00
Andrew Kelley
aa89fd3b3e eval: ability to eval more things 2016-04-12 09:35:33 -07:00
Andrew Kelley
fa605485ea eval: support more node types 2016-04-12 09:35:33 -07:00
Andrew Kelley
a177e30534 compile-time function evaluation of pure functions 2016-04-12 09:35:33 -07:00
Andrew Kelley
5a479720ec add error for unable to infer expression type in if statements
closes #136
2016-04-12 08:53:00 -07:00
Andrew Kelley
954a451c51 unsigned ints implicitly cast to signed ints when they fit
also fix #135
2016-04-11 22:57:32 -07:00
Andrew Kelley
b117b5907c add error for accessing empty array
closes #134
2016-04-10 13:18:42 -07:00
Andrew Kelley
0683bd8bf6 fix crash when casting undefined to slice
also fix crash having to do with runtime allocated stack memory
2016-04-10 12:04:25 -07:00
Andrew Kelley
e66ed0f2e2 add error for assigning null to non-nullable pointer
closes #133
2016-04-09 17:35:26 -07:00
Andrew Kelley
707131e37b goto: jumping out of scope runs defers
see #44
2016-04-09 17:26:04 -07:00
Andrew Kelley
7eb6af1d3e add @breakpoint() 2016-04-09 16:52:52 -07:00
Andrew Kelley
21eca6478f re-introduce goto
see #44
2016-04-09 16:41:17 -07:00
Andrew Kelley
7026bed462 fix debug symbols regression after llvm 3.8.0 2016-04-09 14:21:55 -07:00
Andrew Kelley
7a05e18efb implement @err_name builtin function 2016-04-09 08:55:53 -07:00
Josh Wolfe
d5d6c93da4 fix parsing of hex literal 0xb 2016-04-08 17:33:59 -07:00
Andrew Kelley
73c814e5c0 support hex escapes in string literals 2016-04-08 17:30:26 -07:00
Andrew Kelley
491e3cb5c5 fix crash when passing empty string to function 2016-04-08 17:09:07 -07:00
Josh Wolfe
4ce85ea067 fix gcc compile error 2016-04-08 16:24:06 -07:00
Andrew Kelley
5dbc21b511 update cat example, refactor std
partial implementation of @err_name
2016-04-08 16:21:30 -07:00
Josh Wolfe
f6edba4a87 fix gcc compile errors 2016-04-07 18:02:30 -07:00
Andrew Kelley
28ad4e6d83 fix segfault in generic functions
See #22
2016-04-07 15:09:55 -07:00