| Age | Commit message (Collapse) | Author |
|
also remove the ability to override constness when slicing
closes #334
|
|
closes #285
|
|
closes #309
|
|
closes #292.
|
|
|
|
closes #314
|
|
instead blocks have a field that encodes whether the last statement ended with
a semicolon.
|
|
closes #306
|
|
implicit semicolon rules apply recursively to the "else" clause of if and try
if (a) {} else {} // implicit semicolon
if (a) {} else if (a) {} // implicit semicolon
if (a) {} else while (a) {} // implicit semicolon
|
|
|
|
in a block
|
|
|
|
|
|
closes #292
* if, try, while, for, comptime, defer are "greedy" with {} blocks,
meaning if their bodies are blocks, then no suffix operator is allowed
after the block. The {} block gets "built into" the containing statement,
like the body of a switch statement.
* the Expression syntactic element is no longer "greedy" with {} blocks,
meaning it's possible to have suffix operators after {} blocks without
needing the {} block to be an rhs operand first.
|
|
This forbids `comptime 1 comptime 1` at top-level scope.
|
|
* Don't insert void statements all over the place. {} now stays as
{} instead of {{}}, and {;} becomes {} instead of {{};{}}.
* Ensure final statement is always the return value statement, or
the block is empty. This means {label:} becomes {label:{}}.
|
|
closes #272
|
|
* `noreturn` is the primitive type.
* `unreachable` is a control flow keyword.
* `@unreachable()` builtin function is deleted.
closes #214
|
|
closes #255
|
|
* remove setFnTest builtin
* add test "name" { ... } syntax
* remove --check-unused argument. functions are always lazy now.
|
|
|
|
|
|
it outputs a number that is unique to each instance of the asm
statement in the entire compilation.
useful when creating local labels and referring to them multiple
times in a single template that generates multiple
assembler instructions
|
|
closes #238
|
|
closes #183
|
|
See #83
|
|
if and switch are implicitly inline if the condition/target
expression is known at compile time.
instead of:
```
inline if (condition) ...
inline switch (target) ...
```
one can use:
```
if (comptime condition) ...
switch (comptime target) ...
```
|
|
* comptime expression is a block expression as it should be
* fix var args when number of args passed is 0
* implement const value equality for structs
* fix indent when rendering container decl AST
* IR: prevent duplicate generation of code when it is partially
compile-time evaluated
* implement compile time struct field pointer evaluation
* fix compile time evaluation of slicing
|
|
See #77
|
|
closes #221
|
|
See #221
|
|
closes #222
|
|
|
|
* comptime fn call
* is_comptime doesn't count as an instruction dependency
* update more std code to latest zig
|
|
|
|
|
|
|
|
|
|
* Rip out legacy code for generics
* put scope in instruction instead of AST nodes
* separate top level decl stuff from AST nodes
- remove the assumption that there is a 1:1 correspondence
between an output instruction and an AST node
- This way we won't have to clone AST nodes for generics.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* add `setFnTest`, `setFnVisible`, `setFnStaticEval`,
`setFnNoInline` builtin functions to replace previous
directive functionality
* add `coldcc` and `nakedcc` as keywords which can be used as part
of a function prototype.
* `setDebugSafety` builtin can be used to set debug safety features
at a per block scope level.
* closes #169
|
|
See #169
|