Andrew Kelley
998e25a01e
pthread support working
2018-04-28 23:47:39 -04:00
Andrew Kelley
96ecb40259
add fuzz tests for std.atomic.Stack
2018-04-28 17:53:06 -04:00
Jimmi Holst Christensen
73bf897b5c
Using allocate instead of allocate_nonzero so we don't have to memset
2018-04-28 19:21:23 +02:00
Jimmi Holst Christensen
d6f033b42d
Fixed build error
2018-04-28 19:09:25 +02:00
Jimmi Holst Christensen
837166319d
Trying to fix osx build failing by setting param_info.type to nullptr
2018-04-28 19:02:46 +02:00
Alexandros Naskos
af73462da4
Started work on function definition TypeInfo generation.
2018-04-28 19:57:59 +03:00
Jimmi Holst Christensen
341f8c1e86
Fixed wrong formatting for arg_index when reporting @ArgType error
2018-04-28 17:57:47 +02:00
Alexandros Naskos
9ba400673d
Generating TypeInfo's now forces definitions to be resolved.
2018-04-28 18:38:38 +03:00
Jimmi Holst Christensen
fba0347ec4
.ReturnType and @ArgType now emits errors on unresolved types
...
related: #846
2018-04-28 17:17:48 +02:00
Jimmi Holst Christensen
2fc34eaa58
Functions with infered error set can now return literals
...
fixes #852
2018-04-28 16:27:31 +02:00
Alexandros Naskos
61b0180596
Added definition TypeInfo generation, except for function definitions.
2018-04-28 17:01:19 +03:00
Jimmi Holst Christensen
3178528335
Removed zero sized error set optimization
...
fixes #762
fixes #818
2018-04-28 14:05:08 +02:00
Alexandros Naskos
ea2596280f
Added BoundFn TypeInfo generation.
2018-04-27 05:10:20 +03:00
Alexandros Naskos
8f703f919f
Added Fn TypeInfo generation.
2018-04-27 04:29:50 +03:00
Alexandros Naskos
a2dadbc206
Added struct TypeInfo generation.
2018-04-27 02:52:09 +03:00
Alexandros Naskos
9041d0d37e
Fixed enum tag type detection in TypeInfo generation.
2018-04-27 02:05:24 +03:00
Alexandros Naskos
884e32d5c3
Added ErrorUnion, Union TypeInfo generation
2018-04-26 19:56:34 +03:00
Alexandros Naskos
fbbbee6b72
Switched to shallow TypeInfo.
2018-04-26 18:18:47 +03:00
Alexandros Naskos
4aa5d87ada
Added ErrorSet TypeInfo generation.
2018-04-26 17:14:38 +03:00
Alexandros Naskos
f5977f68eb
Added Enum TypeInfo except for methods
2018-04-26 16:41:59 +03:00
Alexandros Naskos
7a91e4736a
Reset parent on cached TypeInfo values if we need to.
2018-04-26 14:29:27 +03:00
Alexandros Naskos
bb56360bfa
Added TypeInfo cache
2018-04-26 14:03:19 +03:00
Alexandros Naskos
dd88d7deda
Cleanup
2018-04-26 13:27:16 +03:00
Alexandros Naskos
bc160821d3
Changed TypeInfo layout.
2018-04-25 17:50:11 +03:00
Alexandros Naskos
2606993cb4
Fixed ir_type_info_struct_set_parent for struct parents.
2018-04-25 11:59:35 +03:00
Alexandros Naskos
d68aea4f35
Added checks for field name/index mapping in TypeInfo generation. Abstracted the parent setting out.
2018-04-25 11:35:46 +03:00
Alexandros Naskos
778b931bf3
Fixed comptime union void field access
2018-04-25 02:50:18 +03:00
Alexandros Naskos
182a9fad2d
Added ArrayInfo, NullableInfo, PromiseInfo generation
2018-04-24 17:38:30 +03:00
Alexandros Naskos
09d7033d1d
PointerInfo child is known at comptime
2018-04-24 17:08:45 +03:00
Alexandros Naskos
2d8553c853
Fixed PointerInfo generation
2018-04-24 17:01:20 +03:00
Alexandros Naskos
189e8e97bd
PointerInfo child is a pointer to a TypeInfo union, still not working correctly
2018-04-24 16:50:36 +03:00
Alexandros Naskos
0e5fb035e3
Added (broken) pointer info, float info
2018-04-24 16:23:22 +03:00
Alexandros Naskos
e9309d3b13
Fixed IntInfo generation.
2018-04-24 15:17:34 +03:00
Alexandros Naskos
ec2a3ed500
Attempt at adding comptime union field access
2018-04-24 15:03:46 +03:00
Alexandros Naskos
fb88f5a0d2
@typeInfo with void payloads now works!
2018-04-24 11:20:33 +03:00
Alexandros Naskos
7eab62325b
One step towards @typeInfo
2018-04-24 01:49:22 +03:00
Andrew Kelley
15bf0c1541
fix interaction between defer and labeled break
...
closes #830
2018-04-23 18:06:33 -04:00
Andrew Kelley
89a4c373d3
fix bigint twos complement implementation
...
closes #948
2018-04-23 12:06:18 -04:00
Andrew Kelley
8503eff8c1
add compile error for invalid deref on switch target
...
closes #945
2018-04-22 23:46:55 -04:00
Andrew Kelley
75328e3204
exit(1) instead of abort() for file not found
2018-04-22 21:47:25 -04:00
Andrew Kelley
25dff91fa0
fix windows build broken by previous commit
...
fixes build failure from 1c41f1ca62
2018-04-22 21:08:52 -04:00
Andrew Kelley
1c41f1ca62
better error reporting for missing libc on windows
...
closes #931
2018-04-22 20:54:52 -04:00
Andrew Kelley
21767144fc
linux: support VDSO for clock_gettime
...
also fix a compiler crash when using cmpxchg with nullable pointer
2018-04-22 18:11:50 -04:00
Andrew Kelley
6e57243a79
zig fmt: preserve comments in front of test blocks
...
* refactor std.zig.parser
* fix compiler crashing for some compile errors
* take advantage of @field in std.zig.ast
* move ast.NodeFoo to ast.Node.Foo
* comment preservation is more explicit
See #911
2018-04-20 02:15:09 -04:00
Jimmi Holst Christensen
1b91478bff
Optimized field ptr ir for hot path and fix assignment bug
2018-04-19 21:34:18 +02:00
Jimmi Holst Christensen
6b4f6ebd89
Added field builtin function
2018-04-19 20:11:16 +02:00
Andrew Kelley
06909ceaab
support break in suspend blocks
...
* you can label suspend blocks
* labeled break supports suspend blocks
See #803
2018-04-18 22:21:54 -04:00
Andrew Kelley
ca4341f7ba
add --no-rosegment cli option
...
this provides a workaround for #896
until valgrind adds support for clang/LLD
(equivalent to gcc/gold -rosegment)
2018-04-18 17:14:09 -04:00
Andrew Kelley
f1f998e071
improve cmpxchg
...
* remove @cmpxchg, add @cmpxchgWeak and @cmpxchgStrong
- See explanations in the langref.
* add operand type as first parameter
* return type is ?T where T is the operand type
closes #461
2018-04-18 12:16:42 -04:00
Andrew Kelley
96ebd8b23b
fix windows not respecting --msvc-lib-dir, --kernel32-lib-dir
...
I believe this was a regression caused by
51a6ff18d4
closes #927
2018-04-16 22:33:34 -04:00
Alexandros Naskos
1c85050dad
Set SizeLevel to 2 in ReleaseSmall mode
2018-04-16 03:54:40 +03:00
Alexandros Naskos
253ecd5c11
Added ReleaseSmall mode
2018-04-16 03:26:10 +03:00
Andrew Kelley
b9360640ce
add @atomicLoad builtin
...
See #174
2018-04-15 18:12:00 -04:00
Andrew Kelley
a8d794215e
exit with error code instead of panic for file not found
2018-04-15 15:22:07 -04:00
Andrew Kelley
b5459eb987
add @sqrt built-in function
...
See #767
2018-04-15 13:26:58 -04:00
Andrew Kelley
4a2bfec150
fix linux implementation of self exe path
...
closes #894
2018-04-15 12:57:45 -04:00
Andrew Kelley
b7af9edb8a
add std.os.createThread
...
this adds kernel thread support to the standard library for
linux.
See #174
2018-04-14 02:24:05 -04:00
Andrew Kelley
0509414dfe
fix regression with zig install dir
...
introduced in 1999f0daad
2018-04-13 11:31:38 -04:00
Andrew Kelley
30c5f3c441
Merge pull request #915 from zig-lang/self-hosted-cli
...
Revise self-hosted command line interface
2018-04-13 11:16:06 -04:00
Andrew Kelley
1999f0daad
fix undefined behavior triggered by fn inline test
...
LLVM destroys the string that we use to test if LLVM deleted the
inlined function.
Also fixed forgetting to initialize a buffer in std lib path detection.
2018-04-13 11:10:17 -04:00
Andrew Kelley
373b3586a1
inline functions must be stored in const or comptime var
...
closes #913
2018-04-12 16:26:23 -04:00
Andrew Kelley
29e0e4088e
Merge remote-tracking branch 'origin/master' into self-hosted-cli
2018-04-12 11:20:38 -04:00
Andrew Kelley
7b2cb7e679
remove --zig-install-prefix arg now that we find std at runtime
2018-04-12 11:00:11 -04:00
Andrew Kelley
e48e707c32
allow integer and float literals to be passed to var params
...
closes #623
2018-04-11 14:47:37 -04:00
Andrew Kelley
e85a10e9f5
async tcp server proof of concept
2018-04-09 00:52:45 -04:00
Andrew Kelley
acd8f6ef18
fixups from rebase
2018-04-08 18:49:20 -04:00
Andrew Kelley
b85ef656ca
running into the llvm corosplit error again
2018-04-08 18:30:54 -04:00
Andrew Kelley
0d22a00f6f
*WIP* async/await TCP server
2018-04-08 18:26:24 -04:00
Andrew Kelley
ee1a4f4c1d
error return traces work with async return case
2018-04-08 17:44:29 -04:00
Andrew Kelley
9e98ea552d
fix calling convention at callsite of zig-generated fns
2018-04-08 16:40:59 -04:00
Andrew Kelley
ada441157f
put the error return addresses in the coro frame
2018-04-08 16:04:48 -04:00
Andrew Kelley
e4083b7391
codegen: fix not putting llvm allocas together
2018-04-08 16:04:48 -04:00
Andrew Kelley
d26905c102
error return traces for the early return case
...
it would work but LLVM is not correctly spilling the addresses.
See #821
2018-04-08 16:04:48 -04:00
Ben Noordhuis
8980281184
fix llvm assert on version string with git sha
...
LLVM's CodeViewDebug pass misparses the version string when it contains
a git revision so stop doing that. This only affected Windows builds.
closes #898
2018-04-06 00:31:55 +02:00
Marc Tiehuis
2e5115b068
Add run compiler command
...
'zig run file.zig' builds a file and stores the artifacts in the global
cache. On successful compilation the binary is executed.
'zig run file.zig -- a b c' does the same, but passes the arguments a,
b and c as runtime arguments to the program. Everything after an '--' are
treated as runtime arguments.
On a posix system, a shebang can be used to run a zig file directly. An
example shebang would be '#!/usr/bin/zig run'. You may not be able pass
extra compile arguments currently as part of the shebang. Linux for example
treats all arguments after the first as a single argument which will result
in an 'invalid command'.
Currently there is no customisability for the cache path as a compile
argument. For a posix system you can use `TMPDIR=. zig run file.zig` to
override, in this case using the current directory for the run cache.
The input file is always recompiled, even if it has changed. This is
intended to be cached but further discussion/thought needs to go into
this.
Closes #466 .
2018-04-01 17:03:06 +12:00
Andrew Kelley
67f11190d1
musl-friendly dynamic linking
2018-03-31 16:34:55 -04:00
Andrew Kelley
8f962a957a
fix regressions on windows
2018-03-31 11:26:02 -04:00
Andrew Kelley
c3724ec506
implement os_self_exe_path in the c++ compiler for darwin
...
ported from the zig std lib
this fixes looking for zig std lib at runtime on darwin
2018-03-31 02:12:44 -04:00
Andrew Kelley
b01c50d6fa
find libc and zig std lib at runtime
...
this removes the following configure options:
* ZIG_LIBC_LIB_DIR
* ZIG_LIBC_STATIC_LIB_DIR
* ZIG_LIBC_INCLUDE_DIR
* ZIG_DYNAMIC_LINKER
* ZIG_EACH_LIB_RPATH
* zig's reliance on CMAKE_INSTALL_PREFIX
these options are still available as command line options, however,
the default will attempt to execute the system's C compiler to
collect system defaults for these values.
closes #870
2018-03-30 17:10:54 -04:00
Andrew Kelley
ccadcbc715
fix examples and rename std.rand.Rand to std.rand.Random
2018-03-29 12:33:29 -04:00
Andrew Kelley
032fccf615
fix compile time array concatenation for slices
...
closes #866
2018-03-28 23:25:12 -04:00
Andrew Kelley
5627347bab
Merge pull request #865 from bnoordhuis/zig-build-stage2
...
skeleton stage 2 support for 'zig build'
2018-03-28 21:02:09 -04:00
Jimmi Holst Christensen
72ce146293
Fixed looking for windows sdk when targeting linux
2018-03-29 00:53:06 +02:00
Ben Noordhuis
db70b909a0
non-zero exit when build.zig cannot be created
...
Make the stage 1 compiler exit with a non-zero status code
when `zig build --init` cannot create a new build.zig file.
2018-03-28 18:30:41 +02:00
Andrew Kelley
6cb99fdac3
fix crash when compile error in analyzing @panic call
2018-03-27 15:07:45 -04:00
Andrew Kelley
aa2995ee39
fix invalid codegen for error return traces across suspend points
...
See #821
Now the code works correctly, but error return traces are missing
the frames from coroutines.
2018-03-24 22:07:12 -04:00
Andrew Kelley
897e783763
add promise->T syntax parsing
...
closes #857
2018-03-24 19:25:53 -04:00
Andrew Kelley
18af2f9a27
fix async fns with inferred error sets
...
closes #856
2018-03-24 18:28:32 -04:00
Andrew Kelley
b1c07c0ea9
move error ret tracing codegen to zig ir
...
progress towards #821
2018-03-24 18:28:32 -04:00
Marc Tiehuis
3d1732ef6c
Fix OpqaueType usage in exported c functions
...
We prefer `struct typename`. If a typedef is required, this must be done
manually after generation.
2018-03-23 20:27:11 +13:00
Andrew Kelley
7a99d63c76
ability to use async function pointers
...
closes #817
2018-03-22 16:56:03 -04:00
Andrew Kelley
f885a1ab61
change async function call syntax
...
* instead of `async(allocator) call()`, now it is
`async<allocator> call()`.
* Fixes syntax ambiguity when leaving off the allocator
* Fixes parse failure when call is a field access
This sets a precedent for using `<` to pass arguments
to a keyword. This will affect `enum`, `union`, and
`fn` (see #661 )
2018-03-21 19:56:41 -04:00
Andrew Kelley
efebb6d341
fix tests broken by previous commit
2018-03-14 03:37:54 -04:00
Andrea Orru
c828c23f71
Tests for zero-bit field compiler error
2018-03-13 22:07:40 -07:00
Andrea Orru
7ac44037db
Compiler error when taking @offsetOf of void struct member
...
closes #739
2018-03-13 21:20:06 -07:00
Andrea Orru
2a6ad23b52
Merge branch 'master' of https://github.com/zig-lang/zig
2018-03-13 16:16:22 -07:00
Andrew Kelley
7f7823e23c
fix casting a function to a pointer causing compiler crash
...
closes #777
2018-03-13 19:15:20 -04:00
Andrea Orru
2cdd50c9b2
Panic instead of segfault when returning generic type from functions
...
closes #829
2018-03-13 16:14:21 -07:00
Marc Tiehuis
d6e84e325b
Add WebAssembly output workaround for LLVM 6
2018-03-13 21:53:42 +13:00
Andrew Kelley
bcce77700f
some return types disqualify comptime fn call caching
...
closes #828
2018-03-12 12:56:25 -04:00
Andrew Kelley
5834ff0cc5
don't memoize comptime fn calls that access comptime mutable state
...
closes #827
2018-03-12 08:35:41 -04:00
Andrew Kelley
1bf2810f33
fix comptime slicing not preserving comptime mutability
...
* fix comptime slice of slice not preserving mutatibility
of the comptime data
* fix comptime slice of pointer not preserving mutability
of the comptime data
closes #826
2018-03-12 01:21:10 -04:00
Andrew Kelley
49c3922037
fix incorrect setEvalBranchQuota compile error
...
closes #688
2018-03-12 00:08:52 -04:00
Andrea Orru
d0621391bc
zen-specific: main -> _start
2018-03-10 16:59:28 -08:00
Andrew Kelley
84e952c230
fix await multithreaded data race
...
coro return was reading from a value that coro await was
writing to. that wasn't how it was designed to work, it
was an implementation mistake.
this commit also has some work-in-progress code for fixing
error return traces across suspend points.
2018-03-10 01:38:40 -05:00
Andrew Kelley
60b2031831
improvements to stack traces
...
* @panic generates an error return trace
* printing an error return trace no longer interferes with
normal stack traces.
* instead of ignore_frame_count, we look at the return address
when you call panic, and that's the first stack trace function
makes stack traces much cleaner - the error return trace
flows gracefully into the stack trace
2018-03-10 01:38:40 -05:00
Andrew Kelley
6db9be8900
don't memoize comptime functions if they can mutate state via parameters
...
closes #639
2018-03-09 14:20:44 -05:00
Andrew Kelley
aaf2230ae8
fix partial inlining of binary math operator using old value
...
the code was abusing the internal IR API. fixed now.
closes #699
2018-03-08 17:15:55 -05:00
Andrew Kelley
028ec0f2c3
enums with 1 field and explicit tag type still get the tag type
...
closes #820
2018-03-08 15:22:42 -05:00
Andrew Kelley
aa9902b586
translate-c: add missing case labels
2018-03-08 11:47:07 -05:00
Andrew Kelley
b57cb04afc
Merge remote-tracking branch 'origin/master' into llvm6
2018-03-08 10:59:24 -05:00
Jimmi Holst Christensen
2e010c60ae
Translate C now correctly converts ints, floats, ptrs and enums to bools
...
* Boolean "and" and "or" should also work with these types.
* This new method also simplifies to output code.
2018-03-08 15:34:00 +01:00
Jimmi Holst Christensen
b2887620f3
Translate C will now handle ignored return values
2018-03-08 13:15:30 +01:00
Jimmi Holst Christensen
689e241ff8
Merge branch 'master' of github.com:zig-lang/zig
2018-03-08 10:29:43 +01:00
Jimmi Holst Christensen
51b2f1b80b
Translate C can now translate switch statements again
2018-03-08 10:29:29 +01:00
Andrew Kelley
790aaeacae
add compile error for using @tagName on extern union
...
closes #742
2018-03-07 14:35:48 -05:00
Jimmi Holst Christensen
bb80daf509
Ast Render no longer outputs erroneous semicolon
...
closes #813
2018-03-07 10:39:32 +01:00
Andrew Kelley
d96dd5bc32
fix missing compile error for returning error from void async function
...
closes #799
2018-03-06 21:44:27 -05:00
Andrew Kelley
6b5cfd9d99
turn assertion into compile error for using var as return type
...
closes #758
2018-03-06 20:41:49 -05:00
Andrew Kelley
eff3530dfa
var is no longer a pseudo-type, it is syntax
...
closes #779
2018-03-06 18:31:31 -05:00
Andrew Kelley
44ae891bd7
fix assertion when taking slice of zero-length array
...
closes #788
2018-03-06 17:19:45 -05:00
Andrew Kelley
cc0f660ad2
unless hf is specified in target environ, assume soft floating point
...
closes #804
2018-03-06 16:57:41 -05:00
Andrew Kelley
07e47c058c
ptrCast builtin now gives an error for removing const qualifier
...
closes #384
2018-03-06 16:37:03 -05:00
Jimmi Holst Christensen
1d378d8f26
Removed fixed todo
2018-03-06 12:33:09 +01:00
Jimmi Holst Christensen
5ab25798e3
We now also use trans_to_bool_expr on bool not
2018-03-06 12:04:14 +01:00
Jimmi Holst Christensen
bf47cf418a
expr to bool is now it's own function.
...
* Now while and for loops work on ints and floats, like if statements
* This fixes the loop problem in #813
2018-03-06 11:57:51 +01:00
Jimmi Holst Christensen
61ecc48671
Added appropriate TODO comment to UO_LNot
2018-03-06 11:15:13 +01:00
Jimmi Holst Christensen
ed1386eeff
Simple translation of UO_LNot
2018-03-06 11:13:10 +01:00
Andrew Kelley
1c244d34b3
Merge branch 'master' into llvm6
2018-03-03 16:30:59 -05:00
Andrew Kelley
101b7745c4
add optnone noinline to async functions
...
this works around LLVM optimization assertion failures.
https://bugs.llvm.org/show_bug.cgi?id=36578
closes #800
2018-03-02 13:40:03 -05:00
Andrew Kelley
a217c764db
Merge remote-tracking branch 'origin/master' into llvm6
2018-03-01 22:25:15 -05:00
Andrew Kelley
de5c0c9f40
Merge remote-tracking branch 'origin/master' into async
2018-03-01 20:47:35 -05:00
Andrew Kelley
8a0e1d4c02
await keyword works
2018-03-01 15:46:35 -05:00
Andrew Kelley
a7c87ae1e4
fix not casting result of llvm.coro.promise
2018-03-01 10:23:47 -05:00
Andrew Kelley
253d988e7c
implementation of await
...
but it has bugs
2018-03-01 03:28:13 -05:00
Andrew Kelley
8429d4ceac
implement coroutine resume
2018-02-28 22:18:48 -05:00
Andrew Kelley
c622766156
async function fulfills promise atomically
2018-02-28 21:48:20 -05:00
Andrew Kelley
807a5e94e9
add atomicrmw builtin function
2018-02-28 21:19:51 -05:00
Andrew Kelley
58dc2b719c
better coroutine codegen, now passing first coro test
...
we have to use the Suspend block with llvm.coro.end to
return from the coro
2018-02-28 18:22:43 -05:00
Andrew Kelley
ad2a29ccf2
break the data dependencies that llvm coro transforms cant handle
...
my simple coro test program builds now
see #727
2018-02-28 16:47:13 -05:00
Andrew Kelley
026aebf2ea
another workaround for llvm coroutines
...
this one doesn't work either
2018-02-28 04:01:22 -05:00
Andrew Kelley
556f22a751
different way of fixing previous commit
...
get_fn_type doesn't need the complete parameter type, it
can just ensure zero bits known.
2018-02-28 00:28:26 -05:00
Andrew Kelley
1b8a241f6f
Merge branch 'fix795' of https://github.com/bnoordhuis/zig into bnoordhuis-fix795
2018-02-28 00:22:53 -05:00
Ben Noordhuis
90598b4631
fix assert on self-referencing function ptr field
...
The construct `struct S { f: fn(S) void }` is not legal because structs
are not copyable but it should not result in an ICE.
Fixes #795 .
2018-02-28 00:56:00 +01:00
Andrew Kelley
d243453862
Revert "llvm coroutine workaround: sret functions return sret pointer"
...
This reverts commit 132e604aa3
.
this workaround didn't work either
2018-02-27 17:47:18 -05:00
Andrew Kelley
138d6f9093
revert workaround for alloc and free as coro params
...
reverts 4ac6c4d6bf
the workaround didn't work
2018-02-27 17:46:13 -05:00
Andrew Kelley
132e604aa3
llvm coroutine workaround: sret functions return sret pointer
2018-02-27 17:12:53 -05:00
Andrew Kelley
6e2a67724c
Revert "another llvm workaround for getelementptr"
...
This reverts commit c2f5634fb3
.
It doesn't work. With this, LLVM moves the allocate fn call
to after llvm.coro.begin
2018-02-27 14:58:02 -05:00
Andrew Kelley
c2f5634fb3
another llvm workaround for getelementptr
2018-02-27 14:57:49 -05:00
Andrew Kelley
4e43bde924
workaround for llvm: delete coroutine allocation elision
...
maybe this can be reverted, but it seems to be related
to llvm's coro transformations crashing.
See #727
2018-02-26 21:31:00 -05:00
Andrew Kelley
4ac6c4d6bf
workaround llvm coro transformations
...
by making alloc and free functions be parameters to async
functions instead of using getelementptr in the DynAlloc block
See #727
2018-02-26 21:14:15 -05:00
Ben Noordhuis
9aa65c0e8e
allow implicit cast from &const to ?&const &const
...
Allow implicit casts from n-th degree const pointers to nullable const
pointers of degree n+1. That is:
fn f() void {
const s = S {};
const p = &s;
g(p); // Works.
g(&p); // So does this.
}
fn g(_: ?&const &const S) void { // Nullable 2nd degree const ptr.
}
Fixes #731 some more.
2018-02-26 19:56:26 +01:00
Andrew Kelley
3e86fb500d
implement coroutine suspend
...
see #727
2018-02-26 02:46:21 -05:00
Andrew Kelley
c60496a297
parse await and suspend syntax
...
See #727
2018-02-26 00:04:11 -05:00
Andrew Kelley
6fef7406c8
move coroutine init code to after coro.begin
2018-02-25 20:29:14 -05:00
Andrew Kelley
6b436146a8
fix invalid memory write in coroutines implementation
2018-02-25 20:28:44 -05:00
Andrew Kelley
6cbea99ed6
async functions are allowed to accept zig types
2018-02-25 20:27:53 -05:00
Andrew Kelley
b018c64ca2
add coroutine LLVM passes
2018-02-25 18:09:39 -05:00
Andrew Kelley
fe354ebb5c
coroutines: fix llvm error of instruction not dominating uses
...
See #727
2018-02-25 17:57:05 -05:00
Andrew Kelley
704a8acb59
fix handle_is_ptr for promise type
2018-02-25 17:34:18 -05:00
Andrew Kelley
83f8906449
codegen for coro_resume instruction
...
See #727
2018-02-25 17:34:05 -05:00
Andrew Kelley
4eac75914b
codegen for coro_free instruction
...
See #727
2018-02-25 16:46:01 -05:00
Andrew Kelley
d2d2ba10e9
codegen for coro_end instruction
...
See #727
2018-02-25 16:40:00 -05:00
Andrew Kelley
0cf327eb17
codegen for coro_suspend instruction
...
See #727
2018-02-25 16:29:07 -05:00
Andrew Kelley
d0f2eca106
codegen for coro_begin instruction
...
See #727
2018-02-25 16:22:19 -05:00
Andrew Kelley
79f1ff574b
codegen for coro_alloc_fail instruction
...
See #727
2018-02-25 16:15:14 -05:00
Andrew Kelley
bced3fb64c
codegen for get_implicit_allocator instruction
...
See #727
2018-02-25 16:05:10 -05:00
Andrew Kelley
93cbd4eeb9
codegen for coro_alloc and coro_size instructions
...
See #727
2018-02-25 15:20:31 -05:00
Andrew Kelley
9f6c5a20de
codegen for coro_id instruction
...
See #727
2018-02-25 15:10:29 -05:00
Andrew Kelley
7567448b91
codegen for cancel
...
See #727
2018-02-25 14:47:58 -05:00
Andrew Kelley
05bf666eb6
codegen for calling an async function
...
See #727
2018-02-25 02:47:31 -05:00
Andrew Kelley
9cfd7dea19
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-23 12:56:41 -05:00
Andrew Kelley
40dbcd09da
fix type_is_codegen_pointer being used incorrectly
...
The names of these functions should probably change, but at least
the semantics are correct now:
* type_is_codegen_pointer - the type is either a fn, ptr, or promise
* get_codegen_ptr_type -
- ?&T and &T returns &T
- ?promise and promise returns promise
- ?fn()void and fn()void returns fn()void
- otherwise returns nullptr
2018-02-23 12:49:21 -05:00
Ben Noordhuis
f11b948019
allow implicit cast from S
to ?&const S
...
Allow implicit casts from container types to nullable const pointers to
said container type. That is:
fn f() void {
const s = S {};
g(s); // Works.
g(&s); // So does this.
}
fn g(_: ?&const S) void { // Nullable const pointer.
}
Fixes #731 .
2018-02-23 15:55:57 +01:00
Andrew Kelley
99985ad6fc
implement Zig IR for async functions
...
See #727
2018-02-23 03:03:06 -05:00
Ben Noordhuis
0845cbe277
name types inside functions after variable
...
Before this commit:
fn f() []const u8 {
const S = struct {};
return @typeName(S); // "f()", unexpected.
}
And now:
fn f() []const u8 {
const S = struct {};
return @typeName(S); // "S", expected.
}
Fixes #675 .
2018-02-22 19:54:02 +01:00
Andrew Kelley
ca1b77b2d5
IR analysis for coro.begin
...
See #727
2018-02-22 11:54:27 -05:00
Andrew Kelley
88e7b9bf80
ir analysis for coro_id and coro_alloc
...
See #727
2018-02-22 09:36:58 -05:00
Andrew Kelley
37c07d4f3f
coroutines: analyze get_implicit_allocator instruction
...
see #727
2018-02-22 09:30:55 -05:00
Andrew Kelley
b261da0672
add coroutine startup IR to async functions
...
See #727
2018-02-21 23:28:35 -05:00
Andrew Kelley
236bbe1183
implement IR analysis for async function calls
...
See #727
2018-02-21 00:52:20 -05:00
Andrew Kelley
65a51b401c
add promise type
...
See #727
2018-02-20 16:42:14 -05:00
Andrew Kelley
a06f3c74fd
parse async fn definitions
...
See #727
2018-02-20 00:31:52 -05:00
Andrew Kelley
3d58d7232a
parse async fn calls and cancel expressions
2018-02-20 00:05:38 -05:00
Andrew Kelley
af10b0fec2
add async, await, suspend, resume, cancel keywords
...
See #727
2018-02-19 23:19:59 -05:00
Andrew Kelley
72ca2b214d
ability to slice an undefined pointer at compile time if the len is 0
2018-02-16 15:22:29 -05:00
Andrew Kelley
cbbd6cfa1e
add an assert to catch #777
...
asserting is better than segfaulting
2018-02-15 23:39:35 -05:00
Andrew Kelley
cc26148ba7
fix compiler crash when struct contains...
...
ptr to another struct which contains original struct
2018-02-15 12:14:20 -05:00
Andrew Kelley
1c1c0691cc
fix crash when doing comptime float rem comptime int
...
closes #776
2018-02-14 23:12:51 -05:00
Andrew Kelley
ca597e2bfb
std.zig.parser understands try. zig fmt respects a double line break.
2018-02-14 23:00:53 -05:00
Andrew Kelley
9fa35adbd4
fix sometimes not type checking function parameters
...
closes #774
regression introduced in cfb2c67692
2018-02-14 16:24:43 -05:00
Andrew Kelley
e7ab2bc553
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-13 11:53:20 -05:00
Andrew Kelley
02f70cda8a
zig_llvm.cpp uses new(std::nothrow)
...
This fixes a mismatched malloc/delete because
we were allocating with malloc and then llvm was
freeing with delete.
2018-02-13 10:54:46 -05:00
Andrew Kelley
ef6260b3a7
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-11 23:49:20 -05:00
Andrew Kelley
f2d601661d
fix exported variable not named in the object file
...
closes #771
2018-02-11 16:46:02 -05:00
Andrew Kelley
e7bf8f3f04
fix compiler crash switching on global error with no else
2018-02-09 13:49:58 -05:00
Andrew Kelley
3919afcad2
fix crash with error peer type resolution
...
closes #765
2018-02-09 11:16:04 -05:00
Andrew Kelley
32c988a2d7
fix build runner on windows
2018-02-09 00:24:23 -05:00
Andrew Kelley
ee982ae162
syntax: parse ?error!i32
as ?(error!i32)
2018-02-08 22:30:08 -05:00
Andrew Kelley
0efe441dfd
if statements support comptime known test error, runtime payload
2018-02-08 22:18:13 -05:00