Commit Graph

2307 Commits

Author SHA1 Message Date
Andrew Kelley
9cfd7dea19 Merge remote-tracking branch 'origin/master' into llvm6 2018-02-23 12:56:41 -05:00
Andrew Kelley
78bc62fd34 Revert "workaround on windows for llvm6 missing advapi32.lib in llvm-config"
This reverts commit eaac218d59.

This is fixed now in llvm6 rc3
2018-02-23 12:55:58 -05:00
Andrew Kelley
b66547e98c
Merge pull request #783 from bnoordhuis/fix675
name types inside functions after variable
2018-02-22 14:26:45 -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
884b5fb4cf Merge branch 'bnoordhuis-macho' 2018-02-21 02:00:52 -05:00
Andrew Kelley
623466762e clean up mach-o stack trace code 2018-02-21 02:00:33 -05:00
Ben Noordhuis
2b35615ffb fix memory leak in std.debug.openSelfDebugInfo() 2018-02-19 23:11:11 +01:00
Ben Noordhuis
ab48934e9c add support for stack traces on macosx
Add basic address->symbol resolution support.  Uses symtab data from the
MachO image, not external dSYM data; that's left as a future exercise.

The net effect is that we can now map addresses to function names but
not much more.  File names and line number data will have to wait until
a future pull request.

Partially fixes #434.
2018-02-19 23:11:11 +01:00
Andrew Kelley
bde15cf080 improve std lib linux epoll API 2018-02-17 17:53:07 -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
5f5880979e zig fmt supports simple line comments 2018-02-15 12:30:29 -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
629f134d38 std.zig.parser understands inferred return type and error inference 2018-02-14 15:50:40 -05:00
Andrew Kelley
e8d81c5acf fix build broken by previous commit 2018-02-14 13:55:06 -05:00
Andrew Kelley
d790670f4c self hosted parser: support string literals 2018-02-14 13:43:05 -05:00
Andrew Kelley
1a53c648ed self hosted parser supports builtin fn call with no args 2018-02-14 09:45:10 -05:00
Andrew Kelley
e7ab2bc553 Merge remote-tracking branch 'origin/master' into llvm6 2018-02-13 11:53:20 -05:00
Andrew Kelley
c721354b73 correct doc comment in self hosted parser 2018-02-13 11:17:26 -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
2dcff95bd2 self hosted: add tokenizer test fix eof handling 2018-02-13 10:28:55 -05:00
Andrew Kelley
dfbb8254ca fix self hosted tokenizer handling of EOF 2018-02-12 21:26:15 -05:00
Andrew Kelley
7903a758a4 Merge remote-tracking branch 'origin/master' into llvm6 2018-02-12 17:00:02 -05:00
Andrew Kelley
b4e44c4e80 self hosted parser tests every combination of memory allocation failure 2018-02-12 13:31:50 -05:00
Andrew Kelley
eaac218d59 workaround on windows for llvm6 missing advapi32.lib in llvm-config 2018-02-12 11:05:28 -05:00
Andrew Kelley
491d818f17 Merge remote-tracking branch 'origin/master' into llvm6 2018-02-12 10:48:02 -05:00
Andrew Kelley
ec0846a00f std.heap.ArenaAllocator: fix incorrectly activating safety check 2018-02-12 03:21:18 -05:00
Andrew Kelley
227ead54be back to malloc instead of aligned_alloc for c_allocator
it seems that a 7 years old standard is still too new for the
libc variants that are ubiquitous

(tests failing on macos for not providing C11 ABI)
2018-02-12 03:15:12 -05:00
Andrew Kelley
4a4ea92cf3 remove std.heap.IncrementingAllocator
Use std.heap.FixedBufferAllocator combined with
std.heap.DirectAllocator instead.

std.mem.FixedBufferAllocator is moved to std.heap.FixedBufferAllocator
2018-02-12 02:44:31 -05:00
Andrew Kelley
445b03384a introduce std.heap.ArenaAllocator and std.heap.DirectAllocator
* DirectAllocator does the underlying syscall for every allocation.
 * ArenaAllocator takes another allocator as an argument and
   allocates bytes up front, falling back to DirectAllocator with
   increasingly large allocation sizes, to avoid calling it too often.
   Then the entire arena can be freed at once.

The self hosted parser is updated to take advantage of ArenaAllocator
for the AST that it returns. This significantly reduces the complexity
of cleanup code.

docgen and build runner are updated to use the combination of
ArenaAllocator and DirectAllocator instead of IncrementingAllocator,
which is now deprecated in favor of FixedBufferAllocator combined
with DirectAllocator.

The C allocator calls aligned_alloc instead of malloc, in order to
respect the alignment parameter.

Added asserts in Allocator to ensure that implementors of the
interface return slices of the correct size.

Fixed a bug in Allocator when you call realloc to grow the allocation.
2018-02-12 02:14:44 -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
e743b30bbf std: refactor posixOpen to be friendlier to error return traces 2018-02-11 05:26:51 -05:00
Andrew Kelley
46aa416c48 std.os and std.io API update
* move std.io.File to std.os.File
 * add `zig fmt` to self hosted compiler
 * introduce std.io.BufferedAtomicFile API
 * introduce std.os.AtomicFile API
 * add `std.os.default_file_mode`
 * change FileMode on posix from being a usize to a u32
 * add std.os.File.mode to return mode of an open file
 * std.os.copyFile copies the mode from the source file instead of
   using the default file mode for the dest file
 * move `std.os.line_sep` to `std.cstr.line_sep`
2018-02-10 21:02:24 -05:00
Andrew Kelley
8c31eaf2a8 std zig tokenizer: don't require 3 newlines at the end of the source 2018-02-10 14:52:39 -05:00
Andrew Kelley
a2bd9f8912 std lib: modify allocator idiom
Before we accepted a nullable allocator for some stuff like
opening files. Now we require an allocator.

Use the mem.FixedBufferAllocator pattern if a bound on the amount
to allocate is known.

This also establishes the pattern that usually an allocator is the
first argument to a function (possibly after "self").

fix docs for std.cstr.addNullByte

self hosted compiler:
 * only build docs when explicitly asked to
 * clean up main
 * stub out zig fmt
2018-02-09 18:27:50 -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
1fb308ceee self hosted compiler: move tokenization and parsing to std lib 2018-02-09 13:08:02 -05:00
Andrew Kelley
3919afcad2 fix crash with error peer type resolution
closes #765
2018-02-09 11:16:04 -05:00
Andrew Kelley
2c697e50db appveyor: don't try to build for mingw
pacman is giving me:
:: msys2-runtime and catgets are in conflict.
Remove catgets? [y/N] error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
2018-02-09 01:15:17 -05:00
Andrew Kelley
5911962842
Merge pull request #759 from zig-lang/error-sets
Error Sets
2018-02-09 00:47:57 -05:00
Andrew Kelley
8e554561df appveyor: answer Yes to all pacman questions 2018-02-09 00:47:13 -05:00
Andrew Kelley
32c988a2d7 fix build runner on windows 2018-02-09 00:24:23 -05:00
Andrew Kelley
916d24cd21 add compile error tests for error sets 2018-02-08 23:44:21 -05:00
Andrew Kelley
4b16874f04 add test for comptime err to int with only 1 member of set 2018-02-08 22:44:15 -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