Goose  History of bs/builtins/statements/using.cpp of 0b6a7a10ee13d0f5

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

History of file bs/builtins/statements/using.cpp at check-in 0b6a7a10ee13d0f5

2024-09-15
20:24
Add clang format settings, reformat everything file: [d8540a8b88] check-in: [0db147f117] user: achavasse branch: cir-ssa-refactor, size: 4783
2023-12-14
23:30
Structs: perform lazy parsing when a struct type is used. file: [6b8ca02f1c] check-in: [4ea0bba9a7] user: zlodo branch: trunk, size: 4603
2023-12-05
18:43
  • Comptime functions are now explicitely marked with "comptime"
  • Fixed some bugs (or added placeholders) for things that the above change revealed to be broken or missing
file: [1aff9ab41a] check-in: [d6abaa6734] user: zlodo branch: trunk, size: 4439
2022-11-17
00:46
expose more compiler functionality to g0api:
  • local variable declarations
  • lifetime scopes
file: [129e9ce297] check-in: [605ff0a654] user: zlodo branch: trunk, size: 4048
2021-11-26
22:42
  • Fixed adding predicates to a type alias created with using that modified the original type
  • Fixed ambiguous parsing of using expressions that were mistook for overload redefinitions in some cases
file: [2fa94e2fa4] check-in: [35ff2a536e] user: zlodo branch: trunk, size: 4031
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: [6f469edfd4] check-in: [1ad61a2717] user: zlodo branch: trunk, size: 3583
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
file: [8ce0d84b32] check-in: [bf81e30984] user: achavasse branch: trunk, size: 3613
2021-09-12
16:48
  • Started work on extensibility api
  • some code cleanup
file: [872cff982f] check-in: [55beba911a] user: achavasse branch: trunk, size: 3611
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: [7bc69de055] check-in: [52280a3c5c] user: achavasse branch: trunk, size: 3744
2021-01-02
18:00
Some more renaming. file: [05f940e4c5] check-in: [0345b9f807] user: achavasse branch: trunk, size: 2958
2020-12-27
14:40
Renamed "ir" to "eir" (expression intermediate representation) and "llr" to "cir" (code intermediate representation) for clarity. file: [c808371b60] check-in: [7d2def7b75] user: achavasse branch: trunk, size: 2976
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.
file: [774834357f] check-in: [568c366a36] user: achavasse branch: trunk, size: 2975
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: [6741abf276] check-in: [b3aeaae2df] user: achavasse branch: trunk, size: 6418
2019-09-22
14:37
Project renaming. file: [91b4626e02] check-in: [af650a9e95] user: achavasse branch: trunk, size: 6436
2019-08-30
01:07
The tuple assignment and compound assignment operators now first collect the results into temporary variables, and then perform the assignments. This allows things such as a,b = b,a to work. file: [780df73fe0] check-in: [982d26433b] user: achavasse branch: trunk, size: 6444
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: [c40b21fe9a] check-in: [c2b2425c0c] user: achavasse branch: trunk, size: 6485
2019-08-22
13:23
You have failed me for the last time, CMake. file: [45f6f2ab59] check-in: [e38aee1ca0] user: achavasse branch: trunk, size: 6215
2019-08-19
13:43
  • Fixed many issues with compile time versus run time function invocations.
  • Improved some error messages.
file: [a0059f68ce] check-in: [baf9721752] user: achavasse branch: trunk, size: 6259
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: [f09e909559] check-in: [3d8b581261] user: achavasse branch: trunk, size: 6359
2019-08-13
21:21
  • Completed the diagnostics renderer.
  • Fixed a few places where value poisoning wasn't correctly propagated.
