Commit Graph

636 Commits

Author SHA1 Message Date
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
22ef416d4d fix generics not using ast clone 2016-04-06 14:02:29 -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
76e1541803 update to llvm 3.8.0 2016-03-08 18:56:14 -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
660a50661b better hash table performance 2016-03-01 14:47:46 -07:00
Andrew Kelley
1d08ab087e fix comparison of unsigned integers error 2016-03-01 14:08:04 -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
0a0494feb8 fix build error with signed/unsigned 2016-02-19 14:02:36 -07:00
Andrew Kelley
e5982e4440 link: on windows link test runner and builtin o files 2016-02-17 21:05:46 -07:00
Andrew Kelley
a7b6fa5bee os: implement windows os layer 2016-02-17 19:53:30 -07:00
Andrew Kelley
06398a22d0 back to normal print specifiers
disable warnings for format specifiers on mingw since the
compiler emits bogus warnings
2016-02-16 21:43:38 -07:00
Andrew Kelley
bb806f941c use PRIuMAX instead of PRIu64 for mingw 2016-02-16 20:24:51 -07:00
Andrew Kelley
6793548868 fix 64 bit integer printing for mingw
in order to do this I had to turn off -pedantic
2016-02-16 20:21:37 -07:00
Andrew Kelley
58c13aa949 rename 'environ' to 'env_type'
environ appears to clash with another symbol in mingw land
2016-02-16 20:03:41 -07:00
Andrew Kelley
afa5d1ea12 os: fix ability to compile for windows 2016-02-16 19:55:49 -07:00
Andrew Kelley
194e93a582 add windows os code 2016-02-16 19:42:46 -07:00
Andrew Kelley
0e92b44043 prepend underscore to non exported functions
to prevent symbol collisions
2016-02-16 17:06:19 -07:00
Andrew Kelley
77ffb5075b update bootstrap to work for macos too
* Directives can have arbitrary expressions as parameters
 * Fix switch statement not generating code sometimes
 * Rename "main" fn in bootstrap.zig to "zig_user_main" to
   avoid name collisions
 * codegen: fix badref when unreachable is last thing in an
   expression
 * support #condition directive on exported functions
