Andrew Kelley
4e7effd3d3
port to llvm 3.9
2016-09-04 18:30:40 -07:00
Andrew Kelley
0d5ecc4312
ability to have a return type of 'type'
2016-08-07 20:08:37 -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
425c0ffa01
rename NodeTypeStructDecl to NodeTypeContainerDecl
2016-07-17 16:30:41 -07:00
Andrew Kelley
2ed72022ce
support generic data structures
...
See #22
2016-05-07 17:00:58 -07:00
Andrew Kelley
66163692ad
parseh: support anonymous enums and enums with initializers
2016-04-22 21:43:48 -07:00
Andrew Kelley
8187396f64
add syntax to allow symbols to have arbitrary strings as names
2016-04-22 15:24:18 -07:00
Andrew Kelley
35362f8137
better parsing of C macros
...
See #88
2016-04-21 15:48:13 -07:00
Andrew Kelley
76e1541803
update to llvm 3.8.0
2016-03-08 18:56:14 -07:00
Andrew Kelley
5df091fea9
c_void is provided outside of C imports
2016-03-01 15:26:41 -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
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
8d510c699a
parseh: fix branching on undefined memory
2016-02-13 13:25:55 -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
1d92700d08
fix build with GCC
2016-02-09 08:46:55 -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
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
b87d0abefe
fix debug info for bool type
2016-02-04 14:02:37 -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
7af59c76e4
build: fix libc path finding
2016-02-02 15:04:14 -07:00
Andrew Kelley
06f6acb4b1
inline is a keyword instead of a directive
2016-02-01 17:25:38 -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
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
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
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
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
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