Jimmi HC
4c3f27ce1e
ir_resolve_const now checks recursivly for undef values
2018-06-29 10:21:43 +02:00
Jimmi HC
b1128b18d5
Assert that array is not ConstArraySpecialUndef in const_values_equal
2018-06-29 08:41:16 +02:00
Jimmi HC
3ec38b2494
Implement const_values_equal for array type
...
* This allows arrays to be passed by value at comptime
2018-06-28 10:34:37 +02:00
Andrew Kelley
459d72f873
fix compiler crash for invalid enum
...
closes #1079
closes #1147
2018-06-21 17:41:49 -04:00
Andrew Kelley
5f38d6e2e9
add casting docs, __extenddftf2, and __extendsftf2
2018-06-21 14:44:35 -04:00
Isaac Hier
eeda1a1396
Fix logic
2018-06-21 08:17:08 -04:00
Isaac Hier
0ab4afbf42
Fix increment operation for bigint -1
2018-06-21 08:14:26 -04:00
Ben Noordhuis
eb6a8e6a3b
fix f128 remainder division bug
...
The modulo operation computed rem(b+rem(a,b), b) which produces -1
for a=1 and b=2.
Switch to a - b * trunc(a/b) which produces the expected result, 1.
closes #1137
2018-06-20 17:37:38 -04:00
Andrew Kelley
55193cb13b
fix runtime fn ptr equality codegen
...
closes #1140
2018-06-20 06:46:53 -04:00
Andrew Kelley
7c99c30bf4
fix calling method with comptime pass-by-non-copyign-value self arg
...
closes #1124
2018-06-19 19:35:59 -04:00
Andrew Kelley
42db807f37
remove redundant implicit casting code
...
and introduce better type mismatch errors
closes #1061
2018-06-19 18:51:46 -04:00
Andrew Kelley
c7804277bf
@floatToInt now has safety-checked undefined behavior
...
when the integer part does not fit in the destination integer type
* Also fix incorrect safety triggered for integer casting an
`i32` to a `u7`. closes #1138
* adds compiler-rt function: `__floatuntidf`
2018-06-19 16:06:10 -04:00
Andrew Kelley
85422d7aea
Merge pull request #1136 from alexnask/typeinfo_improvements
...
@typeInfo now uses optional types instead of @typeOf(undefined)
2018-06-19 11:46:32 -04:00
Alexandros Naskos
1392313236
@typeInfo now uses optional types instead of @typeOf(undefined)
2018-06-19 17:45:19 +03:00
Andrew Kelley
a3ddd0826b
remove enum to/from int casting syntax; add @enumToInt/@intToEnum
...
see #1061
2018-06-19 03:50:38 -04:00
Andrew Kelley
626b73e8be
remove error to/from int casting syntax; add @errorToInt/@intToError
...
See #1061
2018-06-18 18:48:29 -04:00
Andrew Kelley
a430853a48
standard library fixes
2018-06-18 17:43:01 -04:00
Andrew Kelley
1aafbae5be
remove []u8 casting syntax. add @bytesToSlice and @sliceToBytes
...
See #1061
2018-06-18 17:25:29 -04:00
Andrew Kelley
5d705fc6e3
remove error set casting syntax. add @errSetCast
...
See #1061
2018-06-18 15:01:42 -04:00
Andrew Kelley
cd4676a233
stage1: update darwin code to workaround old libc bug
...
See #1128
2018-06-18 12:54:31 -04:00
Andrew Kelley
4ce36a6475
adjust logic for finding the path to zig executable on darwin
2018-06-18 12:18:39 -04:00
Andrew Kelley
c09c3902c4
Merge branch 'fix-1117-macos-realpath' of https://github.com/binary132/zig into binary132-fix-1117-macos-realpath
2018-06-18 12:16:47 -04:00
Andrew Kelley
8fd7cc11e1
disallow opaque as a return type of fn type syntax
...
closes #1115
2018-06-18 11:12:15 -04:00
Andrew Kelley
d49d6f0cde
fix compiler crash when using @intToFloat with float literal
...
closes #1132
2018-06-18 11:04:18 -04:00
Bodie Solomon
c7057bd25b
Fix 1117: Revise realpath scratch logic
2018-06-18 07:40:31 -04:00
Bodie Solomon
0456822892
Fix 1117: Tweak realpath logic to use out_path as scratch space
2018-06-18 07:40:31 -04:00
Bodie Solomon
e6b69151c0
Fix 1117: Use realpath in stage1 Darwin os_self_exe_path
...
Issue: https://github.com/ziglang/zig/issues/1117
The macOS stage1 Zig compiler should look in Zig's real absolute path
for the Zig stdlib, but os_self_exe_path looks in its path as returned
by _NSGetExecutablePath, which may be a symlink. This means that a
symlinked Zig cannot find the Zig stdlib.
This patch fixes the issue by resolving the _NSGetExecutablePath result
to the real path using realpath() before copying the result to the
output path.
2018-06-18 07:40:31 -04:00
Andrew Kelley
4210f1f6a0
remove bool to int syntax. add @boolToInt
...
add missing docs
See #1061
2018-06-18 03:07:16 -04:00
Andrew Kelley
92a36040b1
msp430 target: c_long is always 32 bits
...
closes #1125
2018-06-18 01:03:45 -04:00
Andrew Kelley
431fda4141
Merge pull request #1123 from ziglang/remove-number-casting-syntax
...
Remove number casting syntax
2018-06-17 14:40:07 -04:00
Andrew Kelley
e5956f23ca
add target C int type information for msp430 target
...
closes #1125
2018-06-17 12:47:27 -04:00
Andrew Kelley
7912061226
remove integer and float casting syntax
...
* add `@intCast`
* add `@floatCast`
* add `@floatToInt`
* add `@intToFloat`
See #1061
2018-06-17 02:57:07 -04:00
Andrew Kelley
472b7ef7e6
disable byval
2018-06-16 19:37:00 -04:00
Andrew Kelley
e311cd562b
don't automatically take pointer when passing by non-copying value
...
this commit does not have all tests passing
2018-06-16 19:37:00 -04:00
Andrew Kelley
59b3dc8907
allow passing by non-copying value
...
closes #733
2018-06-16 19:36:33 -04:00
Andrew Kelley
48de57d824
add basic std lib code for loading dynamic libraries
...
this is going to only work for very basic libraries;
I plan to slowly add more features over time to support more
complicated libraries
2018-06-16 17:01:23 -04:00
Alexandros Naskos
4ec09ac243
Enabled optional types of zero bit types with no LLVM DI type. ( #1110 )
...
* Zero bit optional types do not need a LLVM DI type
2018-06-14 10:57:28 -04:00
Andrew Kelley
8dd24796c4
disallow implicit casts that break rules for optionals
...
closes #1102
2018-06-13 11:04:09 -04:00
Andrew Kelley
259413251d
fix ability to call mutating methods on zero size structs
...
closes #838
2018-06-12 15:06:02 -04:00
Andrew Kelley
03c16c6c54
implement @tagName as a switch instead of table lookup
...
closes #976
closes #1080
2018-06-11 14:58:42 -04:00
Andrew Kelley
0a95b0f1ff
std.zig: update syntax for orelse keyword
2018-06-10 01:18:31 -04:00
Andrew Kelley
77678b2cbc
breaking syntax change: orelse keyword instead of ?? ( #1096 )
...
use the `zig-fmt-optional-default` branch to have zig fmt
automatically do the changes.
closes #1023
2018-06-10 01:13:51 -04:00
Andrew Kelley
ec1b6f6673
breaking syntax change: ??x to x.? ( #1095 )
...
See #1023
This also renames Nullable/Maybe to Optional
2018-06-09 23:42:14 -04:00
Ben Noordhuis
d464b25322
support --target-arch wasm32 ( #1094 )
...
Add wasm32 support to the build-obj, build-exe and build-lib commands
of the stage 1 compiler. Wasm64 should work transparently once it's
supported in upstream LLVM.
To export a function:
// lib.zig - for exposition, not necessary for this example
pub use @import("add.zig");
// add.zig
export fn add(a: i32, b: i32) i32 {
return a + b;
}
To import a function:
// cube.zig
extern fn square(x: i32) i32;
export fn cube(x: i32) i32 {
return x * square(x);
}
2018-06-09 22:39:22 -04:00
Andrew Kelley
9046b5eac0
fix assertion failure when debug printing comptime values
2018-06-09 11:41:59 -04:00
Andrew Kelley
6edd81109d
nullable pointers follow const-casting rules
...
any *T -> ?*T cast is allowed implicitly, even
when it occurs deep inside the type, and the cast
is a no-op at runtime.
in order to add this I had to make the comptime value
representation of nullable pointers the same as the
comptime value representation of normal pointers,
so that we don't have to do any recursive transformation
of values when doing this kind of cast.
2018-06-09 00:26:26 -04:00
Andrew Kelley
39fa313ad8
disable some implicit casts for unknown length pointers
...
closes #770
2018-06-08 14:57:16 -04:00
Jimmi HC
bf3d1c1aab
Allow access of array.len through a pointer
2018-06-08 09:21:31 +02:00
Andrew Kelley
f0b6dac1f2
add implicit casts from *[N]T
...
* to `[]T`
* to `[*]T`
See #770
2018-06-07 22:41:58 -04:00
Andrew Kelley
b65203f573
remove @canImplicitCast builtin
...
nobody will miss it
2018-06-07 19:50:25 -04:00