2016-02-16 16:41:56 -07:00
Andrew Kelley
91101f08c2 linking on darwin: provide builtins and -arch 2016-02-15 21:59:20 -07:00
Andrew Kelley
4c30216d1c add missing system library to darwin linker job 2016-02-15 21:23:03 -07:00
Andrew Kelley
984e7d6cc7 first pass at linking on macos 2016-02-15 20:56:52 -07:00
Andrew Kelley
f580c7fa43 handle libc include path and libc lib path differently 2016-02-15 16:52:37 -07:00
Andrew Kelley
c6bf9c6942 MacOS has the same int sizes as Linux
Source: https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/64bitPorting/transition/transition.html
2016-02-15 16:26:33 -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
87922bfae0 parseh: ZIG_PARSEH_CFLAGS -> ZIG_NATIVE_PARSEH_CFLAGS 2016-02-13 23:04:12 -07:00
Andrew Kelley
fb8700de6c parseh: support attributed types 2016-02-13 23:03:59 -07:00
Andrew Kelley
5032854aec parseh: more specific warning for different calling conventions 2016-02-13 23:03:39 -07:00
Andrew Kelley
5771bd805e respect link order in source code 2016-02-13 23:03:16 -07:00
Andrew Kelley
1141e4f5b2 if any c imports fail, don't emit undefined identifier errors 2016-02-13 23:02:45 -07:00
Andrew Kelley
fe95a227c8 add windows C int sizes 2016-02-13 16:29:30 -07:00
Andrew Kelley
03b51a753a a = b % c uses the types of b and c instead of a 2016-02-13 15:03:19 -07:00
Andrew Kelley
8d510c699a parseh: fix branching on undefined memory 2016-02-13 13:25:55 -07:00
Andrew Kelley
c8376af92d add @ctz, @clz and compiler_rt implementation 2016-02-13 12:50:13 -07:00
Andrew Kelley
a5aeb7381f if statement children nodes know if they're compiled out 2016-02-12 16:00:50 -07:00
Andrew Kelley
b8a1cb299e avoid codegening functions never called from conditional compilation 2016-02-12 15:51:12 -07:00
Andrew Kelley
9bf9be9937 fix build on GCC 2016-02-12 14:07:12 -07:00
Andrew Kelley
4e3f6de027 c integer size takes into account architecture and OS 2016-02-12 12:07:11 -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
0c1ce21f7d add @compile_var("environ") 2016-02-12 01:23:06 -07:00
Serge Paquet
633b01de23 fix undefined LONG_LONG_MAX compilation error 2016-02-11 22:13:54 -05: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
2bf6c28bc3 ability to cross compile
hello_libc.zig can produce a windows build
2016-02-11 01:33:27 -07:00
Andrew Kelley
54a8b6a110 cleanup target data organization 2016-02-10 16:58:15 -07:00
Andrew Kelley
b642604691 targets command shows which ones are native 2016-02-10 16:35:07 -07:00
Andrew Kelley
1ff2edf67e add "targets" command to list architectures, oses, abis 2016-02-10 15:41:50 -07:00
Andrew Kelley
aa504275f0 don't create debug type for void arrays 2016-02-09 20:38:42 -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
f45c374664 fix -dynamic-linker arg to ld when not overridden 2016-02-09 16:55:23 -07:00
Andrew Kelley
5bdcdd1669 @const_eval returns poison value for type when it fails
resulting in fewer redundant error messages
2016-02-09 10:02:31 -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
1d92700d08 fix build with GCC 2016-02-09 08:46:55 -07:00
Andrew Kelley
e18170ee0b support overriding the dynamic linker argument to ld 2016-02-08 22:11:09 -07:00
Andrew Kelley
430d0dfcb2 support static linking against libc 2016-02-08 00:50:51 -07:00
Andrew Kelley
96e7deadd4 parseh: tiny performance improvement 2016-02-07 19:07:41 -07:00
Andrew Kelley
87cdbb6c25 improve performance for get_fn_type 2016-02-07 18:32:19 -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
049e9e5819 add debug info for loop variables
closes #112
2016-02-07 12:58:09 -07:00
Andrew Kelley
94ed9f622a blocks with one statement pass constant expression eval 2016-02-07 12:38:51 -07:00
Andrew Kelley
694cfff23f fix a bogus call to bignum_normalize causing assertion failure 2016-02-07 03:49:25 -07:00
Andrew Kelley
7b00ed362c fix debug type of ptr and len fields of slices 2016-02-07 02:20:36 -07:00
Andrew Kelley
642b38a577 add debug info for slices
closes #47
2016-02-07 01:53:38 -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
fc31096519 parseh: fix not properly demoting structs to typedefs 2016-02-07 00:18:24 -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
c4f5a00253 rhs of ?? and %% can be any expression 2016-02-06 19:28:11 -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
4208435f66 add nonnull to functions with pointer return type 2016-02-05 14:58:18 -07:00
Andrew Kelley
2ee80858b4 codegen: use gen_index for nonnull attribute
also put nonnull on sret params