file: [bb57cfe423] check-in: [ec58d0ff48] user: achavasse branch: trunk, size: 6364
00:42
Diagnostics: use value poisoning to (hopefully) fix most cases of superfluous cascading error messages. file: [a3bcfb5c34] check-in: [59ecc02baa] user: achavasse branch: trunk, size: 6302
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: [b7b9e4cc3b] check-in: [972c1d8b47] user: achavasse branch: trunk, size: 5853
2019-08-11
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: [a56180b746] check-in: [2efa23555d] user: achavasse branch: trunk, size: 5823
2019-08-10
20:15
parser: custom parsing rules are now passed the location id of the value that resolved to them. file: [f5ef86f8f2] check-in: [e7fce87609] user: achavasse branch: trunk, size: 6293
17:50
lexer: generate token locations. file: [31f53aa7fd] check-in: [bd2fd03a33] user: achavasse branch: trunk, size: 6287
17:01
Implemented the very first draft of the DiagnosticsManager and converted the using statement to use it. file: [0c632c0b41] check-in: [2eb6c1fa43] user: achavasse branch: trunk, size: 6314
14:26
Refactored the lexer (and the resolver) to output Terms associated with location Ids. file: [2e9039a0ba] check-in: [c4abb2a3ed] user: achavasse branch: trunk, size: 5271
2019-08-09
19:54
Cleanup: got rid of the half-assed location and poisoning systems in ir::Terms. file: [26c7c5b522] check-in: [aee388d9c0] user: achavasse branch: trunk, size: 5257
2019-07-30
22:05
  • Builtin functions are now explicitely marked if they need to be evaluated eagerly.
  • Using errors out if the expression doesn't evaluate to a constant.
file: [2bb0246262] check-in: [3c074f1b7d] user: achavasse branch: trunk, size: 5385
14:25
parser: setup proper visibility rules for nested brace blocks. file: [d141fc58c2] check-in: [09150fdc1c] user: achavasse branch: trunk, size: 4998
2019-07-29
01:15
  • Fixed a stupid, recent bug in using that was preventing it from registering the import rule to make things from its parent scope visible.
  • Fixed some issues with functions and domains.
  • Added a sample program that (almost) constructs a working hello world binary, manually for now in the absence of a proper front end.
file: [a081f56126] check-in: [c1b9248768] user: achavasse branch: trunk, size: 5000
2019-07-13
23:30
  • Added missing quoting around function type's domain.
  • Detect and error out when an using expression is invoked recursively.
  • Fixed passing of generic values to builtin funcs (the pattern used was incorrect and didn't work when passing some types).
  • Added an unification rule to prevent single element tuples from being peeled off when unified against generic values.
  • Implemented an api function to compile a file into a function of a specified type and signature.
file: [a076c3d952] check-in: [50da1401ee] user: achavasse branch: trunk, size: 5009
2019-07-11
19:32
Allow overloading of builtin functions. file: [d01125445f] check-in: [bff15eb03d] user: achavasse branch: trunk, size: 4691
2019-06-19
19:49
  • parser: don't hardcode the builtins identity prefix in the rule helpers anymore.
  • builtins: move the common identity prefix used by all builtins into a separate function, to be able to easily change it.
  • builtins: prepend the CompileTime domain specifier to the root builtin identity.
  • sema: don't store the domain separately, extract it from the identity when needed instead.
file: [46adb6b710] check-in: [cde0c6d0e3] user: achavasse branch: trunk, size: 4679
2019-06-16
14:41
Added the current domain to sema context, and include it in function identities. file: [7a563752ea] check-in: [7e053c8063] user: achavasse branch: trunk, size: 4682
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: [2dee3ee43b] check-in: [5ea39472a2] user: achavasse branch: trunk, size: 4661
2019-03-23
14:04
ir: made it possible to use anonymous ANYTERM patterns in matching. file: [7f0d5c8e08] check-in: [61b4955ba0] user: achavasse branch: trunk, size: 4654
13:08
  • ir: terms can now contain a pointer to another term, for situations where a mutable terms needs to be shared by multiple expressions.
  • func: use a term pointer to store the function's content, so that we can distinguish a not-yet-parsed function from a non evaluated function value.
file: [773b788b99] check-in: [a742f106d4] user: achavasse branch: trunk, size: 4654
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: [db91a636d3] check-in: [23e0cd5dc7] user: achavasse branch: trunk, size: 4665
2019-02-14
20:35
Fix using statement not skipping newline markers before the expression. file: [c04a827ece] check-in: [0b6a7a10ee] user: achavasse branch: trunk, size: 4590
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: [2393f9f05a] check-in: [91eda406ef] user: achavasse branch: trunk, size: 4454
2019-02-10
15:29
llr, execute: implemented SetVar and GetVar. file: [a3173ee7b9] check-in: [5d287cd878] user: achavasse branch: trunk, size: 4377
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: [c8a1a39420] check-in: [bf6da54506] user: achavasse branch: trunk, size: 4377
2019-02-03
10:53
Fix a future potential issue when parsing using statements. file: [29cdb6b9fc] check-in: [85624bef14] user: achavasse branch: trunk, size: 4260
2019-02-02
18:01
Added: Implemented the builtin using statement. file: [b3d10e29ef] check-in: [79b3438adc] user: achavasse branch: trunk, size: 4250