Goose  Timeline

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

50 check-ins occurring around 2021-02-01 12:56:55.

2021-03-17
12:17
Verifier: force z3 to use its old arithmetic solver for now to prevent one of the verifier test to hang with recent z3 versions. check-in: 71c91d9322 user: achavasse tags: trunk
00:41
  • Added a Conversion step after typechecking, to take care of conversions that aren't practical to do during typechecking itself.
  • Added back a proper ct_int to rt_int conversion step that diagnoses out of range integer constants
check-in: b48e7b7507 user: achavasse tags: trunk
2021-03-05
17:56
Implemented refinement type predicate unification. Predicate violations by variable initialization are now properly detected. check-in: b2945b5bb1 user: achavasse tags: trunk
2021-03-04
23:22
Improved diagnostics rendering a little check-in: 3ca76452a1 user: achavasse tags: trunk
21:47
  • Refactored and simplified the way integer and string constants are handled: we no longer try to resolve them during typechecking, this breaks when parametric types are involved and also it makes no sense, typechecking is about types, not values
  • Fixed multiple places where locationIds weren't propagated
  • Verifier: variable assignments now verify the destination variable type's refinement conditions
  • Fixed a test where the above change detected a bug, kept the bugged version as a new verification failure test
check-in: 3cf6ab5249 user: achavasse tags: trunk
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 check-in: 2370e98869 user: achavasse tags: trunk
2021-03-01
20:21
Split the verification tests into more subdirectories. check-in: 48b0306e20 user: achavasse tags: trunk
12:32
Reorganized tests, they are now grouped by language feature. check-in: 5e757567a6 user: achavasse tags: trunk
2021-02-25
20:38
Small cleanup check-in: 9d548bcd22 user: achavasse tags: trunk
20:35
Fixed the creation of references to tuple types, and a reference typechecking rule priority issue. Re-enabled the last previously disabled reference test, which now works again. check-in: 2f6b5946cf user: achavasse tags: trunk
18:37
CodeBuilder: minor optimization check-in: 7f3be49341 user: achavasse tags: trunk
12:10
Implemented a new method to order function overloads. Enabled several new reference tests which are now working properly. check-in: 52ea24b083 user: achavasse tags: trunk
2021-02-21
17:15
Improved the #DumpValue debugging intrinsic check-in: cb0fd19317 user: achavasse tags: trunk
2021-02-19
20:48
Fix anonymous functions not getting compiled anymore due to an old bug. Added a test for that, since it turns out there weren't any check-in: 22b3b50b4f user: achavasse tags: trunk
2021-02-18
20:32
Removed stray debugging profanity. check-in: 8cdafa4fa4 user: achavasse tags: trunk
19:35
Implemented reference initialization, so reference local variables can now be declared, and added a typechecking rule preventing template variables to bind to reference types.

Then fixed a MILLION horrible problems caused by all that. Now almost everything works again. *sobs* check-in: 9b058524b4 user: achavasse tags: trunk

