Skip to content

Various frontend features

Lennard Gäher requested to merge lennard/frontend-refactoring into main

Another huge MR of assorted features:

  • start refactoring the lifetime annotation generation to make it more understandable and debuggable. This isn't fully done yet and will be further improved in subsequent MRs.
  • add the #linktime specifier for rr::requires clauses for requirements that have to be fulfilled at linking time, not by the caller of the function.
  • refactor the TypeTranslator to work without the local function environment. Type translation for the local environment is factored into a LocalTypeTranslator. This also fixes a few bugs where we accidentally used the local environment when the type we were translating was outside the function scope.
  • normalize types before translating them, so that we can handle type aliases properly
  • export specifications for impl Trait for ... blocks in interface files. Since it's hard to uniquely identify implementations in the presence of specialization etc, this is a bit limited currently (see the documentation in spec_format.md)
  • translate &str to () to handle cases where it's in the code but unreachable.
  • fix some warnings

Merge request reports