Commit Graph

46 Commits (5e33175517807c6e50fe66f8d6c65fc094c8e11a)

Author SHA1 Message Date
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 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 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 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 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 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 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 c8376af92d add @ctz, @clz and compiler_rt implementation 2016-02-13 12:50:13 -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 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 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 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 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