2021-02-13
21:21
Hole unification: preserve the flavor term check-in: 9d94af0817 user: achavasse tags: trunk
2021-02-12
23:57
Added a "flavor" term to holes to be able to have specific rules for TVar holes and for forwarding holes. Refactored forwarding holes to use this, instead of being represented as compound expressions (which would probably have broken down horribly in some complex type checking scenarios) check-in: 176ee856a6 user: achavasse tags: trunk
2021-02-11
11:59
Fixed some long standing meson warnings, enabled more c++ warnings, and fixed them check-in: fbe6ea9f31 user: achavasse tags: trunk
2021-02-08
12:52
Implemented forwarding, use it for decl assignments. check-in: 102a2b2fc7 user: achavasse tags: trunk
2021-02-05
22:58
Sema: typecheck: try rules in descending scoring order until we find one that yields any result. check-in: aad44e1516 user: achavasse tags: trunk
2021-02-03
12:52
Fix llvm passbuilder params to stop inadvertently enabling debug mode due to an api change. check-in: 29f1006d63 user: achavasse tags: trunk
2021-02-02
20:46
CIR expressions pretty printing check-in: bcca4c51ba user: achavasse tags: trunk
2021-02-01
19:26
Added a rule based system to pretty print EIR expressions in a less horrific way. check-in: 6675f81702 user: achavasse tags: trunk
12:56
Correctly handle references to references, plus some code cleaning. check-in: ba909d1a94 user: achavasse tags: trunk
2021-01-21
21:05
Removed the vector "typechecking rule", whose existence made no sense. Typechecking rules should operate only on values and pattern of values. Typechecking multiple values against multiple params is now done through a specific function instead. check-in: 7b9f645074 user: achavasse tags: trunk
2021-01-13
11:46
Sema: simplification: the "half-unification" rules don't need to be generators, they can only output one result. check-in: 3bf30e74ac user: achavasse tags: trunk
2021-01-12
21:08
Implemented missing lowering of reference types to pointer types, added a bunch of runtime/compilation time reference tests. check-in: 90c951f66f user: achavasse tags: trunk
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). check-in: 52280a3c5c user: achavasse tags: trunk
2021-01-07
16:26
Fixed template references. check-in: 54e783e254 user: achavasse tags: trunk
2021-01-03
18:34
Fixed a bug with addresses computed during compilation time execution. Mutating values through references passed as parameters now works, at compilation time at least. check-in: 3eebbcff0c user: achavasse tags: trunk
15:44
cir: load, store and select store their base addresses directly as cir instructiions, rather than wrapped into eir values, which is useless there. check-in: 4cc7a833f8 user: achavasse tags: trunk
2021-01-02
18:24
Yet one more reference/address refactor: each calculation step (getting temp addr, getting var addr, selecting a member) is now a separate cir instruction. We need this level of generalization to be able to obtain addresses from anywhere, including variables and function parameters. check-in: 26c691ecb9 user: achavasse tags: trunk
18:00
Some more renaming. check-in: 0345b9f807 user: achavasse tags: trunk
2020-12-27
14:40
Renamed "ir" to "eir" (expression intermediate representation) and "llr" to "cir" (code intermediate representation) for clarity. check-in: 7d2def7b75 user: achavasse tags: trunk
2020-12-26
14:59
Build fix check-in: c8058eaaf9 user: achavasse tags: trunk
2020-12-18
01:29
References refactor: references are now values all the way to the llr, where a new "CalcAddress" instruction represents a conversion from a logical address (location + path) into an actual runtime or compilation time address. This is in preparation to allow references to be stored in variables or passed as parameters. (It just took 4.5 months to finish this... Refactoring just sucks) check-in: 8ddd71f9b2 user: achavasse tags: trunk
2020-08-02
19:26
Execute: use a proper call stack so that we'll be able later on to reference values living on the caller's stack to be able to pass references around at compilation time. check-in: 151e3b4d8c user: achavasse tags: trunk
2020-07-07
21:08
When creating a reference to a local variable, if it contains a reference, just unwrap it. check-in: 421381dc15 user: achavasse tags: trunk
2020-07-06
19:49
Fixes for the current git version of clang/llvm. check-in: 834d8f14b9 user: achavasse tags: trunk
2020-07-05
20:15
Implemented reference parsing. check-in: 086a58a7a3 user: achavasse tags: trunk
2020-07-04
13:08
  • Verifier: fixed havocing of individual members of aggregate types not working.
  • Added verification loop tests (both passing and failing) that modify a tuple inside of the loop.
check-in: e3b9bd4c1b user: achavasse tags: trunk
12:24
Verification: fixed a bug with address havocing. check-in: 879d75711b user: achavasse tags: trunk
2020-07-03
23:09
Removed a couple of obsolete comments. check-in: 4dd8529aac user: achavasse tags: trunk
23:03
  • Fixed reference typechecking issues.
  • Fixed tuple initialization.
  • Added verification tests involving values stored in tuples.
check-in: 4be05b9f94 user: achavasse tags: trunk
2020-07-02
19:31
Added tests for tuples of references. check-in: 05ec684dbf user: achavasse tags: trunk
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.
check-in: 04aea08600 user: achavasse tags: trunk
2020-06-27
22:05
Clearly separate the type checking rules and the unification rules, instead of lumping them all together in a single set of patterns which is increasingly confusing. check-in: b64ea47f6b user: achavasse tags: trunk
2020-06-26
23:34
Cleanup:
  • Removed the poorly thought out "domain" system that was intended to allow for different implementations of functions for runtime and for compilation time, which was adding an absurd amount of crap everywhere and should be unnecessary with the current planned approach for implementing data structures.
  • The using statement doesn't do lazy parsing anymore. Lazy parsing is better left to specific constructs that require them (such as function bodies and later on class/structs). This removes the only case of significant newline character in the language.
check-in: 568c366a36 user: achavasse tags: trunk
2020-06-20
19:59
Verifier: some fixes to correctly handle tuples. Still not quite working yet. check-in: 060e84f233 user: achavasse tags: trunk