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 |
|
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
|
91d911007b
|
codegen: fix field access of arrays
also fix error type analyze error
|
2016-01-23 00:53:43 -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
|
bfceb18631
|
character literal returns a number literal
|
2016-01-22 23:24:09 -07:00 |
|
Andrew Kelley
|
e269caae02
|
implement undefined literal
|
2016-01-22 23:12:33 -07:00 |
|
Andrew Kelley
|
0e51c16ef5
|
add undefined literal
|
2016-01-22 22:42:02 -07:00 |
|
Andrew Kelley
|
523e3b86af
|
support statically initialized array literal
|
2016-01-22 22:02:07 -07:00 |
|
Andrew Kelley
|
21fc5a6402
|
un-special case constant global strings
|
2016-01-22 20:36:08 -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
|
72fa03bada
|
add undefined reserved word
|
2016-01-22 16:05:29 -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
|
5e212db29c
|
parsing error value decls and error value literals
and return with '?' or '%' prefix
|
2016-01-20 18:18:50 -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
|
c17309dbc5
|
add switch statement support to parser
|
2016-01-19 20:29:36 -07:00 |
|
Andrew Kelley
|
890714b8ca
|
Revert "delete parseh"
This reverts commit 18374ea8f1 .
|
2016-01-18 21:28:54 -07: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
|
4c50606b9d
|
refactor std to use for loop
|
2016-01-18 07:16:17 -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
|
ca8d8f114f
|
rename "alwaysinline" to "inline"
|
2016-01-15 20:05:39 -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
|
8818c59cbc
|
parser: fix not setting container init kind
|
2016-01-15 19:02:04 -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
|
0311b35a21
|
reduce precedence of {} suffix operator
this makes []u8 {1, 2, 3, 4} work for array literal
|
2016-01-15 17:40:12 -07:00 |
|
Andrew Kelley
|
8d60ffe314
|
solve the mystery of undefined reference error
big surprise, C++ is to blame
|
2016-01-15 17:12:26 -07:00 |
|
Andrew Kelley
|
8409e518ab
|
fix build with gcc
|
2016-01-15 14:29:02 -07:00 |
|
Andrew Kelley
|
18374ea8f1
|
delete parseh
we'll have to switch to the clang C++ api anyway
we'll revive this code later
|
2016-01-15 14:16:07 -07:00 |
|
Andrew Kelley
|
b0f608a6a7
|
merge constant expression evaluator with analyzer
|
2016-01-15 04:45:25 -07:00 |
|
Andrew Kelley
|
0c9afede9e
|
overflow intrinsics take type as first argument
|
2016-01-14 17:04:35 -07:00 |
|
Andrew Kelley
|
68c4f617ed
|
fix next_node_index on wrong struct
no more nondeterministic error messages
closes #65
|
2016-01-14 15:27:42 -07:00 |
|
Andrew Kelley
|
1645fa681f
|
parser: type expressions cannot be assignment
|
2016-01-14 15:21:41 -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
|
95a7f3553d
|
Merge branch 'master' of github.com:andrewrk/zig
|
2016-01-13 18:17:52 -07:00 |
|
Andrew Kelley
|
b28b7f63d1
|
all types are now expressions
See #22
|
2016-01-13 18:15:51 -07:00 |
|
Andrew Kelley
|
76dc44d2a6
|
fix build with gcc
closes #66
|
2016-01-12 21:07:45 -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
|
2061cd50c0
|
resolve enum types and emit debug info
|
2016-01-11 00:25:17 -07:00 |
|
Andrew Kelley
|
b147ff5b60
|
fix codegen for void struct fields
|
2016-01-10 18:56:50 -07:00 |
|
Andrew Kelley
|
4d7835e21a
|
delete unused enumfield and enumdecl node types
|
2016-01-10 17:27:58 -07:00 |
|
Andrew Kelley
|
fc748e2ccd
|
update enum parsing to new plan
|
2016-01-10 16:58:21 -07:00 |
|
Andrew Kelley
|
3ef2f7058b
|
refactor out the horrible beast that was codegen_node
|
2016-01-10 15:13:39 -07:00 |
|
Andrew Kelley
|
d4b8852d78
|
parsing enum declarations
|
2016-01-10 11:48:54 -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
|
bdca82ea66
|
implement pub const
|
2016-01-09 00:37:48 -07:00 |
|
Andrew Kelley
|
0c24ed8a81
|
rename restrict to noalias
|
2016-01-08 23:48:24 -07:00 |
|
Andrew Kelley
|
b7dd88ad68
|
suport checked arithmetic operations via intrinsics
closes #32
|
2016-01-08 23:41:40 -07:00 |
|
Andrew Kelley
|
14b9cbd43c
|
add restrict qualifier on pointer arguments
|
2016-01-08 20:59:47 -07:00 |
|
Andrew Kelley
|
d14a31100f
|
implement unknown size array indexing and slicing
|
2016-01-08 17:52:45 -07:00 |
|
Andrew Kelley
|
0c84ecd19d
|
codegen: fix else if expression and maybe unwrap expr
|
2016-01-08 03:59:37 -07:00 |
|
Andrew Kelley
|
e1f498212c
|
fix codegen for implicit maybe wrap
|
2016-01-08 02:52:27 -07:00 |
|
Andrew Kelley
|
9aea99a999
|
implement array slicing syntax
closes #52
|
2016-01-07 05:29:11 -07:00 |
|
Andrew Kelley
|
ea69d6ecda
|
tokenize: detect "..." after a number literal
|
2016-01-07 04:00:05 -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
|
5e64c4d92f
|
support pub structs. move rand to std lib.
guess number example prints the answer now
|
2016-01-06 04:41:11 -07:00 |
|
Andrew Kelley
|
3fbde00eee
|
codegen: fix lshr/ashr not looking at int sign
|
2016-01-06 03:52:49 -07:00 |
|
Andrew Kelley
|
f751a85d55
|
codegen: arithmetic is all wrapping for now
we'll add optimizations back in when we solve #46
|
2016-01-06 02:44:46 -07:00 |
|
Andrew Kelley
|
8b48e242b8
|
codegen: fix array access of struct field
|
2016-01-06 02:43:29 -07:00 |
|
Andrew Kelley
|
9c775d2111
|
codegen: fix member function invocation
|
2016-01-06 02:05:45 -07:00 |
|
Andrew Kelley
|
3c43bc9208
|
support unknown size arrays
|
2016-01-06 01:28:58 -07:00 |
|
Andrew Kelley
|
4ef062b9c8
|
array syntax is [10]i32 instead of [i32; 10]
|
2016-01-05 22:47:47 -07:00 |
|
Andrew Kelley
|
bfb3e7fcb1
|
#sizeof allowed in constant expression
|
2016-01-05 16:46:20 -07:00 |
|
Andrew Kelley
|
d006ea98dd
|
analyze: ability to call a method on a struct pointer
|
2016-01-05 16:34:51 -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
|
3c55162826
|
fix += not allowed for pointers
|
2016-01-04 22:19:57 -07:00 |
|
Andrew Kelley
|
b268e3de04
|
fix binary operators incorrectly assuming i32
|
2016-01-04 22:09:59 -07:00 |
|
Andrew Kelley
|
e1ff201d60
|
fix crash when struct field is invalid
|
2016-01-04 21:42:35 -07:00 |
|
Andrew Kelley
|
e0aa0736be
|
add pointer dereferencing operator
|
2016-01-04 19:11:36 -07:00 |
|
Andrew Kelley
|
22c52f1eb6
|
member functions get a namespaced symbol
|
2016-01-04 17:14:53 -07:00 |
|
Andrew Kelley
|
4514661cfe
|
add member functions
|
2016-01-04 16:57:22 -07:00 |
|
Andrew Kelley
|
2c8958f454
|
import segregation for types
See #3
|
2016-01-04 03:52:37 -07:00 |
|
Andrew Kelley
|
44d5d008d0
|
partial import segregation
See #3
|
2016-01-04 03:31:57 -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
|
1abb4e59be
|
fix various bugs related to guess number example
|
2016-01-02 21:56:33 -07:00 |
|