Andrew Kelley
1cc450e6e7
fix assert when wrapping zero bit type in nullable
...
closes #659
2017-12-19 18:21:42 -05:00
Andrew Kelley
9d9201c3b4
bring back code that uses export and fix tests
...
partial revert of 1fdebc1dc4
2017-12-19 02:39:43 -05:00
Andrew Kelley
1fdebc1dc4
wip export rewrite
2017-12-18 09:59:57 -05:00
Andrew Kelley
c9e01412a4
fix compiler crash in a nullable if after an if in...
...
...a switch prong of a switch with 2 prongs in an else
closes #656
2017-12-14 01:07:23 -05:00
Andrew Kelley
f55fdc00fc
fix const and volatile qualifiers being dropped sometimes
...
in the expression `&const a.b`, the const (and/or volatile)
qualifiers would be incorrectly dropped.
closes #655
2017-12-13 21:53:52 -05:00
Andrew Kelley
84619abe9f
add test for allowing slice[slice.len..slice.len]
2017-12-12 21:56:13 -05:00
Andrew Kelley
756a218e27
add implicit cast from enum tag type of union to const ptr to the union
...
closes #654
2017-12-08 17:49:14 -05:00
Andrew Kelley
3577a80bb6
translate-c: more complex logic for translating a C cast in a macro
2017-12-08 12:28:21 -05:00
Andrew Kelley
182cf5b8de
translate-c: support macros with pointer casting
2017-12-07 12:27:29 -05:00
Andrew Kelley
62c25af802
add higher level arg-parsing API + misc. changes
...
* add @noInlineCall - see #640
This fixes a crash in --release-safe and --release-fast modes
where the optimizer inlines everything into _start and
clobbers the command line argument data.
If we were able to verify that the user's code never reads
command line args, we could leave off this "no inline"
attribute.
* add i29 and u29 primitive types. u29 is the type of alignment,
so it makes sense to be a primitive.
probably in the future we'll make any `i` or `u` followed by
digits into a primitive.
* add `aligned` functions to Allocator interface
* add `os.argsAlloc` and `os.argsFree` so that you can get
a `[]const []u8`, do whatever arg parsing you want, and then free
it. For now this uses the other API under the hood, but it could
be reimplemented to do a single allocation.
* add tests to make sure command line argument parsing works.
2017-12-06 18:12:05 -05:00
Andrew Kelley
f464fe14f4
switch on enum which only has 1 field is comptime known
...
closes #593
2017-12-05 22:26:17 -05:00
Andrew Kelley
bb6b4f8db2
fix enum with 1 member causing segfault
...
closes #647
2017-12-05 22:15:33 -05:00
Andrew Kelley
c49ee9f632
allow union and its tag type to peer resolve to the tag type
2017-12-05 21:33:24 -05:00
Andrew Kelley
2715f6fdb8
allow implicit cast from union to its enum tag type
...
closes #642
2017-12-05 21:10:47 -05:00
Andrew Kelley
960914a073
add implicit cast from enum to union
...
when the enum is the tag type of the union and is comptime known
to be of a void field of the union
See #642
2017-12-05 20:46:58 -05:00
Andrew Kelley
63a2f9a8b2
fix casting integer literal to enum
2017-12-05 18:09:22 -05:00
Andrew Kelley
76f3bdfff8
add test for casting union to tag type of union
2017-12-04 02:12:13 -05:00
Andrew Kelley
54138d9e82
add test for union with 1 void field being 0 bits
2017-12-04 02:05:33 -05:00
Andrew Kelley
084911d9b3
add test for @sizeOf on extern and packed unions
2017-12-04 02:04:08 -05:00
Andrew Kelley
05d9f07541
more tests for unions
...
See #618
2017-12-04 00:56:27 -05:00
Andrew Kelley
fce435db26
fix abi alignment of union-enums not counting tag type
...
add more tests for unions
See #618
2017-12-04 00:32:12 -05:00
Andrew Kelley
5a8367e892
rename @EnumTagType to @TagType. add tests for union-enums
...
See #618
2017-12-03 22:36:01 -05:00
Andrew Kelley
0ad1239522
rework enums and unions and their relationship to each other
...
* @enumTagName renamed to @tagName and it works on enums and
union-enums
* Remove the EnumTag type. Now there is only enum and union,
and the tag type of a union is always an enum.
* unions support specifying the tag enum type, and they support
inferring an enum tag type.
* Enums no longer support field types but they do support
setting the tag values. Likewise union-enums when inferring
an enum tag type support setting the tag values.
* It is now an error for enums and unions to have 0 fields.
* switch statements support union-enums
closes #618
2017-12-03 20:43:56 -05:00
Andrew Kelley
137c8f5e8a
ability to set tag values of enums
...
also remove support for enums with 0 values
closes #305
2017-12-02 22:32:39 -05:00
Andrew Kelley
98237f7c0b
casting between integer and enum only works via tag type
...
See #305
2017-12-02 17:12:37 -05:00
Andrew Kelley
264c86853b
packed structs can have enums with explicit tag types
...
See #305
2017-12-01 00:34:29 -05:00
Andrew Kelley
b62e2fd870
ability to specify tag type of enums
...
see #305
2017-11-30 22:08:11 -05:00
Andrew Kelley
7729f6cf4e
translate-c: support static incomplete array inside function
2017-11-29 21:50:38 -05:00
Andrew Kelley
716b0b8655
fix capturing value of switch with all unreachable prongs
...
closes #635
2017-11-29 21:34:17 -05:00
Andrew Kelley
7066283004
translate-c: support const ptr initializer
2017-11-28 23:44:45 -05:00
Andrew Kelley
26096e79d1
translate-c: fix clobbering primitive types
2017-11-28 03:17:28 -05:00
Andrew Kelley
e745544dac
translate-c: detect macros referencing field lookup
...
as fn calls which assert the fn ptr is non-null
2017-11-28 02:58:51 -05:00
Andrew Kelley
f537c51f25
Merge branch 'c-field-expr' of https://github.com/dimenus/zig into dimenus-c-field-expr
2017-11-28 00:44:16 -05:00
Mason Remaley
3e8fd24547
Implements translation for the prefix not operator ( #628 )
2017-11-27 21:00:05 -05:00
Ryan Saunderson
57049b95b3
Resolving merge w/ upstream master
2017-11-27 11:42:48 -06:00
dimenus
04472f57be
Added support for exporting of C field expressions
2017-11-27 11:23:14 -06:00
Andrew Kelley
671183fa9a
translate-c: support pointer casting
...
also avoid some unnecessary casts
2017-11-26 20:05:55 -05:00
Andrew Kelley
93fac5f257
translate-c: support variable name shadowing
2017-11-26 17:30:43 -05:00
Andrew Kelley
9a8545d590
translate-c: fix translation when no default switch case
2017-11-26 16:03:56 -05:00
Andrew Kelley
aa2ca3f02c
translate-c: better way to translate switch
...
previously `continue` would be handled incorrectly
2017-11-26 15:58:49 -05:00
Andrew Kelley
1b0e90f70b
translate-c supports switch statements
2017-11-26 00:58:11 -05:00
Andrew Kelley
df0e875856
translate-c: introduce the concept of scopes
...
in preparation to implement switch and solve variable name collisions
2017-11-25 20:34:05 -05:00
Andrew Kelley
a2afcae9ff
fix crash when constant inside comptime function has compile error
...
closes #625
2017-11-25 18:16:33 -05:00
Andrew Kelley
b390929826
translate-c supports break and continue
2017-11-25 11:56:17 -05:00
Andrew Kelley
bf20b260ce
translate-c supports for loops
2017-11-25 00:57:48 -05:00
Andrew Kelley
18eb3c5f90
translate-c supports returning void
2017-11-25 00:25:47 -05:00
Andrew Kelley
40480c7cdc
translate-c supports string literals
2017-11-24 19:26:05 -05:00
Andrew Kelley
68312afcdf
translate-c: support pre increment and decrement operators
2017-11-24 16:36:39 -05:00
Andrew Kelley
5a25505668
rename "parsec" to "translate-c"
2017-11-24 14:56:05 -05:00
Andrew Kelley
339d48ac15
parse-c: support address of operator
2017-11-17 12:11:03 -05:00
Andrew Kelley
b50c676f76
add parse-c support for unions
2017-11-16 23:54:33 -05:00
Andrew Kelley
5d2ba056c8
fix codegen for union init with runtime value
...
see #144
2017-11-16 22:06:08 -05:00
Andrew Kelley
e26ccd5166
debug safety for unions
2017-11-16 21:15:15 -05:00
Andrew Kelley
018cbff438
unions have a secret field for the type
...
See #144
2017-11-15 22:52:47 -05:00
Andrew Kelley
f276fd0f37
basic union support
...
See #144
2017-11-15 13:04:18 -05:00
Andrew Kelley
5029322aa1
c-to-zig: handle UO_Deref
2017-11-14 02:10:13 -05:00
Josh Wolfe
6ffaf4c2e2
parsec supports do loop
2017-11-13 22:56:20 -07:00
Josh Wolfe
012ce1481e
parsec supports post increment/decrement with used result
2017-11-13 22:19:51 -07:00
Josh Wolfe
4c2cdf6f4d
parsec supports more compound assign operators
2017-11-13 21:37:30 -07:00
Josh Wolfe
c1fde0e8c4
parsec supports bitshift operators
2017-11-13 20:49:53 -07:00
Andrew Kelley
03732860be
add test case for previous commit
2017-11-13 22:33:41 -05:00
Josh Wolfe
57cd074959
parsec supports C comma operator
2017-11-13 19:59:32 -07:00
Josh Wolfe
1f28fcdec5
parsec supports C NULL to pointer implicit cast
2017-11-13 19:39:46 -07:00
Andrew Kelley
7ea669e04c
fix parameter of extern var args not type checked
...
closes #601
2017-11-09 11:30:39 -05:00
Andrew Kelley
4f8c26d2c6
fix enum sizes too large
...
closes #598
2017-11-08 21:44:10 -05:00
Andrew Kelley
4543413491
std.io: introduce buffered I/O and change API
...
I started working on #465 and made some corresponding std.io
API changes.
New structs:
* std.io.FileInStream
* std.io.FileOutStream
* std.io.BufferedOutStream
* std.io.BufferedInStream
Removed:
* std.io.File.in_stream
* std.io.File.out_stream
Now instead of &file.out_stream or &file.in_stream to get access to
the stream API for a file, you get it like this:
var file_in_stream = io.FileInStream.init(&file);
const in_stream = &file_in_stream.stream;
var file_out_stream = io.FileOutStream.init(&file);
const out_stream = &file_out_stream.stream;
This is evidence that we might not need any OOP features -
See #130 .
2017-11-07 03:22:27 -05:00
Andrew Kelley
634e8713c3
add @memberType and @memberName builtin functions
...
see #383
there is a plan to unify most of the reflection into 2
builtin functions, as outlined in the above issue,
but this gives us needed features for now, and we can
iterate on the design in future commits
2017-11-06 22:07:19 -05:00
Andrew Kelley
f0d755153d
add compile-time reflection for function arg types
...
See #383
2017-11-04 16:20:02 -04:00
Andrew Kelley
a31b23c46b
more compile-time type reflection
...
See #383
2017-11-03 00:00:57 -04:00
Andrew Kelley
9e234d4208
breaking change to std.io API
...
* Merge io.InStream and io.OutStream into io.File
* Introduce io.OutStream and io.InStream interfaces
- io.File implements both of these
* Move mem.IncrementingAllocator to heap.IncrementingAllocator
Instead of:
```
%return std.io.stderr.printf("hello\n");
```
now do:
```
std.debug.warn("hello\n");
```
To print to stdout, see `io.getStdOut()`.
* Rename std.ArrayList.resizeDown to std.ArrayList.shrink.
2017-10-31 04:47:55 -04:00
Andrew Kelley
4c306af4eb
add test case for previous commit
2017-10-27 01:22:48 -04:00
Marc Tiehuis
6663638195
Improve invalid character error messages ( #566 )
...
See #544
2017-10-26 10:00:23 -04:00
Andrew Kelley
300c83d893
fix crash on field access of opaque type
2017-10-25 23:18:18 -04:00
Andrew Kelley
643ab90ace
add maximum value for @setAlignStack
2017-10-23 22:33:00 -04:00
Andrew Kelley
175893913d
fix compiler crash regarding type name of undefined
...
See #547
2017-10-21 13:14:10 -04:00
Andrew Kelley
8cfb0cfbce
std.os.ChildProcess: on windows cwd affects exe search path
...
to match posix semantics
disabling non-passing build-examples tests. See #538
2017-10-16 02:30:03 -04:00
Andrew Kelley
78b753af9d
fix debug safety tests on windows
...
See #302
2017-10-16 00:20:51 -04:00
Andrew Kelley
d6bfa3f639
fix compare-output tests on windows
...
the %a format specifier had different behavior so I
used %.013a instead to make it the same on all platforms
2017-10-15 23:52:13 -04:00
Andrew Kelley
e3ad13e054
fix windows argument parsing
2017-10-15 20:19:15 -04:00
Andrew Kelley
bb169a7b36
fix child process stdio piping behavior on windows
2017-10-15 16:03:32 -04:00
Andrew Kelley
b61a6ec8a6
implement command line argument parsing for windows
...
See #302
2017-10-11 22:50:16 -04:00
Andrew Kelley
b4e42042cf
fix compiler crash when invalid value used
...
closes #527
2017-10-06 12:41:14 -04:00
Andrew Kelley
8d4668231a
compiler-rt tests pass with and without libc
2017-10-03 01:15:07 -04:00
Andrew Kelley
3c6eff465d
fix tests on linux and macos
2017-10-03 01:14:29 -04:00
Andrew Kelley
f1bd02e6f4
add @setAlignStack builtin
2017-10-03 00:29:27 -04:00
Andrew Kelley
ec40542c44
windows: alignstack=16 on every function
...
See #302
2017-10-02 09:55:49 -04:00
Andrew Kelley
8156e4f78f
fix parse-c tests
2017-10-01 21:42:33 -04:00
Andrew Kelley
6ae631d1a7
add windows 32 bit to test matrix
...
See #302
2017-10-01 11:11:38 -04:00
Andrew Kelley
6f250f568a
workaround llvm bug for windows alignment
...
See #302
2017-09-30 23:42:44 -04:00
Andrew Kelley
c6295fe9ab
remove zigrt
...
adds test case for #394
partially reverts a32b5929cc
2017-09-30 20:21:57 -04:00
Marc Tiehuis
9dfe217be3
Allow 128-bit hex float literals
...
Closes #499 .
2017-09-28 23:33:36 +13:00
Andrew Kelley
cba4a9ad4a
update std.os.ChildProcess API
...
* add std.os.ChildProcess.setUserName
* add std.os.getUserId
2017-09-26 01:01:49 -04:00
Josh Wolfe
ee42caee0e
fix chain assignment semicolon
2017-09-20 23:49:46 -07:00
Josh Wolfe
d7775e3dca
chain assignment
2017-09-20 23:45:53 -07:00
Andrew Kelley
be37b03f4c
parse-c: support sizeof
2017-09-21 02:37:42 -04:00
Andrew Kelley
c01ae69cdb
parse-c: support implicit cast to void *
2017-09-21 02:31:52 -04:00
Andrew Kelley
2655cf1bf7
parse-c: support c style cast
2017-09-21 01:55:15 -04:00
Josh Wolfe
5ac2cf9c28
fix assignment needing an lvalue
2017-09-20 22:41:16 -07:00
Andrew Kelley
1360af847e
parse-c: array access expression
2017-09-21 01:38:29 -04:00
Josh Wolfe
67a5a3f3d7
add sub mul div rem
2017-09-20 22:36:43 -07:00
Andrew Kelley
0d1f64b08c
parse-c: fix undefined array literals
2017-09-21 01:22:50 -04:00
Josh Wolfe
33784871ec
assign
2017-09-20 22:14:39 -07:00
Josh Wolfe
f7cb77a02c
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-20 22:05:14 -07:00
Josh Wolfe
2ae789d27c
bitwise binary operators
2017-09-20 22:04:51 -07:00
Andrew Kelley
0d91747502
parse-c: null statements
2017-09-21 01:04:43 -04:00
Andrew Kelley
eba45b0013
parse-c: field access expressions
2017-09-21 00:54:08 -04:00
Josh Wolfe
0827a8f36b
==, !=
2017-09-20 21:47:43 -07:00
Josh Wolfe
4c8443d96d
logical and, logical or
2017-09-20 21:37:56 -07:00
Josh Wolfe
05c1a8b3cc
add some tests
2017-09-20 21:27:13 -07:00
Andrew Kelley
f68d724647
parse-c: support function calls
2017-09-21 00:02:18 -04:00
Andrew Kelley
38059e6f97
parse-c: fix anonymous enums
2017-09-20 23:16:44 -04:00
Andrew Kelley
9cdb5dec7a
parsec: cleaner shifting code for fixed size types
2017-09-20 22:44:24 -04:00
Josh Wolfe
a5e4e205c8
fix tests
2017-09-20 19:12:57 -07:00
Andrew Kelley
0228f8c9fd
all parsec tests passing
2017-09-20 21:16:26 -04:00
Andrew Kelley
3c41c2d84b
Merge branch 'master' into c-to-zig
2017-09-20 12:52:54 -04:00
Andrew Kelley
dbc202cc6a
add test for struct with invalid field
...
see #468
2017-09-17 23:21:22 -04:00
Andrew Kelley
7ee00730ac
add option to run tests in LLDB and turn it on for macos travis
2017-09-17 14:43:51 -04:00
Andrew Kelley
21a55d89b6
add release-safe to the test matrix
...
See #449
the llvm assertion that is being triggered appears to be an llvm
bug that is harmless with assertions off.
2017-09-16 20:30:39 -04:00
Marc Tiehuis
71342f8249
Add dash arguments for cli
2017-09-17 12:26:13 +12:00
Andrew Kelley
14cda27b64
depend on embedded SoftFloat-3d instead of __float128
...
See #302
See #467
2017-09-14 01:46:47 -04:00
Andrew Kelley
d9eabde319
add Child property of slice type
...
also rename child field to Child for pointer and array
2017-09-13 14:30:57 -04:00
Andrew Kelley
4bd23aefe7
local var
2017-09-11 22:58:06 -04:00
jean-dao
373785ae8d
c macros: support hex chars ( #459 )
...
* c macros: remove add_char redundancies
* c macros: support hex chars
* c macros: add test for hex chars
2017-09-10 16:35:56 -04:00
Andrew Kelley
011df61f8a
fix not verifying GlobalLinkage and AtomicOrder types
...
thanks to aep4Ayai on IRC
2017-09-10 14:04:19 -04:00
Andrew Kelley
b00b7bd290
variables are allowed to be pointers to opaque
2017-09-10 00:34:44 -04:00
Andrew Kelley
b5d9584e6f
support parens in C macros
...
closes #454
2017-09-10 00:20:09 -04:00
Andrew Kelley
9dfbdeace6
add import test
2017-09-09 22:54:50 -04:00
Andrew Kelley
4c78142af1
rename some behavior tests
2017-09-09 22:53:32 -04:00
Andrew Kelley
bc0a60c7a6
more compile errors for non-const variables of things
...
closes #456
2017-09-09 22:46:08 -04:00
Andrew Kelley
9fb4d1fd6c
std: os.ChildProcess knows when its child died
...
using signal handlers
2017-09-07 23:10:51 -04:00
Andrew Kelley
2c9bdad346
rename parseh to parsec
2017-09-05 22:55:03 -04:00
Andrew Kelley
3ff465e288
add OpaqueType builtin
...
closes #326
2017-09-05 18:51:07 -04:00
Andrew Kelley
5c386f9911
parseh: remove unneeded hash tables
2017-09-05 01:22:26 -04:00
Andrew Kelley
f6c271f8eb
parseh tests passing
2017-09-05 00:52:05 -04:00
Andrew Kelley
b64843bf70
parseh: fix generating functions from macros
2017-09-05 00:45:09 -04:00
Andrew Kelley
cc621cdee3
fix parseh bugs
2017-09-05 00:21:02 -04:00
Andrew Kelley
e1d5da20a5
rewrite parseh to use AST instead of direct types
...
some tests still failing
2017-09-02 04:11:23 -04:00
Andrew Kelley
c42e809f13
setEvalBranchQuota must be called from top of comptime stack
2017-08-31 16:54:20 -04:00
Andrew Kelley
67b6dd28ec
allow array literals to have size and fix comptime bug
2017-08-31 16:30:46 -04:00
Andrew Kelley
eb0979189b
add windows to test targets
...
cross-compiling hello world with no libc for windows is working
2017-08-31 11:41:58 -04:00
Andrew Kelley
97013951dd
tests use darwin, not macosx since that's what macbook reports as
2017-08-30 15:15:14 -04:00
Andrew Kelley
0e9bdb44a6
test suite cross-compile builds tests for other targets
2017-08-30 14:55:26 -04:00
Andrew Kelley
052b4ae941
align syntax: align(4) instead of align 4
...
closes #37
2017-08-30 04:54:33 -04:00
Andrew Kelley
e9280c86a1
compile error for not-aligned-enough pointer to cmpxchg
...
See #37
2017-08-30 02:56:42 -04:00
Andrew Kelley
010b725bde
add alignment field to pointer type
2017-08-30 02:41:27 -04:00
Andrew Kelley
5482f9f9e8
when getting an element pointer, use the best alignment
...
type we can figure out is safe to use
See #37
2017-08-30 02:25:41 -04:00
Andrew Kelley
56cc62a9c7
@ptrCast preserves larger alignment if applicable
...
See #37
2017-08-30 01:12:47 -04:00
Andrew Kelley
fa9006f8d1
generic functions can access comptime args in align value
...
See #37
2017-08-30 00:46:38 -04:00
Andrew Kelley
c2357830b4
add "child" field to pointer type
2017-08-30 00:17:11 -04:00
Andrew Kelley
b35dad88b4
add tests for function alignment handling
...
See #37
2017-08-30 00:06:14 -04:00