You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
spastorino opened this issue
Nov 29, 2022
· 6 comments
Labels
C-cleanupCategory: PRs that clean code up or issues documenting cleanup.E-mediumCall for participation: Medium difficulty. Experience needed to fix: Intermediate.
Right now we are moving (moderately large) Clauses around. What we often do in the compiler is to wrap such types in a newtype and an Interned (see ty::Ty, ty::Predicate and ty::Const) for examples. So what we could do is do the same thing with Clause. It does mean every time we match on it we need to add and call something like the kind method on Ty and Predicate to get at the inner Clause. There's also some naming issues, as you can't have both the interned type and the inner type be called ty::Clause. One solution could be to publicly reexport all Clause variants from the clause module, so we can write clause::Trait instead of Clause::Trait, and then rename the current Clause enum to ClauseKind. After that the Clause name is free again for use by the wrapper type.
each of these steps could be a separate PR, but should at least be a separate commit for easy review and rebases.
The plan again in a more structured manner (where each step is a commit):
(E-easy) reexport Clause's variants from the clause module and change all uses of Clause::Foo to clause::Foo and import the clause module where necessary.
(E-medium) rename Clause to ClauseKind and add the wrapper type called Clause, add Clause to the direct_interners! macro invocation, use mk_clause at all sites that create Clauses, add a kind method to the new Clause type, call kind at each site that matches on ClauseKind variants.
The text was updated successfully, but these errors were encountered:
oli-obk
added
E-easy
Call for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.
C-cleanup
Category: PRs that clean code up or issues documenting cleanup.
E-medium
Call for participation: Medium difficulty. Experience needed to fix: Intermediate.
and removed
E-easy
Call for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.
labels
Feb 9, 2023
reexport Clause's variants from the clause module and change all uses of Clause::Foo to clause::Foo and import the clause module where necessary.
I disagree with this step. We don't do that for constants or predicates and I believe that doing it for regions and types mostly happens due to historical reasons
I disagree with this step. We don't do that for constants or predicates and I believe that doing it for regions and types mostly happens due to historical reasons
I mostly dislike using ClauseKind everywhere. Since the interned clause type won't show up a lot, we could also just call it InternedClause and keep Clause as the name for the enum.
C-cleanupCategory: PRs that clean code up or issues documenting cleanup.E-mediumCall for participation: Medium difficulty. Experience needed to fix: Intermediate.
A perf regression was introduced by #104846, #104846 (comment)
Right now we are moving (moderately large)
Clause
s around. What we often do in the compiler is to wrap such types in a newtype and anInterned
(seety::Ty
,ty::Predicate
andty::Const
) for examples. So what we could do is do the same thing withClause
. It does mean every time we match on it we need to add and call something like thekind
method onTy
andPredicate
to get at the innerClause
. There's also some naming issues, as you can't have both the interned type and the inner type be calledty::Clause
. One solution could be to publicly reexport allClause
variants from theclause
module, so we can writeclause::Trait
instead ofClause::Trait
, and then rename the currentClause
enum toClauseKind
. After that theClause
name is free again for use by the wrapper type.each of these steps could be a separate PR, but should at least be a separate commit for easy review and rebases.
The plan again in a more structured manner (where each step is a commit):
E-easy
) reexportClause
's variants from theclause
module and change all uses ofClause::Foo
toclause::Foo
and import theclause
module where necessary.E-medium
) renameClause
toClauseKind
and add the wrapper type calledClause
, addClause
to thedirect_interners!
macro invocation, usemk_clause
at all sites that createClause
s, add akind
method to the newClause
type, callkind
at each site that matches onClauseKind
variants.The text was updated successfully, but these errors were encountered: