Commit Graph

538 Commits (d15bcdce691c1f42f70a5e9943817eb5ba974893)

Author SHA1 Message Date
Andrew Kelley ed21be011a pass unreachable variable test 2017-01-05 04:03:25 -05:00
Andrew Kelley 3b5e26b7f7 self hosted tests import std library 2017-01-05 03:57:48 -05:00
Andrew Kelley 6ec6589bd8 IR: pass MT19937_64 test 2017-01-05 00:59:37 -05:00
Andrew Kelley c32a060d4f IR: add unreachable code compiler error 2017-01-04 23:21:33 -05:00
Andrew Kelley 69132bdeda IR: progress toward compiling standard library
* comptime fn call
 * is_comptime doesn't count as an instruction dependency
 * update more std code to latest zig
2016-12-31 17:10:29 -05:00
Andrew Kelley 5f89393acb IR: implement binary not instruction 2016-12-31 02:23:39 -05:00
Andrew Kelley 6bbee194b9 IR: better basic block dependency detection 2016-12-30 18:34:05 -05:00
Andrew Kelley dc26dec8e0 rename self_hosted3 to self_hosted 2016-12-28 01:36:13 -05:00
Andrew Kelley 94f977a6c1 IR: pass genericFnWithImplicitCast test 2016-12-28 01:35:13 -05:00
Andrew Kelley f6ac2fa70e IR: pass pointerToVoidReturnType test 2016-12-28 01:31:46 -05:00
Andrew Kelley 25a5fc32fe IR: pass passSliceOfEmptyStructToFn test 2016-12-28 01:15:09 -05:00
Andrew Kelley 15f843e70f IR: pass castSliceToU8Slice test 2016-12-26 17:11:36 -05:00
Andrew Kelley 66a83d8738 IR: pass intToEnum test 2016-12-26 16:34:18 -05:00
Andrew Kelley c8a7ab7eff IR: pass cStringConcatenation test 2016-12-26 16:04:14 -05:00
Andrew Kelley 7504be923b IR: pass pointerComparison test 2016-12-26 15:49:03 -05:00
Andrew Kelley 735cdbfdac IR: pass intToPtrCast test 2016-12-26 15:45:50 -05:00
Andrew Kelley aee7ad3de2 IR: port all passing tests over 2016-12-26 03:44:59 -05:00
Andrew Kelley 73a751911e IR: pass staticEvalListInit test 2016-12-26 03:16:19 -05:00
Andrew Kelley 6ed835ca67 IR: port more tests 2016-12-26 03:05:33 -05:00
Andrew Kelley 3ef6663b72 IR: pass genericMallocFree test 2016-12-26 03:02:20 -05:00
Andrew Kelley 110a6f39ca IR: pass explicitCastMaybePointers test 2016-12-26 02:53:42 -05:00
Andrew Kelley 6c9ec3688e IR testing: rename cases3 dir to cases 2016-12-26 02:49:30 -05:00
Andrew Kelley 66777ccd7d IR: port more tests 2016-12-26 02:47:52 -05:00
Andrew Kelley 4664f793dc IR: pass enumToInt test 2016-12-26 02:36:04 -05:00
Andrew Kelley 1b5d1877ae IR: port more tests 2016-12-26 01:37:33 -05:00
Andrew Kelley 2b5c7b1b8e IR: port more tests 2016-12-25 18:36:45 -05:00
Andrew Kelley f47dea2a2e IR: support compile time global pointer reinterpret
this required moving the place we store types to ConstExprValue
2016-12-25 04:15:23 -05:00
Andrew Kelley 6f91fb4c37 IR: support const ref 2016-12-22 10:39:10 -05:00
Andrew Kelley 8dc45bc505 port more tests 2016-12-22 10:10:04 -05:00
Andrew Kelley ba8af0f1e2 IR: fix missing implicit casts in init expressions
and implement runtime struct init instruction
2016-12-22 09:35:07 -05:00
Andrew Kelley ed962d9d21 IR: port another test 2016-12-22 08:48:08 -05:00
Andrew Kelley 3e25ff65c3 IR: fix switch enum variable for void enum field 2016-12-22 08:05:37 -05:00
Andrew Kelley dab3ddab45 IR: port more tests 2016-12-22 01:42:30 -05:00
Andrew Kelley 5a71718757 IR: port more tests 2016-12-22 01:20:08 -05:00
Andrew Kelley 5fc95c2a53 IR: port some tests 2016-12-22 00:55:21 -05:00
Andrew Kelley 46033a2128 pass void parameters test 2016-12-22 00:46:17 -05:00
Andrew Kelley 23bebdbcd5 IR: port some tests 2016-12-22 00:20:14 -05:00
Andrew Kelley 56cc2e2b24 migrate all the temporary tests to new test file 2016-12-22 00:12:27 -05:00
Andrew Kelley 9b61682037 IR: implement runtime enum init and switch on enum with variable 2016-12-21 21:49:05 -05:00
Andrew Kelley 1f6dacbb2f IR: enum init support 2016-12-20 01:50:32 -05:00
Andrew Kelley 2419f0c914 IR: support maybe defers 2016-12-19 17:25:09 -05:00
Andrew Kelley 09d50e35a4 IR: support error defers 2016-12-19 16:45:15 -05:00
Andrew Kelley 14422e0312 organize tests 2016-12-19 00:53:18 -05:00
Andrew Kelley 6b2d06710c IR: start a new passing self hosted test suite 2016-12-19 00:41:37 -05:00
Andrew Kelley e50ced44a2 IR: all structs anonymous 2016-12-18 16:56:50 -05:00
Andrew Kelley 12fcbecbf8 IR: add more instructions
* MaybeWrap
 * TestErr
 * UnwrapErrCode
 * UnwrapErrPayload
 * ErrUnionTypeChild
 * ErrWrapCode
 * ErrWrapPayload
2016-12-17 16:16:17 -05:00
Andrew Kelley 647d13168a IR: implement maybe return expression 2016-12-13 19:36:56 -05:00
Andrew Kelley 3f3630d7e3 IR: implement the rest of the builtin functions
* returnAddress
 * frameAddress
 * addWithOverflow
 * subWithOverflow
 * mulWithOverflow
 * shlWithOverflow
 * alignOf
2016-12-13 04:30:41 -05:00
Andrew Kelley 9b17c0ff7f IR: implement intType builtin
and int type field access
and fix compile time bool not
2016-12-11 16:30:01 -05:00
Andrew Kelley 3429639e84 IR: implement truncate builtin 2016-12-11 15:31:07 -05:00
Andrew Kelley 433c17aeb1 IR: implement divExact builtin 2016-12-11 14:27:37 -05:00
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