Commit Graph

487 Commits

Author SHA1 Message Date
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