Skip to content

Conversation

@nikomatsakis
Copy link
Contributor

This removes the last use of methods to mutate DepTrackingMap, at least outside the ty::maps module. (cc #40614) This will also get nicer (and more efficient) with the red-green algorithm, but for now it's ok.

Fixes #40614

r? @michaelwoerister

There are now two queries: crate and item. The crate one computes the
variance of all items in the crate; it is sort of an implementation
detail, and not meant to be used. The item one reads from the crate one,
synthesizing correct deps in lieu of the red-green algorithm.

At the same time, remove the `variance_computed` flag, which was a
horrible hack used to force invariance early on (e.g. when type-checking
constants). This is only needed because of trait applications, and
traits are always invariant anyway. Therefore, we now change to take
advantage of the query system:

- When asked to compute variances for a trait, just return a vector
  saying 'all invariant'.
- Remove the corresponding "inferreds" from traits, and tweak the
  constraint generation code to understand that traits are always
  inferred.
@nikomatsakis
Copy link
Contributor Author

looks like we still got some bugs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants