Andrew Kelley
3d637e6dd2
AstGen: fix @export
...
Make it properly use `std.builtin.ExportOptions`.
2021-04-22 16:07:58 -07:00
Andrew Kelley
130ad08001
AstGen: implement function prototypes
2021-04-22 14:24:22 -07:00
Andrew Kelley
389020009a
AstGen: implement alignment on locals
2021-04-21 22:43:57 -07:00
Andrew Kelley
ea00ddfe37
AstGen: implement comptime locals
2021-04-21 20:42:49 -07:00
Andrew Kelley
8ee0cbe50a
AstGen: fix switch result location elision
...
It was eliding wrong instructions for nested break from labeled block
2021-04-21 19:49:58 -07:00
Andrew Kelley
570ed7b3bf
AstGen: implement @bitCast for other result location types
2021-04-21 19:11:36 -07:00
Andrew Kelley
4cfea2fbd5
AstGen: fix @floatCast having wrong arity
...
It's not time for #5909 yet.
2021-04-21 19:10:54 -07:00
Andrew Kelley
d10ec6e70d
AstGen: slightly better eager-allocating heuristic
...
Some early ensureCapacity calls to avoid needless reallocations.
2021-04-20 22:16:45 -07:00
Andrew Kelley
a1ac2b95bb
AstGen: implement union decls
2021-04-20 21:48:18 -07:00
Andrew Kelley
971f3d95f9
AstGen: implement size zero inferred length arrays
2021-04-20 18:32:43 -07:00
Andrew Kelley
c69a95f64b
AstGen: fix store_to_block_ptr elision for switch statements
...
to make sure it matches the expected block
2021-04-20 17:58:04 -07:00
Andrew Kelley
a008fb0a71
std.fs: delete unused label
...
stage2 starting to catch problems with the standard library :)
2021-04-20 17:57:35 -07:00
Andrew Kelley
e9477048e5
AstGen: implement for loop payload
2021-04-20 17:52:35 -07:00
Andrew Kelley
30c9808391
AstGen: implement anytype parameters
2021-04-20 17:38:06 -07:00
Andrew Kelley
a62db38d90
AstGen: implement defer for break
2021-04-20 17:04:11 -07:00
Andrew Kelley
458c4b6fc6
AstGen: implement defer for continue
2021-04-20 17:04:11 -07:00
Andrew Kelley
a59bcae59f
AstGen: basic defer implementation
2021-04-20 17:04:11 -07:00
jacob gw
b4aec0e31d
stage2: make std.fmt.parseInt ignore _
2021-04-20 17:08:05 -04:00
jacob gw
6b944492b5
stage2: fix compile error in codegen
2021-04-20 17:08:05 -04:00
Andrew Kelley
b4baa9eda2
AstGen: try fixups
...
Primarily this required fixing `setCondBrPayloadElideBlockStorePtr` to
not assume there would always be two `store_to_block_ptr` instructions
in each of the condbr prongs.
2021-04-20 11:16:50 -07:00
jacob gw
ee3c1c763c
stage2: astgen try
2021-04-20 13:16:08 -04:00
Andrew Kelley
e315120b79
AstGen: implement array initialization expressions
2021-04-19 23:23:24 -07:00
Andrew Kelley
693dbeeef2
stage2: make @alignCast accept 2 parameters
...
It is not yet time to implement #5909 .
2021-04-19 18:46:45 -07:00
Andrew Kelley
4630e3891c
AstGen: implement inline asm output
2021-04-19 18:44:59 -07:00
Andrew Kelley
a136c093bf
zig astgen: print instruction counts and byte sizes
2021-04-19 16:23:05 -07:00
Andrew Kelley
7f931a7522
AstGen: implement error set decls
2021-04-19 16:03:46 -07:00
Andrew Kelley
2083208f19
AstGen: implement functions with inferred error sets
...
This commit also reclaims +2 ZIR instruction tags by moving the
following to `extended`:
* func_var_args
* func_extra
* func_extra_var_args
The following ZIR instruction tag is added:
* func_inferred
2021-04-19 15:03:41 -07:00
Andrew Kelley
22015c1b3b
std.MultiArrayList: ensureUnusedCapacity/ensureTotalCapacity
...
Same as c8ae581fef6506a8234cdba1355ba7f0f449031a, but for
MultiArrayList.
2021-04-19 15:02:37 -07:00
Andrew Kelley
27d4bea9a4
AstGen: implement if optional, if error union
2021-04-19 12:25:16 -07:00
Andrew Kelley
3dadccec45
AstGen: implement while optional and while error union
2021-04-19 12:02:11 -07:00
Andrew Kelley
3f60481be4
AstGen: implement the remaining struct init ResultLoc forms
2021-04-19 11:09:00 -07:00
Andrew Kelley
ae495de54d
AstGen: implement all the builtin functions
2021-04-18 22:38:41 -07:00
Andrew Kelley
5a3045b5de
AstGen: implement overflow arithmetic builtins
2021-04-17 13:00:10 -07:00
Andrew Kelley
8cf0ef2779
AstGen: implement simple enums and decls for enums
2021-04-16 22:21:26 -07:00
Andrew Kelley
0409d433ba
AstGen: fix compile error using wrong node/token function
2021-04-16 19:49:19 -07:00
Andrew Kelley
e13fc6b119
stage2: make @import relative to the current file
...
previously, it was incorrectly relative to the package directory
2021-04-16 19:45:58 -07:00
Andrew Kelley
415ef1be51
AstGen: fix function decl astgen
...
it was using the wrong scope and other mistakes too
2021-04-16 19:45:24 -07:00
Andrew Kelley
dd5a1b1106
build.zig: add a way to skip installing lib/ files
2021-04-16 18:58:27 -07:00
Andrew Kelley
9375ad0d3b
AstGen: implement global var decls
...
And fix bug with using `ensureCapacity` when I wanted
`ensureUnusedCapacity`.
2021-04-16 17:57:51 -07:00
Andrew Kelley
c8ae581fef
std: deprecate ensureCapacity, add two other capacity functions
...
I've run into this footgun enough times, nearly every time I want
`ensureUnusedCapacity`, not `ensureCapacity`. This commit deprecates
`ensureCapacity` in favor of `ensureTotalCapacity` and introduces
`ensureUnusedCapacity`.
2021-04-16 17:56:30 -07:00
Andrew Kelley
5ff45b3f44
stage2: use import list from ZIR to queue up more AstGen tasks
2021-04-16 17:28:28 -07:00
Andrew Kelley
a271f12a14
AstGen: store list of imports
2021-04-16 16:20:29 -07:00
Andrew Kelley
edd75d03e3
ZIR: rename decl_val and decl_ref to remove redundant suffix
2021-04-16 15:52:26 -07:00
Andrew Kelley
adc2aed587
AstGen: require @import operand to be string literal
...
See #2206
2021-04-16 15:50:28 -07:00
Andrew Kelley
333a577d73
AstGen: put decls into blocks to be evaluated independently
2021-04-16 15:34:09 -07:00
Andrew Kelley
01b4bf34ea
stage2: AstGen improvements
...
* AstGen: represent compile errors in ZIR rather than returning
`error.AnalysisFail`.
* ZIR: remove decl_ref and decl_val instructions. These are replaced by
`decl_ref_named` and `decl_val_named`, respectively, which will
probably get renamed in the future to the instructions that were just
deleted.
* AstGen: implement `@This()`, `@fence()`, `@returnAddress()`, and
`@src()`.
* AstGen: struct_decl improved to support fields_len=0 but have decls.
* AstGen: fix missing null bytes after compile error messages.
* SrcLoc: no longer depend on `Decl`. Instead have an explicit field
`parent_decl_node` which is an absolute AST Node index.
* Module: `failed_files` table can have null value, in which case the
key, which is a `*Scope.File`, will have ZIR errors in it.
* ZIR: implement text rendering of struct decls.
* CLI: introduce debug_usage and `zig astgen` command which is enabled
when the compiler is built in debug mode.
2021-04-16 14:48:10 -07:00
Andrew Kelley
cf57e8223f
AstGen: implement comptimeDecl, usingnamespaceDecl, testDecl
2021-04-15 20:55:54 -07:00
Andrew Kelley
8387307807
AstGen: implement global variable decls
2021-04-15 20:34:21 -07:00
Andrew Kelley
7818586a2b
fix new references to std.builtin that should have been std.Target
2021-04-15 19:14:54 -07:00
Andrew Kelley
f37451a63a
stage2: fix zir.zig => Zir.zig in CMakeLists.txt
2021-04-15 19:12:05 -07:00