aboutsummaryrefslogtreecommitdiff
path: root/src/parser.hpp
Commit message (Collapse)AuthorAgeFilesLines
* Add semicolon stripping command: `odin strip-semicolon`, has the same ↵gingerBill2021-08-311-0/+1
| | | | parameters as `odin check`
* Unify thread pool logic across the rest of the compiler, using a global ↵gingerBill2021-08-261-3/+1
| | | | thread pool
* Change the implementation of `Arena` to use virtual memory, and remove the ↵gingerBill2021-08-261-3/+2
| | | | old gbArena code
* Add multi-pointer types `[^]T`gingerBill2021-08-211-0/+4
|
* Remove unused codegingerBill2021-08-191-1/+1
|
* Remove dead code, and add an extra mutexgingerBill2021-08-181-1/+1
|
* Make `or_else` and `or_return` operators (binary and suffix respectively)gingerBill2021-08-151-0/+2
|
* Remove some dead codegingerBill2021-08-151-2/+3
|
* Improve error handling for field list prefixesgingerBill2021-08-151-1/+1
|
* Minor clean up of `parse_field_prefixes`gingerBill2021-08-151-1/+1
|
* Add `#any_int` directive to replace `auto_cast` uses on parameters.gingerBill2021-08-151-0/+1
|
* Define where `#bounds_check`/`#no_bounds_check` can be appliedgingerBill2021-08-151-2/+0
|
* Define which mutexes are blocking and recursive explicitlygingerBill2021-07-271-3/+3
|
* Big simplification and improvement of the entity collection system, reducing ↵gingerBill2021-07-271-1/+16
| | | | unneeded steps for packages
* Improve default scope sizegingerBill2021-07-271-0/+1
|
* INTERNAL USE ONLY: `//+lazy` build flaggingerBill2021-07-251-3/+8
|
* `enum Addressing_Mode : u8;`gingerBill2021-07-121-1/+2
|
* Move things around for sanity checking for multithread preparationgingerBill2021-07-101-10/+12
|
* Remove `try`; Replace `try x else y` with `or_else(x, y)`gingerBill2021-07-051-2/+0
|
* Try `try` and `or_else` built-in procedures with operators `try` and `try else`gingerBill2021-07-041-0/+2
|
* Correct selector call expression chaining behaviour (a bit of a hack)gingerBill2021-06-161-1/+7
|
* Make default calling convention code more correct to readgingerBill2021-06-081-9/+13
|
* Add support for `Addressing_OptionalOkPtr`gingerBill2021-06-061-17/+18
| | | | Allowing for `i, ok := &x.(T);` (type assertions) and `v, ok := &m[k];` (map indexing)
* Experimental support for inline swizzling for array types of len <= 4 e.g. ↵gingerBill2021-06-051-1/+8
| | | | `v.xyz`, `v.argb`, `v.xxx`
* Add range-based error messages to `-verbose-errors`gingerBill2021-05-191-3/+3
| | | | | | | | Example: Cannot convert '(1 + 2)' to 'untyped bool' from 'untyped integer' x := (1 + 2) * true; ^~~~~~^
* Remove old dead codegingerBill2021-05-151-1/+0
|
* Add minor ignoring hint on type assertions to get better code generation ↵gingerBill2021-05-131-1/+7
| | | | with no optimizations enabled
* Add explicit numbers to `enum AddressingMode`gingerBill2021-05-121-16/+16
|
* Unify `AstTernaryExpr` with `AstTernaryIfExpr`gingerBill2021-05-051-1/+0
| | | | | Allow for both syntaxes `x if cond else y` and `cond ? x : y` Removes the confusing semantics behind `?:` which could be `if` or `when` depending on the context.
* Add "naked" calling convention (removes prologue and epilogue)gingerBill2021-04-281-1/+2
|
* Move out some intrinsics into separate procedures in llvm_backend.cpp; ↵gingerBill2021-04-241-2/+2
| | | | Rename `InlineRangeStmt` to `UnrollRangeStmt` (eventually merge the two AST nodes)
* Add new intrinsics: debug_trap, trap, read_cycle_counter, expectgingerBill2021-04-221-0/+1
|
* Improve `#optional_ok` logic for procedures; Add `#optional_second` for ↵gingerBill2021-04-191-0/+1
| | | | `package runtime` usage
* Experiment with new grammatical parsing rule for expression level ↵gingerBill2021-03-301-0/+1
| | | | (-strict-style) idea
* Make the parser support as many identifiers on the LHS in `for in` loops to ↵gingerBill2021-03-241-2/+1
| | | | improve error messages
* Minimize TokenPos size by using `i32` for line/column/offset and file_id ↵gingerBill2021-03-041-1/+2
| | | | | | instead of `String` To make `i32` safe, the parser limits the file size of odin files to a maximum of 2GiB (which will be good enough for the vast vast majority of cases)
* Begin work on aarch64 ABI for `-llvm-api`gingerBill2021-02-241-1/+1
|
* Build tag to make all declarations within a file private to the package ↵gingerBill2021-02-231-0/+1
| | | | `//+private`
* Remove `#opaque` typesgingerBill2021-02-231-4/+0
|
* Remove `bit_field` keyword and parsing logicgingerBill2021-02-231-5/+0
|
* Remove `"pure"` and `"pure_none"` calling conventionsgingerBill2021-02-231-6/+4
|
* Add extra error checking in parser.cppgingerBill2021-01-151-4/+6
|
* Allow string literals for `[N]byte`gingerBill2020-11-201-2/+2
|
* Update `odin doc` to support multiple package outputs by passing multiple ↵gingerBill2020-11-181-0/+1
| | | | | | | paths; Replace `-all` with `-short` Example: odin doc core/path core/path/filepath
* Begin rudimentary work on implementing `odin test` tooling with ↵gingerBill2020-11-171-0/+2
| | | | `*_test.odin` files
* Minimize memory usage for AST nodes by using Slice<T> rather than Array<T> ↵gingerBill2020-11-161-29/+28
| | | | when the parameter doesn't need to grow
* Minimize Ast flags usagegingerBill2020-11-161-8/+8
|
* Begin clarifying allocation patterns by changing from `heap_allocator` to ↵gingerBill2020-11-151-0/+1
| | | | specific arenas
* Inline asm expression (-llvm-api)gingerBill2020-10-241-4/+27
| | | | | | | | | | | | See https://llvm.org/docs/LangRef.html#inline-assembler-expressions Example: ``` x := asm(i32) -> i32 { "bswap $0", "=r,r", }(123); ``` Allowed directives `#side_effect`, `#align_stack`, `#att`, `#intel` e.g. `asm() #side_effect #intel {...}`
* Begin work on making packages import assembly sort files (.S)gingerBill2020-10-161-6/+26
|