Commit Graph

436 Commits (97e105489085fcf4530b3944499531d76848bbd1)

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