aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
AgeCommit message (Collapse)Author
2017-07-08better bigint/bigfloat implementationAndrew Kelley
2017-06-17allow trailing commasscurest
closes #392
2017-06-14progress toward windows hello world workingAndrew Kelley
2017-05-19change slicing syntax from ... to ..Andrew Kelley
See #359
2017-05-09inline function call with builtin function instead...Andrew Kelley
...of special syntax. partially reverts 41144a8566a6fbd779403f6b69424bb640c94a7f closes #306
2017-05-04implement else on loops and break can give an expressionAndrew Kelley
closes #357
2017-05-04implement while for nullables and error unionsAndrew Kelley
See #357
2017-05-03change while syntaxAndrew Kelley
Old: ``` while (condition; expression) {} ``` New: ``` while (condition) : (expression) {} ``` This is in preparation to allow nullable and error union types as the condition. See #357
2017-05-03remove test and try expressions in favor of if expressionsAndrew Kelley
See #357
2017-04-22slicing now returns correct const-nessAndrew Kelley
also remove the ability to override constness when slicing closes #334
2017-04-21update syntax for try and nullable unwrappingAndrew Kelley
closes #285
2017-04-21remove `?return` and `?defer`Andrew Kelley
closes #309
2017-04-14comptime ({}) should not get an implicit semicolonJosh Wolfe
closes #292.
2017-04-13Merge remote-tracking branch 'origin/parser'Andrew Kelley
2017-04-13typedefpocalypseAndrew Kelley
closes #314
2017-04-12block statement lists never get fake expressionsJosh Wolfe
instead blocks have a field that encodes whether the last statement ended with a semicolon.
2017-04-13ability to inline at function callsiteAndrew Kelley
closes #306
2017-04-02fix else-if parsingJosh Wolfe
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
2017-04-02defer without a block body requires a following semicolonJosh Wolfe
2017-04-02add secret void expression after defer statement if it's the last statement ↵Josh Wolfe
in a block
2017-04-02allow implicit semicolon after defer {}Josh Wolfe
2017-04-02variable declarations must be followed by semicolonJosh Wolfe
2017-04-02fix confusion in block expression parsingJosh Wolfe
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.
2017-04-02Require top-level-declaration comptime use {}Josh Wolfe
This forbids `comptime 1 comptime 1` at top-level scope.
2017-03-31clean up analysis of {blocks}Josh Wolfe
* 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:{}}.
2017-03-26replace "&&" and "||" with "and" and "or"Andrew Kelley
closes #272
2017-03-26new unreachable syntaxAndrew Kelley
* `noreturn` is the primitive type. * `unreachable` is a control flow keyword. * `@unreachable()` builtin function is deleted. closes #214
2017-03-26add comptime top level declarationAndrew Kelley
closes #255
2017-03-16introduce new test syntaxAndrew Kelley
* remove setFnTest builtin * add test "name" { ... } syntax * remove --check-unused argument. functions are always lazy now.
2017-02-07inline assembly allows clobbers with no inputAndrew Kelley
2017-02-05try expression can omit variable assignmentsAndrew Kelley
2017-02-04inline assembly supports `%=` syntaxAndrew Kelley
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
2017-02-04remove volatileStore builtin; add volatile pointersAndrew Kelley
closes #238
2017-02-03implement packed structsAndrew Kelley
closes #183
2017-02-02add try expressionAndrew Kelley
See #83
2017-02-02remove ability to mark if and switch as inlineAndrew Kelley
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) ... ```
2017-01-23various fixesAndrew Kelley
* 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
2017-01-23basic support for functions with variable length argumentsAndrew Kelley
See #77
2017-01-22introduce comptime expressionAndrew Kelley
closes #221
2017-01-22use comptime instead of inline for var and paramsAndrew Kelley
See #221
2017-01-16get rid of zeroes literalAndrew Kelley
closes #222
2017-01-13fix some stuff when llvm has assertions onAndrew Kelley
2016-12-31IR: progress toward compiling standard libraryAndrew Kelley
* comptime fn call * is_comptime doesn't count as an instruction dependency * update more std code to latest zig
2016-12-18hello.zig working with all structs anonymousAndrew Kelley
2016-12-18IR: all structs anonymousAndrew Kelley
2016-12-07IR: add error for assigning runtime value to inline varAndrew Kelley
2016-12-06IR: implement deferAndrew Kelley
2016-12-04IR: re-organize where state goes to prepare for genericsAndrew Kelley
* 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.
2016-11-26IR: add inline gotoAndrew Kelley
2016-11-26IR: fix parsing while loopAndrew Kelley