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
Andrew Kelley
5df091fea9
c_void is provided outside of C imports
2016-03-01 15:26:41 -07:00
Andrew Kelley
f1d338194e
rewrite how importing works
...
* Introduce the concept of packages. Closes #3
* Add support for error notes.
* Introduce `@import` and `@c_import` builtin functions and
remove the `import` and `c_import` top level declarations.
* Introduce the `use` top level declaration.
* Add `--check-unused` parameter to perform semantic
analysis and codegen on all top level declarations, not
just exported ones and ones referenced by exported ones.
* Delete the root export node and add `--library` argument.
2016-03-01 03:13:40 -07:00
Andrew Kelley
04cc59be65
update run_tests to work on windows
2016-02-17 20:44:07 -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
c8376af92d
add @ctz, @clz and compiler_rt implementation
2016-02-13 12:50:13 -07:00
Andrew Kelley
b8a1cb299e
avoid codegening functions never called from conditional compilation
2016-02-12 15:51:12 -07:00
Andrew Kelley
7828456b30
std: delete malloc and free
...
later we'll add a full featured allocator instead of this
2016-02-12 02:23:22 -07:00
Andrew Kelley
592210a173
i386 support
...
closes #115
Thanks to Seo Sanghyeon for the port code.
2016-02-12 02:04:46 -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
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
207862647c
std: fix parse_u64 implementation and add test
...
also codegen implement comparision with pure errors
2016-02-09 09:51:25 -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
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
f19fa590e5
parseh understands simple string literal macros
2016-02-06 21:44:22 -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
73727bd1c5
parser recognizes %return in a prefix op expression
...
also defer only valid at statement level now
see #110
2016-02-06 19:16:01 -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
4339d55562
update for loop syntax
...
it matches more closely the %% binary operator syntax
See #51
2016-02-05 17:15:19 -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
fcbeaddbb2
codegen: fix switch expressions for enums with payloads
2016-02-04 15:26:27 -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
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
b28f7d0808
types sized and aligned with LLVM target data layout API
2016-02-03 02:01:42 -07:00
Andrew Kelley
b04e64d300
add @compile_var builtin and "is_big_endian" compile var
2016-02-02 21:46:53 -07:00
Andrew Kelley
a50474e7cf
fix false positive error with same named methods in incomplete struct
2016-02-02 20:06:51 -07:00
Andrew Kelley
d3de73739f
fix various semantic analyzer crashes
2016-02-02 19:35:02 -07:00
Andrew Kelley
8058b5e0a9
fix crash when incomplete struct used as argument
...
closes #107
2016-02-02 19:09:53 -07:00
Andrew Kelley
79adf55699
fx segfault with colliding bogus top level functions
2016-02-02 15:58:13 -07:00
Andrew Kelley
0216293430
add test for var local eval const expr
...
closes #53
2016-02-01 20:54:48 -07:00
Andrew Kelley
06f6acb4b1
inline is a keyword instead of a directive
2016-02-01 17:25:38 -07:00
Andrew Kelley
179443bd61
add ?? prefix operator
2016-02-01 02:11:46 -07:00
Andrew Kelley
b3459f64e7
parseh understands macros which alias global fn ptr vars
2016-02-01 02:00:25 -07:00
Andrew Kelley
6b2e29c6ac
parseh: do not create macro alias for extern vars
2016-02-01 00:01:30 -07:00
Andrew Kelley
2e092e08f4
fix invalid const expr eval for negative floats
2016-01-31 21:50:41 -07:00
Andrew Kelley
a4e19f94f1
support casting between floats
2016-01-31 21:22:05 -07:00
Andrew Kelley
e74a7264ad
support casting between int and float types
2016-01-31 21:05:17 -07:00
Andrew Kelley
954afe5d9a
fix C interaction with maybe function pointers
...
See #88
2016-01-31 20:15:47 -07:00
Andrew Kelley
41b95cc237
parseh: correct debug for forward decls
...
also C typedefs emit simply `const Foo = Bar;`
since in C you can implicitly cast from a typedef
child to parent but in zig you can't.
2016-01-31 17:48:19 -07:00
Andrew Kelley
1053172854
parseh handles typedef void better
...
and introduce c_long_double type
2016-01-31 15:44:02 -07:00
Andrew Kelley
c77637d172
parseh understands forward struct definitions
...
See #88
2016-01-31 14:54:28 -07:00
Andrew Kelley
c1640a9246
parseh: use the decayed type not original type
2016-01-31 13:20:44 -07:00
Andrew Kelley
3c2093fec6
parseh understands types better and handles some situations better
...
See #88
Also, includes partial implementation of typedef top level declaration.
See #95
Also, fix function types. Previously the way we were deduping function type
pointers was incorrect.
2016-01-31 01:20:47 -07:00
Andrew Kelley
e4b0435946
parseh understands variable declarations
...
and some initializers such as integers
2016-01-29 16:06:17 -07:00
Andrew Kelley
a94ad9e89c
parseh defines can reference other defines
2016-01-29 02:17:51 -07:00
Andrew Kelley
c1691afdd9
parseh understands number literal defines
2016-01-29 01:31:40 -07:00
Andrew Kelley
9b2ed1fac5
parseh understands simple character literal macro
2016-01-29 00:28:52 -07:00
Andrew Kelley
53c14da220
parseh understands bodyless struct used in fn
2016-01-28 21:53:46 -07:00
Andrew Kelley
c3516b8004
parseh handles self referential structs and fn pointers
2016-01-28 21:38:01 -07:00
Andrew Kelley
a5c2de5fee
ability to specify function type
...
closes #14
2016-01-28 20:26:40 -07:00
Andrew Kelley
2bb2e61ee2
parser: allow missing fn name and missing param names
...
now these problems are caught in analyzer
this is for purpose of function type, see #14
2016-01-28 18:58:28 -07:00
Andrew Kelley
ff028525e5
add test for calling the result of if-else expr
...
See #14
2016-01-28 17:49:40 -07:00
Andrew Kelley
d0a1901cb0
fix function calling of pointers
...
See #14
2016-01-28 17:42:29 -07:00
Andrew Kelley
974d69ea3d
ability to call member functions directly
...
see #14
2016-01-28 16:55:54 -07:00
Andrew Kelley
bb4f783528
ability to refer to member function directly
...
See #14
2016-01-28 16:45:17 -07:00
Andrew Kelley
13220ccb51
parsh understands constant sized arrays
2016-01-28 16:09:06 -07:00
Andrew Kelley
ed3117a77f
parseh understands elaborated structs and enums
2016-01-28 15:41:12 -07:00
Andrew Kelley
47c3a30310
parseh understands simple structs
2016-01-28 14:49:34 -07:00
Andrew Kelley
a09b505558
null pointer optimization for ?&T
...
this is necessary for the parseh change where all
pointers from .h files are maybe pointers.
2016-01-28 14:04:22 -07:00
Andrew Kelley
347866f3a7
add parseh test for multiple fn prototypes
2016-01-28 11:59:21 -07:00
Andrew Kelley
6f85b956de
add restrict -> noalias parseh test
2016-01-28 11:57:11 -07:00
Andrew Kelley
f1c5d3d3a1
add parseh tests
2016-01-28 11:54:34 -07:00
Andrew Kelley
97c61313da
c_import of stdio.h works for some functions
...
See #88
2016-01-27 23:23:02 -07:00
MovingtoMars
1a913f6bf2
simple malloc and free using mmap
2016-01-28 12:39:02 +13:00
Andrew Kelley
b508441859
fix `%%` prefix operator codegen for simple values
...
closes #93
2016-01-27 14:49:48 -07:00
Andrew Kelley
0a26586724
fix comparing incompatible number literals crash
...
closes #94
2016-01-27 14:33:31 -07:00
Andrew Kelley
707154da36
fix codegen for pointers to void
2016-01-27 14:18:20 -07:00
Andrew Kelley
261517aa44
add explicit cast from isize/usize to pointer
...
closes #91
2016-01-27 12:43:03 -07:00
Andrew Kelley
d27b76fc31
add error for `@typeof` or `&` of number literal
...
closes #85
2016-01-27 12:28:05 -07:00
Andrew Kelley
fe0c6a3df9
fix crash when compiling empty file
...
closes #90
2016-01-27 12:09:36 -07:00
Andrew Kelley
0278468479
upgrade to the libclang C++ API
...
c_import creates a tmp .h file and parses it with libclang,
reporting any errors found.
See #88
2016-01-27 00:01:49 -07:00
Andrew Kelley
5afe473a86
different extern syntax and simplify parsing top level decls
2016-01-26 13:08:21 -07:00
Andrew Kelley
4e43973413
variable initializations are now mandatory
...
use `undefined` if you want uninitialized memory
2016-01-25 23:56:46 -07:00
Andrew Kelley
b215a3e0b6
add constant expression evaluation for negation
2016-01-25 23:44:16 -07:00
Andrew Kelley
a37bb4a4da
add the C integer types
2016-01-25 23:21:13 -07:00
Andrew Kelley
a3e288ab5b
implement compile time string concatenation
...
See #76
2016-01-25 21:56:29 -07:00
Andrew Kelley
1d68150242
compiler enforces checking for error
...
See #23
2016-01-25 20:27:57 -07:00
Andrew Kelley
50854226a6
syntax: back to -> for return type, no more =>
2016-01-25 17:08:18 -07:00
Andrew Kelley
4b9e1dd438
fix tests and add %% operator test
2016-01-25 14:04:29 -07:00
Andrew Kelley
bcb18338cd
update std lib to use error type and global variables
2016-01-24 22:53:00 -07:00
Andrew Kelley
f5cc7f65a3
fix parameter access of sret functions
2016-01-24 19:27:12 -07:00
Andrew Kelley
419652ee8f
ability to return structs byvalue from functions
...
closes #57
2016-01-24 18:34:50 -07:00
Andrew Kelley
5c18826240
introduce the error keyword and type
...
See #23
2016-01-24 01:34:57 -07:00
Andrew Kelley
706f72f1b4
fix hang when returning from while loop
...
also fixes duplicate error message for function missing
return type.
also makes guess number game use %void for main return type.
closes #58
2016-01-23 02:46:24 -07:00
Andrew Kelley
c0ea9290c4
main returns %void
2016-01-23 02:14:01 -07:00
Andrew Kelley
a922d5d42a
implement literal error values
...
See #23
2016-01-23 00:34:59 -07:00
Andrew Kelley
1543043bf5
fix no error emitted for redeclaring global var
...
closes #81
2016-01-23 00:07:08 -07:00
Andrew Kelley
523e3b86af
support statically initialized array literal
2016-01-22 22:02:07 -07:00
Andrew Kelley
1158bc3ead
support statically initialized structs
2016-01-22 18:05:22 -07:00
Andrew Kelley
7bd9c82386
add compile error for non constant expr global
2016-01-22 16:40:15 -07:00
Andrew Kelley
b61406b607
add test for const number literal
2016-01-22 16:02:08 -07:00
Andrew Kelley
272fe1c54c
implicit casts rewrite the AST
2016-01-22 15:31:35 -07:00
Andrew Kelley
b09a0cd072
allow constants to have number literal values
...
also codegen takes advantage of constant expr eval
2016-01-21 15:23:24 -07:00
Andrew Kelley
32e2196257
number literal rework
2016-01-21 03:02:25 -07:00
Andrew Kelley
961adc0909
Merge branch 'master' of github.com:andrewrk/zig
2016-01-20 02:16:36 -07:00
Andrew Kelley
ad9759bc8e
basic support for switch expression
2016-01-20 02:12:24 -07:00
MovingtoMars
361531891f
rename value_count to member_count
...
rename BuiltinFnIdValueCount to BuiltinFnIdMemberCount
rename value_count to member_count
2016-01-20 22:03:03 +13:00
Andrew Kelley
ae2151a751
use signed integer for sizes of things
2016-01-18 21:13:14 -07:00
Andrew Kelley
ea21d2beb6
add error for shadowing a type
...
closes #61
2016-01-18 17:04:37 -07:00
Andrew Kelley
32821e7098
add function pointer support
...
See #14
2016-01-18 16:42:45 -07:00
Andrew Kelley
3a326d5005
pave the road for function pointers
...
See #14
2016-01-18 08:50:10 -07:00
Andrew Kelley
fbbef14013
add for loop which can iterate over arrays
...
See #51
2016-01-18 07:00:45 -07:00
Andrew Kelley
f0a43cfda9
fix nested arrays
2016-01-18 04:34:26 -07:00
Andrew Kelley
5f7685336f
better main symbol prototype
...
closes #64
2016-01-16 00:07:34 -07:00
Andrew Kelley
8205253b2b
support array literals
2016-01-15 20:01:49 -07:00
Andrew Kelley
8bc3fae1cf
fix error message for struct initialization on array
2016-01-15 19:05:51 -07:00
Andrew Kelley
dc162c7f83
rename "use" to "import"
2016-01-15 18:45:52 -07:00
Andrew Kelley
86f55bce53
add void arrays test
2016-01-15 18:41:19 -07:00
Andrew Kelley
0c9afede9e
overflow intrinsics take type as first argument
2016-01-14 17:04:35 -07:00
Andrew Kelley
5f9ecb8566
instead of 'as' to cast, call type as function
2016-01-14 02:52:33 -07:00
Andrew Kelley
d121ed961a
fix noalias codegen
...
also make some parsing error messages better
2016-01-13 22:18:10 -07:00
Andrew Kelley
b28b7f63d1
all types are now expressions
...
See #22
2016-01-13 18:15:51 -07:00
Andrew Kelley
cb46d0b5b0
fix not adding builtin functions code
2016-01-11 20:44:10 -07:00
Andrew Kelley
ccc8e9f4c3
support enums with values attached
2016-01-11 20:33:06 -07:00
Andrew Kelley
aaa62eda72
simple enum support
2016-01-11 01:15:17 -07:00
Andrew Kelley
b147ff5b60
fix codegen for void struct fields
2016-01-10 18:56:50 -07:00
Andrew Kelley
35b74d4013
order-independent declarations even from imports
...
closes #42
2016-01-10 01:25:20 -07:00
Andrew Kelley
49d0971cd4
detect and report top level decl dependency loop
2016-01-10 00:03:31 -07:00
Andrew Kelley
1fe1235e14
order-independent declarations
...
code constructs and traverses a dependency graph in a deterministic
order.
2016-01-09 23:49:22 -07:00
Andrew Kelley
6d9119fcd9
add memcpy and memset intrinsics
2016-01-09 02:16:54 -07:00
Andrew Kelley
b7dd88ad68
suport checked arithmetic operations via intrinsics
...
closes #32
2016-01-08 23:41:40 -07:00
Andrew Kelley
0c84ecd19d
codegen: fix else if expression and maybe unwrap expr
2016-01-08 03:59:37 -07:00
Andrew Kelley
9aea99a999
implement array slicing syntax
...
closes #52
2016-01-07 05:29:11 -07:00
Andrew Kelley
a3c97081ca
add ?? maybe unwrapping binary operator
...
add null literal
fix number literal / maybe interactions
2016-01-07 03:23:38 -07:00
Andrew Kelley
c75d40680f
while detects simple constant condition
2016-01-06 18:02:42 -07:00
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
Andrew Kelley
15ba5bc54e
provide std.zig and add it to import paths
2015-12-10 17:42:47 -07:00
Andrew Kelley
0dbee2300e
add inline assembly support
2015-12-10 15:34:38 -07:00
Andrew Kelley
dfda85e870
ability to call external variadic functions
2015-12-09 01:03:04 -07:00
Andrew Kelley
358d699fa9
add test for arrays
2015-12-08 15:46:36 -07:00
Andrew Kelley
e8550814c5
support assigning to arrays
2015-12-08 15:31:43 -07:00
Andrew Kelley
75efc31329
add array access syntax
2015-12-08 14:15:34 -07:00
Josh Wolfe
94e61287e7
let is now a statement, not an expression
2015-12-06 23:49:20 -07:00
Josh Wolfe
66e3aa0910
initialize mutable variables to zero
2015-12-06 23:33:10 -07:00
Andrew Kelley
3c3be10a60
add mutable local variables
2015-12-06 23:09:46 -07:00
Andrew Kelley
daa3b6bfa3
add unused label error
2015-12-05 21:08:20 -07:00
Andrew Kelley
f49e857b9b
run_tests supports --reverse arg
2015-12-04 23:04:49 -07:00
Andrew Kelley
c7615c1a80
error for extern function with void parameter
2015-12-04 14:33:57 -07:00
Josh Wolfe
174e58a05f
test for void parameters
2015-12-03 14:33:13 -07:00
Josh Wolfe
137fe99258
test for separate scopes not colliding
2015-12-03 13:26:49 -07:00
Josh Wolfe
09a78d6235
can't declare unreachable variables
2015-12-03 12:38:28 -07:00
Josh Wolfe
90565a5109
correkt spelling error
2015-12-03 12:25:27 -07:00
Josh Wolfe
22fccdbb0d
tests for bool stuff
2015-12-03 12:19:28 -07:00
Josh Wolfe
0c2cc9d2cf
tests for local variables
2015-12-03 11:06:05 -07:00
Andrew Kelley
f8ca6c70c7
add labels and goto
2015-12-03 00:47:35 -07:00
Andrew Kelley
e94681b961
add test for undeclared identifier error
2015-12-02 00:59:58 -07:00
Andrew Kelley
370de7386c
fix parameter access and thus shared library example
2015-12-02 00:53:57 -07:00
Andrew Kelley
08a2311efd
support if conditionals
2015-12-01 21:19:38 -07:00
Josh Wolfe
1ed926c321
implicit void statements and all tests pass with type checking
2015-12-01 15:54:46 -07:00
Josh Wolfe
c6a9ab107b
string literals have type *const u8
2015-12-01 14:41:03 -07:00
Andrew Kelley
dfb6682089
add test for bad import
2015-12-01 02:29:21 -07:00
Andrew Kelley
58e375d0a1
support multiple files
2015-12-01 02:08:58 -07:00
Andrew Kelley
29f24e3c50
add --color cli arg to override tty detection
2015-12-01 01:06:10 -07:00
Andrew Kelley
257cf09472
colored error messages that tell the source file
2015-12-01 00:50:11 -07:00
Andrew Kelley
55b8472374
refactor code to prepare for multiple files
...
verbose compiler output is now behind --verbose flag
2015-11-30 20:00:39 -07:00
Andrew Kelley
020f854f6f
add bad version string test case
2015-11-30 02:14:54 -07:00
Andrew Kelley
cb4773ce29
add root export declaration which is overridable by command line options
2015-11-27 21:24:47 -07:00
Andrew Kelley
4cc95174a7
add tests for compile errors
2015-11-27 18:55:06 -07:00
Andrew Kelley
4068897b6b
rename standalone.cpp to run_tests.cpp
2015-11-27 17:11:03 -07:00
Andrew Kelley
024052b448
add pub and export visibility modifiers and optimization
2015-11-27 15:46:06 -07:00
Andrew Kelley
9ca9a2c554
allow empty function and return with no expression
2015-11-27 10:52:31 -07:00
Andrew Kelley
821907317e
support C-style comments, plus nesting
2015-11-27 00:40:26 -07:00
Andrew Kelley
4060ae93fb
call ld with correct -dynamic-linker argument
...
It looks like Debian/Ubuntu are doing it correctly.
See https://sourceware.org/glibc/wiki/ABIList
NixOS has a clang patch which disables adding the -dynamic-linker
argument to ld in order to ensure "purity" - that is - that all paths
are in /nix/store/*.
See 6b1651928e/pkgs/development/compilers/llvm/3.7/clang/purity.patch
So, I changed the environment variable to ZIG_NATIVE_DYNAMIC_LINKER and allow
it to be set to blank. And it only matters when building for the native target,
since you might want to build for other targets without modifying your
environment.
closes #1
2015-11-26 23:43:29 -07:00
Andrew Kelley
763ce1c485
add tests
2015-11-26 01:29:52 -07:00
Andrew Kelley
09f68c7c33
support linker directives
...
now you can depend on libc in zig language instead of it being
hardcoded in the compiler.
2015-11-24 23:44:41 -07:00
Andrew Kelley
fefbee166d
hello world example working
2015-11-24 13:51:36 -07:00
Andrew Kelley
925c805d4b
add unreachable expression
...
now creating .o file from hello.zig correctly
2015-11-24 13:37:14 -07:00
Andrew Kelley
c2e5d50027
write object file and fix void return type
2015-11-24 13:00:38 -07:00
Andrew Kelley
4bbc074dd7
hello world IR code looks good
2015-11-24 02:43:45 -07:00
Andrew Kelley
7d22a89eec
partial hello world codegen
2015-11-24 00:35:28 -07:00
Andrew Kelley
174baa49bd
progress toward more complex parser gen
2015-11-04 17:15:46 -07:00
Andrew Kelley
303823b6b8
building part of the hello world AST
2015-11-02 03:39:36 -07:00
Andrew Kelley
34f8d80eac
tokenizing hello.zig
2015-11-01 22:21:33 -07:00
Andrew Kelley
1d554f3161
input output
2015-08-05 15:46:40 -07:00