Commit Graph

804 Commits (74cea89fce2af41d2af7379ff526d7046c4d8d77)

Author SHA1 Message Date
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
Andrew Kelley 2d57622355 add test for @alignCast on a slice
See #37
2017-08-29 23:39:54 -04:00
Andrew Kelley 898d65baa9 more alignment improvements
* add alignment capability for fn protos
 * add @alignCast
 * fix some ast rendering code
 * fix some ir rendering code
 * add error for pointer cast increasing alignment
 * update allocators in std to correctly align

See #37
2017-08-29 23:33:25 -04:00
Andrew Kelley 910a96f046 fix tests 2017-08-29 17:10:11 -04:00
Andrew Kelley 816689a3b1 ptrCast gives compile error for increasing alignment
See #37
2017-08-29 16:52:31 -04:00
Andrew Kelley be94299666 prevent implicitly increasing pointer alignment
See #37
2017-08-29 15:19:15 -04:00
Andrew Kelley 1116d82197 fix bitfield pointer syntax
See #37
2017-08-29 08:35:51 -04:00
Andrew Kelley c5c9d98065 introduce align keyword
* remove `@setGlobalAlign`
 * add align keyword for setting alignment on functions and
   variables.
 * loads and stores use alignment from pointer
 * memcpy, memset use alignment from pointer
 * add syntax for pointer alignment
 * slices can have volatile
 * add u2, i2 primitives
 * ignore preferred align and use abi align everywhere
 * back to only having alignOf builtin.
   preferredAlignOf is too tricky to be useful.
   See #432. Partial revert of
   e726925e80.

See #37
2017-08-29 07:51:34 -04:00
Andrew Kelley d7a539906d Merge branch 'embed-lld'
Zig now depends on LLVM 5.0.0.

For the latest version that supports LLVM 4.0.1, use
2a49c876be.

Unfortunately we had to embed LLD into Zig due to some
MACH-O related LLD bugs. One of them is already upstream
and another is awaiting feedback on the llvm-dev mailing
list.

You can use cmake option -DZIG_FORCE_EXTERNAL_LLD=ON to
still use external LLD if you want to live with the MACH-O
bugs or if your system LLD is patched.

Closes #273
2017-08-28 04:09:09 -04:00
Andrew Kelley ff2c794612 all behavior tests passing for macos
See #273
2017-08-27 05:15:24 -04:00
Andrew Kelley 29a418c9d5 progress toward tests passing on MacOS 2017-08-27 00:11:09 -04:00
Andrew Kelley 40feecb3e4 fixups from previous commit
See #396
2017-08-26 13:51:51 -04:00
scurest 5bc877017e use most_aligned_member+padding to represent enum unions 2017-08-26 13:48:16 -04:00
Andrew Kelley e726925e80 remove @alignOf and add @cAbiAlignOf and @preferredAlignOf
See #396
2017-08-26 13:29:24 -04:00
Andrew Kelley db613d38f0 implement comptime bitcasting from array 2017-08-25 20:05:10 -04:00
Andrew Kelley 4d8269f69f fix some casts on const data causing segfault 2017-08-25 19:54:20 -04:00
Andrew Kelley d9dd50d74c fix not propagating parseh aliases through pub use decls 2017-08-20 04:03:36 -04:00