Goose  Timeline

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

50 most recent check-ins that include changes to files matching 'bs/builtins/types/localvar/*'

2024-10-01
22:43
Commiting the current WIP for archival purpose before focusing on the inane rewrite in rust Leaf check-in: ce99bb3280 user: achavasse tags: cir-ssa-refactor
2024-09-15
20:24
Add clang format settings, reformat everything check-in: 0db147f117 user: achavasse tags: cir-ssa-refactor
2024-02-09
18:05
Lowering: completely reworked all lowering to happen in the same two unified extension points upstream of all three CIR consumers check-in: 1793989d05 user: zlodo tags: trunk
2024-01-03
22:20
Added _LowerType extension point, called to decide what type to use when allocating locvars check-in: 11b6bc7f84 user: zlodo tags: trunk
2023-12-26
15:41
Structs: add the Finalize extension point that finalizes the creation of a struct after gathering its content. check-in: f1458583b5 user: zlodo tags: trunk
2023-12-11
00:08
Move the local type inference code out of locvar and into its own function so it can be reused for struct members check-in: 1f1faa7fe2 user: zlodo tags: trunk
2023-12-09
19:44
Assigning something to a Decl or a TNamedDecl no longer directly declares a variable but creates an intermediate DeclWithInit or TNamedDeclWithInit, which declare variables when dropped. check-in: 308bd3ed4d user: zlodo tags: trunk
2023-08-02
21:46
Implemented forall statement check-in: 32f94cd2e1 user: zlodo tags: trunk
2023-03-28
19:44
Get rid of the TCRINFOS macro, use std::source_location instead to remove some noise check-in: d9414ddc6f user: zlodo tags: trunk
2023-03-05
22:24
  • removed fmtlib, now use std::format
  • vastly improved the overload resolution debugging tools
  • prelude: started adding some extra error detection for small things that don't need to be builtin
  • prelude: started working on implementing #for for tuples, some stuff needs to be addressed still
  • fixed some type checking issue with wrapped args
  • fixed superfluous nested lifetime scope in brace blocks (which caused redundant calls to some extension points)
check-in: 4d4d76607a user: zlodo tags: trunk
2023-01-05
19:44
Fixed passing tuple by value to functions, which involved properly handling type checking of constant tuples containing computed data and some codegen bugs check-in: 9b8306c3af user: zlodo tags: trunk
2022-09-02
21:42
  • Implemented a test for variadic functions
  • Fixed a million issues and missing things preventing the above from working
  • Implemented equality operators for types
check-in: 373a6ebd57 user: zlodo tags: trunk
2022-06-29
21:47
The CIR is no longer made out of instructions that are basically expression trees, but is now instead a stack language to make it possible to insert verification instructions before and after the evaluation of individual function arguments check-in: 1f87fbda15 user: zlodo tags: trunk
2022-06-18
18:51
  • Added a location id to all CIR instructions (needed with the stack based approach to locate intermediate results)
  • Fixed a bunch of verifier errors
  • Re-enabled most verifier tests, other than some requiring to re-implement a few more bits
check-in: b4d5bdf6ec user: zlodo tags: cir-stack-language
2022-05-23
08:44
  • CIR instructions are now stored in lists
  • Execute: handle the stack
  • Converted some instructions to use the stack
check-in: 0d5427d49b user: zlodo tags: cir-stack-language
2022-03-14
19:23
  • bracket blocks inlined in the code are no longer proposition lists but a new type of block to contain "ghost code" (ie a verification specific cfg)
  • added a GhostBranch instruction to insert the above in the middle of regular code
  • removed a bunch of hacks to ignore load/stores involving ghost funcs during execution and codegen since they are now separated from normal code using the above
  • miscellaneous other refactorings and improvements
  • as a result ghost code is now more flexible and can use idiomatic tuple assignments to exchange the values of two ghost function closures
check-in: 68260b65f2 user: zlodo tags: trunk
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. check-in: 23ecb4f9cb user: zlodo tags: trunk
2021-11-22
20:22
Function pre-conditions and post-conditions now use the same proposition lists as type predicates check-in: 1c335aeb04 user: zlodo tags: trunk
2021-11-16
21:18
The details of creating a new visibility scope are now handled by the builder instead of being hardcoded in the parser check-in: 16dd587889 user: zlodo tags: trunk
2021-11-13
14:09
The builder is now passed as the first param of the _DropValue extension point check-in: c33b227735 user: zlodo tags: trunk
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. check-in: 1ad61a2717 user: zlodo tags: trunk
01:00
  • refactored the ref syntax again: "ref" is now an infix operator that takes an "AccessLevel" compile time value (mut/const/temp) on the lhs, or a TVar to capture/constrain it
  • used the above feature to fix the constref verification _ConvertArg overload which was silently dereferencing the arg, causing it to get converted to a temp ref in all cases
check-in: d679acf746 user: zlodo tags: trunk
2021-10-26
18:43
Type predicates: implemented helper functions to append / filter out type predicate hashes in identities. check-in: d40e6470bf user: zlodo tags: trunk
2021-09-18
17:00
  • Refactored LocationId into a separate class and actually use it everywhere instead of uint32_t, this makes it easier to make generic wrappers for APIs
  • g0 api: more work on the CIR api
check-in: bf81e30984 user: achavasse tags: trunk
2021-09-12
16:48
  • Started work on extensibility api
  • some code cleanup
check-in: 55beba911a 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
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-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
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-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-01
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-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
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-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-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.
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
14:32
  • Got rid of the gross system of performing unifications twice in all cases. It's only really needed when invoking template functions.
  • Since the above had the unexpected side effect of fixing the tuple Initialize() overloads not being called, fixed those (which were actually broken).
check-in: c3f897359f user: achavasse tags: trunk
2020-06-15
19:45
Call "Postprocess" on unification solutions during the best solution lookup, so that custom postprocessing callbacks can trigger the rejection of a solution. check-in: daee557086 user: achavasse tags: trunk
19:16
Moved some common code into a helper function to facilitate some future refactoring. check-in: df0ad9a7f1 user: achavasse tags: trunk
2020-06-13
22:59
  • Implemented Initialize overloads for tuples.
  • Lots of cleanup.
check-in: 947b9d7cfc user: achavasse tags: trunk
13:34
Implemented new rules for implicit dereferencing and implicit referencing. check-in: 4d5cc07d86 user: achavasse tags: trunk
12:51
Modify the reference IR representation so that we can have holes for the behavior. check-in: 385846b609 user: achavasse tags: trunk