[x] complete the trait lowering step, specifically the synthesis of the accessors
[ ] represent record literals in Lo-AST & HIR and lower & resolve record literals
[x] lower trait literals to record literals (& add FIXME for rejecting attempts to construct records through trait literals)
[x] lower given-declarations to function decls + @context (not part of the surface lang) + record literal
[x] get rid of parse_associated_declaration, just parse_declaration inside of data decls & reject non-functions in the lowerer (use-decls: todo, rest: invalid)
[ ] write a bunch of new UI tests and finish updating the older ones
[x] support the pattern let _ (i.e. LocalBinder::Discarded) in the lowerer & the resolver (currently: crash in the lowerer)
[x] fix attribute validation which got trashed in this patch
in some shape or form we want to support the newly added syntactic constructs (wildcards, record & trait decls, etc.)
the question is how fine-grained, leading to the next point
bitfields are not a great solution for attribute targets and it became more and more obvious
they are not versatile, flexible or extensible enough cmp. to normal Rust functions
we always wanted to disallow @public on the root module but couldn't (in this system which I tried to largely stick to)
special care needs to be taken for associated decls (constructors, record & trait fields), esp. wrt. @public
the current system is awkward
[x] define @given and reject it in the lowerer as unimplemented
[ ] (not sure if blocking, otherwise as FIXME) lower attributes on record & trait fields to … parameter attributes
[ ] fix the most offensive @Temporarys & @Tasks intro'd in this PR
start writing up some sort of reference / specification since the semantics are a tad more complicated & it starts getting harder to keep everything in my head esp. when stuff changes so drastically so quickly
perform similar refactorings to the rest of the code base
inline error module for -> Diagnostic functions
(maybe) split into smaller fns (only where sensible ofc)
proper documenter support for record & trait decls
reconstruct them to their pre-lowered form
render docs & other attrs on record & trait fields
documenter support for param docs (which are a natural consequence of supporting field attrs via param attrs)
lower trait literals to record literals (& add FIXME for rejecting attempts to construct records through trait literals)@context
(not part of the surface lang) + record literalparse_associated_declaration
, justparse_declaration
inside of data decls & reject non-functions in the lowerer (use-decls: todo, rest: invalid)let _
(i.e.LocalBinder::Discarded
) in the lowerer & the resolver (currently: crash in the lowerer)@public
on the root module but couldn't (in this system which I tried to largely stick to)@public
define@given
and reject it in the lowerer as unimplementedFIXME
) lower attributes on record & trait fields to … parameter attributes@Temporary
s &@Task
s intro'd in this PR