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