Goose  History of bs/parse/blocks.cpp of 9089b014a270859c

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History of file bs/parse/blocks.cpp at check-in 9089b014a270859c

2022-02-18
17:36
  • refactored function parsing so that ghost function declarations can actually work (ie they don't expect a function body)
  • some fixes in codegen to properly ignore statements involving ghost functions
file: [f00077fa8d] check-in: [07963466bf] user: zlodo branch: trunk, size: 3661
2021-11-25
21:21
Got rid of the where operator. Predicates are now added to types simply by following the type with a proposition list. file: [1f504bcb41] check-in: [23ecb4f9cb] user: zlodo branch: trunk, size: 3540
2021-11-23
19:45
  • Parser: when encountering a prefix bracket block, parse it into a propositions list.
  • Builtins: when a proposition list is dropped (ie used as a stand alone statement), convert it into assert instructions.
  • Builtins: remove the builtin assert function, now replaced with the above so that propositions are always enclosed in brackets, regardless of where they are used. Also removes the confusion of making the assert function a compile-time check when its traditionally a runtime check
file: [6cf5dd3f29] check-in: [2ba2e560b1] user: zlodo branch: trunk, size: 3377
2021-11-22
20:33
Parser: split block parsing code file: [a413f5e297] check-in: [a4eaf901ef] user: zlodo branch: trunk, size: 3376
2021-11-11
20:05
Refactored the code builder: it is now carried around as a Value, and accessed through a bunch of extension points, so we can have different builders (and even user defined ones) later to make classes etc. file: [4c99635535] check-in: [1ad61a2717] user: zlodo branch: trunk, size: 8539
2021-09-15
21:24
  • VecOfLength() will now match vectors of compatible length, taking repetition terms into account
  • Vector unification and typechecking rules now handle vectors of variable lengths
file: [9ab73fb0a6] check-in: [a4f1ada98c] user: achavasse branch: trunk, size: 8612
2021-03-02
22:51
Removed magic "tuple of types to tuple type" conversions and moved them into extension points so that any type can implement similar semantics file: [26aa08cb73] check-in: [2370e98869] user: achavasse branch: trunk, size: 8613
2021-01-11
20:20
Reorganized symbols visibility a bit to avoid local variables from the enclosing function to be visible inside of function parameter list declarations (which prevented reusing them as parameter names). file: [6ea717dba9] check-in: [52280a3c5c] user: achavasse branch: trunk, size: 8591
2020-07-02
00:47
  • Added overloads to the comma operator to be able to construct tuples of references.
  • Fixed reference typechecking rules so that overloads taking values directly have priority over overloads taking references.
  • Fixed a template function expression parsing bug.
file: [dd6a8843a4] check-in: [04aea08600] user: achavasse branch: trunk, size: 8261
2020-02-20
22:42
  • Wrap function parameters into local variables, which will make it easier later on to distinguish temporaries from stack values when implementing references.
  • Register parameters for destruction, which was missing.
  • Added an invocation rule for local variables, so that they can be invoked if they contain an invokable object.
file: [785a6a9ab2] check-in: [652107629a] user: achavasse branch: trunk, size: 8260
2020-01-11
18:28
  • Moved the cfg and lifetime management stuff into a CodeBuilder object owned by sema::Context. This is in preparation to allow alternative implementations of the builder, for instance to build classes.
  • Pass the context to intrinsic functions, which removes their dependency to the parser the need for the ugly "GetCurrentParser" static function.
file: [060f57de08] check-in: [b3aeaae2df] user: achavasse branch: trunk, size: 8193
2020-01-04
15:17
  • verifier: check compilation-time function calls.
  • verifier: improved error messages wording.
file: [b17857bb26] check-in: [353fcc252a] user: achavasse branch: trunk, size: 8192
2019-12-11
15:38
  • Compile-time execution: don't attempt to perform a compile time evaluation of every invocation. Instead, wait until a type is being used by a decl to try and evaluate it.
  • Diagnostics: simplify accordingly (no need for the mode that silences all errors during attempted comptime evaluation)
  • Added some verification conditions to the mandelbrot sample, and created a broken variant as a verification diagnostics test.
file: [2e86d539bf] check-in: [b702561850] user: achavasse branch: trunk, size: 8206
2019-09-22
14:37
Project renaming. file: [3cb639da25] check-in: [af650a9e95] user: achavasse branch: trunk, size: 8194
2019-08-27
20:27
Tuples containing only types or other tuples of types are now considered types. file: [9f6de48d85] check-in: [533d2ce579] user: achavasse branch: trunk, size: 8200
2019-08-26
00:18
Implemented local variable destruction (through the DestroyValue() extension point), and setup proper visibility and lifetime rules for variables declared inside of statements. file: [67aa5af99c] check-in: [c2b2425c0c] user: achavasse branch: trunk, size: 8198
2019-08-22
13:23
You have failed me for the last time, CMake. file: [9b81ba631f] check-in: [e38aee1ca0] user: achavasse branch: trunk, size: 8918
2019-08-19
13:43
  • Fixed many issues with compile time versus run time function invocations.
  • Improved some error messages.
file: [d8a8ea7ea7] check-in: [baf9721752] user: achavasse branch: trunk, size: 8844
2019-08-18
00:54
  • Implemented the while statement.
  • Fixed a lexer issue that generated invalid locations at the very end of files.
file: [70640fe59d] check-in: [459ee84d6b] user: achavasse branch: trunk, size: 8758
2019-08-15
22:37
  • Fixed some bugs related to dropping values.
  • Implemented local variable declarations with default initialization.
  • codegen: Fixed allocas not properly grouped up at the start of the first basic block of functions.
file: [427a5927a4] check-in: [3d8b581261] user: achavasse branch: trunk, size: 8760
2019-08-14
02:30
  • Added an unification rule to deal with LocationIds. It honors poisoning and preserve the most recent location from the input values.
  • Added a diagnostic context indicating the point at which a template function passed as a value has been instantiated.
  • Added a trace mode that logs the diagnostics contexts, which can be activated by calling a compile time function.
  • Added a few diagnostic messages tests.
file: [3fd33955dc] check-in: [980effe072] user: achavasse branch: trunk, size: 8815
2019-08-13
22:43
Cleanup: got rid of optional< Value > in a lot of places that ought to always return a poison value if an error happens. file: [fb11f7788c] check-in: [1feb20f522] user: achavasse branch: trunk, size: 8960
12:14
diagnostics: simplify the code a bit by merging the LocationManager as static methods in Location. file: [994a037a4d] check-in: [17905bf47a] user: achavasse branch: trunk, size: 9046
00:42
Diagnostics: use value poisoning to (hopefully) fix most cases of superfluous cascading error messages. file: [a9836fd771] check-in: [59ecc02baa] user: achavasse branch: trunk, size: 9064
2019-08-12
20:15
  • Implemented a system to temporarily silence error outputs.
  • Syntax errors now silence further errors encountered while parsing the same block and nested children blocks.
  • All errors are also silenced while speculatively attempting to evaluate invocations at compilation time.
file: [2fbfd89b36] check-in: [972c1d8b47] user: achavasse branch: trunk, size: 9052
2019-08-11
13:36
Ported more error messages to the DiagnosticsManager. file: [a74ae22d97] check-in: [157221e014] user: achavasse branch: trunk, size: 8656
01:26
  • ir: created a new type for LocationId which is handled in a specific way so that two LocationIds are always considered equal by pattern matching. This prevent the values' locationIds stored in ir expressions from fucking up everything.
  • propagate value locations in a few places: in the parser, when resolving invocations and when doing eager evaluation. There are probably a lot of other places still missing.
  • converted all the builtin statements to use the DiagnosticsManager.
file: [2d1634681d] check-in: [2efa23555d] user: achavasse branch: trunk, size: 7575
2019-08-10
14:26
Refactored the lexer (and the resolver) to output Terms associated with location Ids. file: [85421300db] check-in: [c4abb2a3ed] user: achavasse branch: trunk, size: 7395
2019-08-09
20:45
Added a location id and poison state to ir::Value. file: [3d3b726901] check-in: [1a6405a1c7] user: achavasse branch: trunk, size: 7383
2019-08-01
21:11
parser: implemented ComplexValue, which is a value bundled with a CFG whose execution or insertion is a prerequisite to use the value. file: [acfe8721de] check-in: [79a134aa8e] user: achavasse branch: trunk, size: 7161
2019-07-31
14:05
Fixed some cyclic reference issues with cyclic CFGs:
  • Moved and renamed sema::CFGBuilder to llr::CFG.
  • llr::Func now owns a CFG pointer, rather than a pointer to its entry BB.
  • Branch and CondBranch now store weak pointers to their target BB.
file: [abaa564349] check-in: [d19a6bf065] user: achavasse branch: trunk, size: 7149
2019-07-30
20:20
Implemented the if statement. file: [22fc4741b8] check-in: [866b8caaca] user: achavasse branch: trunk, size: 7163
14:25
parser: setup proper visibility rules for nested brace blocks. file: [df96afaa91] check-in: [09150fdc1c] user: achavasse branch: trunk, size: 7202
2019-07-15
21:13
sema: removed a couple of superfluous rule lookups when resolving an invocation. file: [652f9a5ec0] check-in: [c7da710bb0] user: achavasse branch: trunk, size: 6212
2019-04-13
22:03
api: added a builtin Execute command, which executes the specified file. Also added the possibility to optionally return an error code. file: [eca03d1dd4] check-in: [47708770e6] user: achavasse branch: trunk, size: 6174
2019-04-12
19:37
  • cleaned up and refactored llr into a proper cfg representation.
  • added a CFG builder class in sema, currently very rudimentary.
  • split the parser's value building workflow from the llr construction workflow, which now goes through a CFG builder.
  • implemented the return statement.
file: [d06fdd4a6b] check-in: [5ea39472a2] user: achavasse branch: trunk, size: 6190
2019-04-08
20:29
Higher order polymorphism: fix non-callable template lambdas passed as a generic compile-time parameter. file: [eab245101e] check-in: [007891dc2f] user: achavasse branch: trunk, size: 6133
2019-03-30
15:30
  • Changed type's type representation to be able to pass types around as value anywhere.
  • Fixed a bunch of bugs.
file: [8a12ba8011] check-in: [0e66d22527] user: achavasse branch: trunk, size: 6133
2019-03-28
21:00
Higher order functions: plain lambdas can be passed to template function type parameters. file: [281c304821] check-in: [ee15f9081f] user: achavasse branch: trunk, size: 6161
2019-03-02
21:01
Function calls are now eagerly evaluated during parsing. file: [ebc56ed6b6] check-in: [8a8e76084e] user: achavasse branch: trunk, size: 6198
2019-02-23
17:04
Templates: parse template function types, expressions and declarations. file: [110702fd77] check-in: [bc7b56fb86] user: achavasse branch: trunk, size: 6006
2019-02-18
21:54
Parser:
  • Make the resolver skip newlines by default, and provide an additional "raw" api to retrieve unresolved tokens without skipping newlines.
  • Parsing rules now only return a bool to indicate whether they were successful, and can push any number of values themselves as needed.
  • Stop trying to shoehorn implicit separators in the pratt parser. Instead, use the pratt parser only for expressions, and use a different parsing loop for sequences of expressions (ie for brace blocks and top level).
file: [67c0bd7e6d] check-in: [23e0cd5dc7] user: achavasse branch: trunk, size: 5627
2019-02-12
21:53
Implemented function declarations. file: [9f8249a17e] check-in: [1cdacffc17] user: achavasse branch: trunk, size: 5744
2019-02-11
22:44
  • Resolver: implemented an utility function to gather blocks as lists of tokens without parsing them, for when we want to perform lazy parsing.
  • Parser: fixed some bugs with the current delimiter getting lost in nested parsers, which caused spurious misplaced end delimiter error messages.
file: [b19cb4f384] check-in: [91eda406ef] user: achavasse branch: trunk, size: 5428
2019-02-06
22:08
Parser: properly handle empty brace blocks. file: [d90563deb2] check-in: [f85d5d289e] user: achavasse branch: trunk, size: 5557
22:02
First working version of non-builtin functions. Parameters aren't handled yet. file: [244f155145] check-in: [e46bf5d7e5] user: achavasse branch: trunk, size: 5422
2019-02-05
23:45
  • ir: fixed matching variable length vectors stored in tries.
  • sema: fixed importing namespaces.
  • builtins: fixed using statement not using the correct context identity when lazily parsing the contained expression.
  • parser: now parse brace blocks.
  • parser: more work on function expressions parsing.
file: [3eb145911e] check-in: [bf6da54506] user: achavasse branch: trunk, size: 5424
2019-02-04
21:41
Parser: parse function type expressions. file: [0624eeb537] check-in: [63faac8273] user: achavasse branch: trunk, size: 4977
2019-01-31
22:22
  • Invocation: use only the val part of arg tuples, it's easier to manipulate and unify and the contained value know their own types anyway.
  • Implemented an unification rule to peel off single element tuples where applicable.
file: [9d7b97e629] check-in: [75d7c914c3] user: achavasse branch: trunk, size: 4987
20:43
Lexer: added newline separator token. file: [b59bba02b2] check-in: [cf06bf7b6a] user: achavasse branch: trunk, size: 4969
2019-01-27
16:05
Sema: added a placeholder implementation for the function invocation rule. file: [b5f074faac] check-in: [61cece933d] user: achavasse branch: trunk, size: 4640
2019-01-26
23:13
Parser: implemented the parsing of calls. file: [be81fae1e7] check-in: [92aae9c3f6] user: achavasse branch: trunk, size: 4642
2019-01-23
15:51
Added: Parser: parenthese blocks. file: [8dc9b4a303] check-in: [13f2fade56] user: achavasse branch: trunk, size: 3246