closes #82
2016-02-05 14:48:23 -07:00
realazthat
54fbe7560e Added code for generating nonnull attributes 2016-02-05 16:29:26 -05:00
Andrew Kelley
15fe3c4235 fix explicit casting from integer literal to float 2016-02-05 04:30:04 -07:00
Andrew Kelley
663a1d0cd5 switch trap in debug mode when no prong found 2016-02-04 17:43:57 -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
b87d0abefe fix debug info for bool type 2016-02-04 14:02:37 -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
3a9009b08e fix crash when initializing struct if field is invalid 2016-02-04 01:06:31 -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
a6d4335217 fix running tests when linking with libc 2016-02-03 23:07:55 -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
5c310f4343 skip analyzing parameters of invalid function call 2016-02-03 19:10:02 -07:00
Andrew Kelley
c3123158b7 fix handling of implicit casts in binary operators 2016-02-03 19:07:15 -07:00
Andrew Kelley
39223c1847 test runner prints test names 2016-02-03 18:38:09 -07:00
Andrew Kelley
11a0644365 basic support for building a test target 2016-02-03 18:02:01 -07:00
Andrew Kelley
afdb47c32d fix debug symbols for byval arguments 2016-02-03 03:32:45 -07:00
Andrew Kelley
815d9a7994 fix debug info for arrays being 1 element too short 2016-02-03 02:44:21 -07:00
Andrew Kelley
f2fe231ddf add @compile_var("is_release") 2016-02-03 02:21:28 -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
7af59c76e4 build: fix libc path finding 2016-02-02 15:04:14 -07:00
Andrew Kelley
5824b15249 codegen: ?? prefix operator causes trap in debug mode 2016-02-02 12:37:19 -07:00
Andrew Kelley
5ad84e4724 unreachable causes a trap in debug mode 2016-02-02 02:43:33 -07:00
Andrew Kelley
6f1a7a0d70 add abort function and "cold" fn attribute 2016-02-02 00:42:06 -07:00
Andrew Kelley
d8d0f65654 codegen: avoid table lookup for field access
closes #74
2016-02-01 20:17:33 -07:00
Andrew Kelley
a2035eefba codegen: avoid table lookup in assembly expression 2016-02-01 20:13:36 -07:00
Andrew Kelley
74eaf43768 codegen: avoid a table lookup 2016-02-01 20:05:50 -07:00
Andrew Kelley
0b94c83deb remove the constructor of hash map 2016-02-01 17:50:46 -07:00
Andrew Kelley
06f6acb4b1 inline is a keyword instead of a directive 2016-02-01 17:25:38 -07:00
Andrew Kelley
122b7b9966 c_import top level decl supports pub
See #88
2016-02-01 17:05:07 -07:00
Andrew Kelley
108af28c1b optimization: avoid codegening unused functions 2016-02-01 02:34:01 -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
675de74412 codegen: fix negation for floats 2016-01-31 21:32:05 -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
f20d0665bb typedecl top level decls respect pub 2016-01-31 19:14:25 -07:00
Andrew Kelley
0ac714f0d6 add --library-path cli option 2016-01-31 18:32:07 -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
773cd851fe parser: fix parsing of type decls 2016-01-31 17:17:00 -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
4c1f0f02d0 fix some parseh crashes 2016-01-31 02:17:08 -07:00
Andrew Kelley
80a4898e44 delete bogus --help text 2016-01-31 02:05:19 -07:00
Andrew Kelley
55c9ae1193 codegen extern global variables correctly 2016-01-31 01:51:33 -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
436e35516a parseh properly ignores anonymous structs
and nodes get valid create_index values
2016-01-29 17:02:51 -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
2e39d9881a parseh fix crash 2016-01-29 02:38:12 -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
923e78785d attempt to get preprocessor entities from libclang
I'm pretty sure it's impossible, the API does not
expose the macro expansion value

and the source location points to the macro's name,
not its value.
2016-01-28 23:18:39 -07:00
Andrew Kelley
650fdded29 fix incorrect loading of files over 8192 bytes 2016-01-28 22:38:18 -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
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
f1c5d3d3a1 add parseh tests 2016-01-28 11:54:34 -07:00
Andrew Kelley
474340a003 parseh recognizes C enums 2016-01-28 11:03:44 -07:00
Andrew Kelley
137bb51e20 parseh: add --c-import-warnings option 2016-01-28 00:25:10 -07:00
Andrew Kelley
97c61313da c_import of stdio.h works for some functions
See #88
2016-01-27 23:23:02 -07:00
Andrew Kelley
b6354ddd5a move AST rendering code to separate file 2016-01-27 21:10:38 -07:00
Andrew Kelley
c281533638 build command supports -isystem argument 2016-01-27 19:22:58 -07:00
Andrew Kelley
69d4f55fbf parseh: still produce output when not all types are known 2016-01-27 19:07:01 -07:00
Andrew Kelley
d1ac1abd34 parseh correctly handles C's void type 2016-01-27 16:30:52 -07:00
Andrew Kelley
75cab48c1e parseh: recognize typedef types
and fix const qualifier on pointers
2016-01-27 16:00:43 -07: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
fa1ea6062b parseh works for simple functions 2016-01-27 03:12:06 -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
a73453a268 add c_import top level decl
see #88
2016-01-26 16:00:39 -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
01428d4a72 analyze: fix crash when return type is invalid 2016-01-25 22:20:52 -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
fb85d3a0a2 codegen: get rid of cur_block_context 2016-01-25 16:37:45 -07:00
Andrew Kelley
deb3586884 implement %% prefix operator
See #23

also make undefined constants use llvm undef value
2016-01-25 15:45:05 -07:00
Andrew Kelley
4b9e1dd438 fix tests and add %% operator test 2016-01-25 14:04:29 -07:00
Andrew Kelley
6db6609df8 implement %% operator
See #23
2016-01-25 13:53:40 -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
29a83f648b support the %return expression 2016-01-24 20:13:08 -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
ca7b85b32e fix number literal implicit cast 2016-01-24 14:51:47 -07:00
Andrew Kelley
5c18826240 introduce the error keyword and type
See #23
2016-01-24 01:34:57 -07:00