Goose  Timeline

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

54 check-ins using file bs/builtins/types/template/tvar.cpp version 4b53aa48f8

2021-09-12
13:43
Small cleanup check-in: 9345aa6eae user: achavasse tags: trunk
13:42
Adopted a new convention for source extensions: .g0 for prelude code (where most language features won't be available), .g1 for user code check-in: 45f663093d user: achavasse tags: trunk
12:34
Split out the compile time api function out of builtins and into their own library check-in: b397dc5a7c user: achavasse tags: trunk
2021-09-11
23:40
Builtins: api: added an object to wrap a term reference check-in: 5a2d5b8a8b user: achavasse tags: trunk
23:02
Builtin funcs: added a wrapper for constant valued parameter (to be able to overloaded api functions depending on enum values) check-in: f4ea7d08af user: achavasse tags: trunk
19:44
  • Fixed execution of void intrinsic function causing a bogus error message
  • Fixed the intrinsic operator
check-in: bc64264206 user: achavasse tags: trunk
15:05
  • template functions can now be intrinsic
  • implemented the "intrinsic" operator to create intrinsic functions
  • some code cleanup
check-in: ba2f4e9f95 user: achavasse tags: trunk
2021-09-10
00:02
Parser: when parsing a function overload, instead of directly adding it to the overload set, push an "Overload" value that performs the addition in DropValue(). This will allow operators to modify overloads before they are added to an overload set. check-in: 5f4eeaef12 user: achavasse tags: trunk
2021-09-09
18:21
Implemented the $$ operator to create a forwarding template variable check-in: 9b9f4b0fa9 user: achavasse tags: trunk
18:12
Implemented non-builtin intrinsic function invocation check-in: 121560d1c1 user: achavasse tags: trunk
2021-09-01
23:26
Some cleanup and small reorganization in preparation for implementing non builtin intrinsic functions check-in: bbd2c17c42 user: achavasse tags: trunk
2021-08-31
23:10
  • Added extension points to transform parameter types and function arguments
  • Fixed the incorrect type predicate type checking rule which should just preserve the argument's predicates as is
  • Fixed verification of return intructions that were checking the returned value's predicates, instead of the return type predicates (which happened to work anyway until the above fix)
check-in: 4b842721d2 user: achavasse tags: trunk
2021-08-29
21:49
  • Type predicates' identity and placeholder are now created immediately, rather than when parsing their content
  • Added missing type predicates lazy parsing during typechecking
  • Fixed a type checking rule falling back to unification, which is no longer needed
check-in: 2d2defb442 user: achavasse tags: trunk
19:13
Removed stray debugging code. check-in: 7e15ecf852 user: achavasse tags: trunk
2021-08-28
17:55
  • Instead of falling back to unification as the default type checking rule, implemented default type checking rules similar to the default unification ones
  • Fixed a nasty generator bug
  • Fixed reference type parsing not generating a location
  • Fixed where operator not generating a location that spanned both the types and the predicates
  • Various fixes to accomodate random api changes in the latest llvm
  • Updates fmt and catch2 versions
check-in: 46e87c202b user: achavasse tags: trunk
2021-06-15
21:14
Small fixes check-in: 05a35f70f0 user: achavasse tags: trunk
2021-06-11
11:42
  • Removed the Conversion step, it could all be done using PostProcessing callback, there were just TypeChecking rules missing to unwrap the callbacks...
  • Fixed some ill defined reference type checking rules
  • Runtime integers no longer have a default initializer of 0. This isn't that useful considering that 0 may not be valid depending on the refinement conditions applied to the type
check-in: 91a6550edb user: achavasse tags: trunk
2021-04-11
13:10
Implemented a way to track down (in debug builds) which typechecking rules were used to select a given function overload that doesn't involve peppering half the code base with debug prints and then painstakingly poring over a gigantic log check-in: 4ece399a6f user: achavasse tags: trunk
2021-03-19
21:49
Verification: when loading a value from memory, emit assumptions for its type's refinement conditions. check-in: 5d2f26492e user: achavasse tags: trunk
2021-03-18
12:42
Verifier: get rid of a helper that's no longer needed check-in: 3e169a34af user: achavasse tags: trunk
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