Commit Graph

1318 Commits

Author SHA1 Message Date
Andrew Kelley 8ecd6c4d8c add compiler note for bad int coercion
closes #3724
2019-11-26 19:50:52 -05:00
Michael Dusan d20df7df09 stage1: fix bad intern counting 2019-11-25 20:41:17 -05:00
Michael Dusan 6b7e1085e3 Merge pull request #3774 from mikdusan/stage1-intern-housekeeping
stage1: consolodate interning
2019-11-25 19:19:32 -05:00
Andrew Kelley 4261fa3c49 move logic to the appropriate layers; add new compile error 2019-11-25 18:46:17 -05:00
Michael Dusan 6c89f96df1 stage1: consolodate interning
- merge const_void_val → intern.x_void
- move const_zero_byte → intern.zero_byte
- wrap intern access
2019-11-25 17:18:56 -05:00
Michael Dusan a647a88dfc const interning for 1-possible-value types 2019-11-25 15:04:49 -05:00
Michael Dusan 8f3e972da6 unembed ZigValue from IrInstruction 2019-11-25 15:04:39 -05:00
Michael Dusan acd95546b7 rename ConstExprValue → ZigValue 2019-11-25 15:04:29 -05:00
Andrew Kelley 34b1ebefaa Merge remote-tracking branch 'origin/master' into null-terminated-pointers 2019-11-24 20:28:46 -05:00
Andrew Kelley b9f88c3552 fix compile errors for array sentinels mismatching 2019-11-24 20:25:14 -05:00
Andrew Kelley 7eb5acdc80 fix casting [N:x]T to [N]T memcpying too many bytes 2019-11-24 18:57:07 -05:00
Andrew Kelley 217a5090ff fix compile error regressions 2019-11-24 18:10:31 -05:00
Andrew Kelley c96d565166 add compile error for incompatible pointer sentinels 2019-11-24 17:02:56 -05:00
Andrew Kelley 09ec720dab fix comptime @ptrCast of pointers to arrays 2019-11-24 16:25:26 -05:00
Andrew Kelley 44b1dc6db8 add type coercion: [:x]T to [*:x]T 2019-11-24 15:17:55 -05:00
Andrew Kelley 4c7b52503b all tests passing 2019-11-24 02:14:21 -05:00
Andrew Kelley f25182f46d structs can have fields with type var
behavior tests passing now
2019-11-23 17:51:37 -05:00
Andrew Kelley 7597735bad update the stage1 implementation to the new proposal
See #3731
2019-11-23 04:45:35 -05:00
Vexu 4d9318cee0 fix missing implicit cast in return instruction 2019-11-21 23:21:51 -05:00
Andrew Kelley fd6020c4e2 update tests, better error messages, update self-hosted tokenizer 2019-11-21 20:43:41 -05:00
Andrew Kelley cf2fe2536e better error message when null termination does not match 2019-11-21 20:43:41 -05:00
Andrew Kelley 47f06be369 string literals are now null terminated
this also deletes C string literals from the language, and then makes
the std lib changes and compiler changes necessary to get the behavior
tests and std lib tests passing again.
2019-11-21 20:43:41 -05:00
Andrew Kelley 21f344b3b9 add null terminated pointers and arrays to self-hosted
as well as `@typeInfo` and `@Type`
2019-11-21 20:43:41 -05:00
Andrew Kelley 1aa978f32e implement null terminated pointers 2019-11-21 20:43:41 -05:00
daurnimator 4e28d7a5f7 fix bug on empty error union 2019-11-17 22:29:49 +00:00
LemonBoy 924dd674e2 Catch invalid type from peer resolution
Fixes #3703
2019-11-17 22:25:14 +00:00
Andrew Kelley d89f39d719 rework layout of struct type fields
This removes the remaining hack in the implementation of anonymous
struct literals, and they can now therefore now have greater than 16
fields/elements.
2019-11-14 03:52:39 -05:00
Andrew Kelley f2f698a888 rework comptime struct value layout, removing 1/2 hacks
in the implementation of anonymous struct literals
2019-11-14 03:52:36 -05:00
Vexu b83ce08a3b add compile error for @atomicRmw on enum not being an .Xchg 2019-11-13 18:48:31 +00:00
Andrew Kelley 8bae70454d Merge pull request #3675 from Vexu/atomic-store
Add @atomicStore builtin
2019-11-13 03:06:55 +00:00
Andrew Kelley 32b37e695a fix anonymous struct literal assigned to variable
closes #3667
2019-11-12 21:57:25 -05:00
Andrew Kelley 37318bf151 fn parameters participate in result location semantics
See #3665
2019-11-12 18:55:17 -05:00
Vexu 41914321b4 fix comptime atomicStore and add tests 2019-11-13 01:32:16 +02:00
Vexu 110ef2e528 add @atomicStore builtin 2019-11-13 00:25:44 +02:00
Andrew Kelley e32b4829f4 Merge pull request #3670 from Vexu/atomics-enum
Support atomic operations with enums
2019-11-12 17:45:29 +00:00
Andrew Kelley 710ccacfa3 fix assertion failure in ptrToInt
found by building pluto
2019-11-12 12:21:20 -05:00
Vexu 7e5b234b8b support atomic operations with enums 2019-11-12 17:13:33 +02:00
Andrew Kelley b9482fc32d implement fully anonymous list literals 2019-11-11 19:00:39 -05:00
Andrew Kelley ca2a788a24 fully anonymous struct literals 2019-11-11 17:50:41 -05:00
Andrew Kelley 1bca8e693d fix anon literal used with return result loc 2019-11-11 13:18:16 -05:00
Andrew Kelley 5b27943498 implement anon struct literal syntax
This implements stage1 parser support for anonymous struct literal
syntax (see #685), as well as semantic analysis support for anonymous
struct literals and anonymous list literals (see #208). The semantic
analysis works when there is a type coercion in the result location;
inferring the struct type based on the values in the literal is not
implemented yet. Also remaining to do is zig fmt support for this new
syntax and documentation updates.
2019-11-11 13:11:58 -05:00
LemonBoy d18b5f8b53 Fix initialization of union references
Fixes #3532
2019-11-09 12:20:34 -05:00
Andrew Kelley 3cf5c2c62b fix regressed tests and update docs to use "type coercion" 2019-11-08 15:57:25 -05:00
Andrew Kelley 3834d3dac0 passing std lib tests 2019-11-08 15:57:25 -05:00
Andrew Kelley a2acc27872 behavior tests passing 2019-11-08 15:57:25 -05:00
Andrew Kelley 8954a1bae5 more regressions fixed 2019-11-08 15:57:25 -05:00
Andrew Kelley fa34dfcce7 fix result loc of cast not finding parent 2019-11-08 15:57:24 -05:00
Andrew Kelley 2a6fbbd8fb introduce @as builtin for type coercion
This commit also hooks up type coercion (previously called implicit
casting) into the result location mechanism, and additionally hooks up
variable declarations, maintaining the property that:

    var a: T = b;

is semantically equivalent to:

    var a = @as(T, b);

See #1757
2019-11-08 15:57:24 -05:00
Andrew Kelley 6ee3cabe5c allow type coercion from *[0]T to E![]const T
This is an unambiguous, safe cast.
2019-11-06 20:44:15 -05:00
Andrew Kelley 9b4a529164 fix initialization of vector in a struct field 2019-11-05 12:36:39 -05:00