[NOTES] Upcoming Traits Work

Possible path

improve higher-ranked types, lifetimes (needs issue)

Reason: 
  • Chalk adopted an improved way of handling higher-ranked terms
  • This will fix some bugs in the existing system (e.g., #32330) but also allows us to be much more expressive
  • Needed, in particular, to support Generic Associated Types (GATs)
  • Much work has been done here, but there is more to do

Total estimate: 84 person-hours

Steps:
  • add a way to represent bound types in rustc
  • Estimate: 40 person-hours
  • prepare variant of lexical solver using universes instead
  • Estimate: 24 person-hours
  • integrate universes into canonicalization (48696)
  • Estimate: 24 person-hours

integrate chalk under a flag (48049)

Reason:
  • Gateway to many features:
  • GATs, specialization, implied bounds (link to RFCs)
  • Need to have something we can test to help direct further work
  • Initial goal is to check some very simple Rust programs using Chalk

  • add non-normalized projection variant (53683)
  • Estimate: 24 person-hours
  • finish lowering rules (49177)
  • Estimate: 16 person-hours
  • implement very naive procedure to find the lowered rules for a given domain goal
  • Estimate: 24 person-hours
  • implement non-naive procedure for finding lowered rules for a given domain goal, integrating with incremental compilation
  • Estimate: 40 person-hours
  • implement unification procedures in integration
  • Estimate: 24 person-hours
  • implement other bits of integration (fill in panics)
  • Estimate: 24 person-hours

preliminary support for GATs (44265)

  • a lot of people have been asking for this!
  • see tracking issue, …
  • parsing for GATs: fix tests (comment)
  • Estimated time: 24 person-hours
  • improve test coverage (comment)
  • Estimated time: 16 person-hours
  • Lower information to HIR and propagate to the chalk rules
  • Estimated time: 32 person-hours