Andrew Kelley
8fcb1a141b
IR: implement fence and cmpxchg builtins
2016-12-11 04:06:07 -05:00
Andrew Kelley
6feae8a4e9
IR: support error union type
2016-12-10 18:38:53 -05:00
Andrew Kelley
443e14afbd
IR: fix errorName builtin
2016-12-10 17:11:35 -05:00
Andrew Kelley
7d0fb281fe
IR: a bunch of fixes and some additions
...
* add errorName builtin function
* add assertion for generated memcopy being on correct types
* respect handle_is_ptr for constant values
* fix return codegen to respect sret semantics
* remove ArrayLen IR instruction; we already have StructFieldPtr
with "len" field
* fix gen_const_val for pointers inside aggregates
2016-12-08 01:52:57 -05:00
Andrew Kelley
0ad580f001
IR: add minValue, maxValue, and negation
2016-12-07 01:23:38 -05:00
Andrew Kelley
7d9fa01ed5
IR: implement compile time eval unwrap maybe
2016-12-06 22:04:55 -05:00
Andrew Kelley
6ed202ab16
IR: implement defer
2016-12-06 21:26:17 -05:00
Andrew Kelley
bed83bc5a1
IR: implement short circuit bool or, and
2016-12-05 19:12:19 -05:00
Andrew Kelley
24048b2af6
IR: implement break and continue
2016-12-05 18:43:16 -05:00
Andrew Kelley
0541532ed6
IR: implement generic function calls
2016-12-05 05:12:44 -05:00
Andrew Kelley
25a89e7a36
IR: compile time function evaluation
2016-12-04 23:52:43 -05:00
Andrew Kelley
eb5693d91f
IR: function call porting progress
...
also implemented container init
generics is still todo
2016-11-28 02:40:01 -05:00
Andrew Kelley
a52ede6494
IR: support goto and labels
2016-11-26 23:16:38 -05:00
Andrew Kelley
84f7805029
IR: support import builtin function
2016-11-26 20:52:22 -05:00
Andrew Kelley
4619b5de06
IR: support inline switch
2016-11-26 15:38:07 -05:00
Andrew Kelley
697c768730
IR: support switch with range
2016-11-26 04:03:39 -05:00
Andrew Kelley
0c22358cc1
IR: generating a switch statement
2016-11-24 02:44:03 -05:00
Andrew Kelley
a2257e4b81
IR: implement setFnVisible builtin
2016-11-21 15:36:25 -05:00
Andrew Kelley
bf7cde62c5
IR: support setDebugSafety builtin function
2016-11-18 20:57:27 -05:00
Andrew Kelley
c8333d0cc9
add concept of inline for, inline while, inline var
2016-11-03 14:13:57 -04:00
Andrew Kelley
e4271f4fb2
more test coverage, change 'got' to 'found' in errors
2016-10-28 12:15:37 -04:00
Andrew Kelley
e3857a361c
more test coverage
2016-10-28 12:04:46 -04:00
Andrew Kelley
b581da41f8
remove compiler directives
...
* add `setFnTest`, `setFnVisible`, `setFnStaticEval`,
`setFnNoInline` builtin functions to replace previous
directive functionality
* add `coldcc` and `nakedcc` as keywords which can be used as part
of a function prototype.
* `setDebugSafety` builtin can be used to set debug safety features
at a per block scope level.
* closes #169
2016-09-28 02:33:32 -04:00
Andrew Kelley
e5fd8efcb6
clean up test directory
2016-09-27 00:09:43 -04:00
Andrew Kelley
183976b242
add this keyword refers to thing in immediate scope
...
See #169
2016-09-26 23:47:30 -04:00
Andrew Kelley
7ce7e2c9d1
emit error for extern function
...
with byvalue return value or parameter.
currently we don't codegen byvalue parameters or return values
correctly for C compatibilty functions so instead of generating
incorrect code, we emit a compile error.
eventually we'll support this feature and remove the compile error.
See #180
2016-09-26 20:01:42 -04:00
Andrew Kelley
7f4d4bdb3f
fix crash when doing binary not on integer literal
...
closes #201
2016-09-26 19:42:51 -04:00
Andrew Kelley
4b68224c60
add error message for method call on non method
...
closes #199
2016-09-26 01:01:02 -04:00
Andrew Kelley
683da0e4ec
ability to have struct to have a field which is slice of itself
...
closes #197
2016-09-25 13:39:46 -04:00
Andrew Kelley
e06885d64e
enums support member functions
2016-09-23 15:18:02 -04:00
Andrew Kelley
9ec6a78f12
fix compiler crash for misspelled type with pointer only reference
...
closes #196
2016-09-23 11:53:05 -04:00
Andrew Kelley
46eb77dbb2
stack trace is able to figure out compilation unit
...
each address is contained within
also fix a bug having to do with codegen for enum value
initialization expressions
2016-09-23 02:00:23 -04:00
Andrew Kelley
c64f6f9503
fix compile crash when leaving out for loop parameter
2016-09-22 10:40:05 -04:00
Andrew Kelley
b97bfc3ecb
fix error when switch prong has implicit cast
...
closes #194
2016-09-20 16:10:34 -04:00
Andrew Kelley
e397ea43c0
tests: correct test name
2016-09-19 20:19:02 -04:00
Andrew Kelley
3239b3cb69
use size_t for indexes
...
protect against incorrect copies in debug mode
2016-09-19 11:54:01 -04:00
Andrew Kelley
b738cbdc76
fix compiler crash involving slice with const slice child
...
also fix compiler crash for multiple errors in main fn prototype
closes #191
2016-09-15 14:09:08 -04:00
Andrew Kelley
3f05fdc8e8
tests: use a more robust path to self_hosted.zig
...
closes #184
2016-09-14 03:10:56 -04:00
Andrew Kelley
f1761632da
darwin compat fixups
...
- delete commented out code
- delete redundant check for missing
mmacosx-version-min/maxdir
- add TODO comment in std library
- rename 'os' to 'self' in io.zig
- `openSelfExe` aborts on darwin instead of compile error
- only allow warnings on the one parseh test that has
`#include <stdint.h>`.
2016-09-14 02:47:16 -04:00
alter
cf9b21c09f
MacOSX compatibility
...
- Implemented some syscall for MacOSX
- tested on : El Capitan 10.11 x86_64
- make self hosted test run on macosx
- modified run_test so it does not fail when parseh throws
warnings (most of them are related to buildin types from
gcc that arent defined in header files and unions)
- making -mmacosx-version-min and -mios-version-min works like
gcc (command line paramers have precedence over enviroment variables)
2016-09-14 02:46:02 -04:00
Andrew Kelley
06f2f4d64b
change unreachable{}
to @unreachable()
...
instead of a container init expression, it's a builtin
function call.
2016-09-13 16:46:27 -04:00
Andrew Kelley
56f8325799
add compile error for assigning through const
...
pointer and slice
closes #188
2016-09-11 14:12:24 -04:00
Andrew Kelley
28811234bb
fix compile error message for wrong arg count on method
2016-09-10 20:53:57 -04:00
Andrew Kelley
d324b1befa
ability to infer parameter types
2016-09-08 00:24:48 -04:00
Andrew Kelley
64034a3d1a
maxValue and minValue builtins return number literal
...
closes #170
2016-09-05 23:19:13 -04:00
Andrew Kelley
cfaced3f73
rename errName builtin to errorName
2016-09-05 17:03:11 -04:00
Andrew Kelley
9193a3cdad
stronger static eval recursive test
2016-08-30 16:06:02 -07:00
Andrew Kelley
6e6d138c2f
add ability to explicitly cast enum with no payload to int
2016-08-29 22:14:10 -07:00
Andrew Kelley
651dc31247
implement null as a literal type
2016-08-29 22:14:09 -07:00
Andrew Kelley
1f7ec741fa
implement ?return
expression
2016-08-29 22:14:09 -07:00
Andrew Kelley
0fbb9e09ea
fix crash when calling method on slice
2016-08-16 23:24:33 -07:00
Andrew Kelley
a2ac06dcd5
std: replace print_u64/i64 with printInt
2016-08-16 22:59:32 -07:00
Andrew Kelley
37d167f6e0
std: conform to style guidelines
2016-08-16 22:42:50 -07:00
Andrew Kelley
2ed949a6ae
add zeroes value
2016-08-08 20:43:38 -07:00
Andrew Kelley
0d5ecc4312
ability to have a return type of 'type'
2016-08-07 20:08:37 -07:00
Andrew Kelley
275410dc33
implement multiline C string syntax
2016-08-04 23:10:24 -07:00
Andrew Kelley
d0b11af2bd
new multiline string syntax
...
This patch also moves a bunch of the parser code into the tokenizer.
Closes #162 .
2016-08-04 22:52:38 -07:00
Andrew Kelley
1fa0cabf9d
remove multiline comments
...
closes #161
2016-07-27 23:26:12 -07:00
Andrew Kelley
8552d7fd19
explicit wrapping integer operations
...
instead of wrapping integer types
closes #159
2016-07-27 23:08:27 -07:00
Andrew Kelley
06c4b35eb1
std: improve rand implementation and API
2016-07-26 23:51:58 -07:00
Andrew Kelley
bc81ddfea6
unsigned integers for sizes of things
...
Closes #62 .
2016-07-26 20:40:11 -07:00
Andrew Kelley
78d4fb20c4
inline parameters
...
This replaces the current generic syntax for functions and replaces
it with the concept of inline parameters.
This paves the way for the "all structs anonymous" proposal.
Closes #151 .
2016-07-25 22:55:15 -07:00
Andrew Kelley
49a4b1b930
ability to cast explicitly from int to enum
...
This commit also fixes a bug where pure functions are marked with
the read-only attribute in debug mode. This resulted in incorrect
codegen because calls to read-only functions with unused values
were not generated.
For example, a call to assert() would not be generated if assert
is marked with read-only. Which it *is* marked with in release
mode.
2016-07-09 15:22:04 -07:00
Andrew Kelley
a5251a1c10
parseh: support octal in C macro string literal
2016-07-09 12:17:31 -07:00
Andrew Kelley
7edef4f3fd
add beginning of print stack trace function
...
introduce std.debug and move std.assert to std.debug.assert
add mem.copy
2016-05-17 13:32:43 -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
50310cf9df
add 64 bit division test
2016-05-15 00:42:48 -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
33e3d56453
add error for wrong return type of main
2016-05-13 13:08:54 -07:00
Andrew Kelley
1eafc85f1f
add readonly attribute to relevant functions and parameters
2016-05-11 15:58:00 -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
01c46eef3a
std: separate str and cstr
2016-05-07 10:52:52 -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
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
0c96920172
add tests for integer wrapping
...
See #46
2016-05-06 15:02:02 -07:00
Andrew Kelley
b8d17b11a7
add tests for integer overflow crashing
...
see #46
2016-05-05 18:07:15 -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
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
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
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
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
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
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
7a7f83033c
add test for public enums
...
See #5
2016-04-19 17:20:23 -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
f4c7e1bf49
rearrange standard library a bit
2016-04-18 16:42:56 -07:00
Andrew Kelley
5e33175517
add @embed_file builtin function
2016-04-18 15:47:21 -07:00
Andrew Kelley
832454f38b
move 2 tests to self hosted land
2016-04-18 13:06:17 -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
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
954a451c51
unsigned ints implicitly cast to signed ints when they fit
...
also fix #135
2016-04-11 22:57:32 -07:00
Andrew Kelley
4a3bce4b63
move some tests into self hosted
2016-04-10 13:58:04 -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
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
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
Andrew Kelley
5dbc21b511
update cat example, refactor std
...
partial implementation of @err_name
2016-04-08 16:21:30 -07:00
Andrew Kelley
28ad4e6d83
fix segfault in generic functions
...
See #22
2016-04-07 15:09:55 -07:00
Andrew Kelley
3b535d2c3a
fix evaluating generic function instance in wrong context
...
See #22
2016-04-07 14:23:06 -07:00
Andrew Kelley
ee22e87296
generic functions use correct type for generic args
...
See #22
2016-04-07 11:34:24 -07:00
Andrew Kelley
1d4c66b56b
support multiple generic function instances
...
See #22
2016-04-07 10:34:54 -07:00
Andrew Kelley
57688dea36
add error for gt and lt comparison of invalid types
2016-04-06 14:15:20 -07:00
Andrew Kelley
7bb67b1fd0
ability to compare function pointers at compile time
2016-04-06 14:09:27 -07:00
Andrew Kelley
67152f7294
support simple generic functions
2016-04-06 12:58:54 -07:00
Andrew Kelley
e144ddab24
add multiline string literal
...
and make multiple lines in normal string literals an error
2016-04-03 18:59:43 -07:00
Andrew Kelley
f72c36cd37
fix detection of @import and @c_import inside fn body
2016-03-01 17:59:56 -07:00