Skip to content

Commit d84d6d6

Browse files
committed
Add FIXMEs regarding TypeVar#resetInst potentially breaking caching
I'm afraid we'll have to get rid of it if we want our caches to be correct, but I don't have the time to look into it right now.
1 parent 5fb5ebe commit d84d6d6

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

Diff for: compiler/src/dotty/tools/dotc/core/Types.scala

+5
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ object Types {
109109
/** Is this type still provisional? This is the case if the type contains, or depends on,
110110
* uninstantiated type variables or type symbols that have the Provisional flag set.
111111
* This is an antimonotonic property - once a type is not provisional, it stays so forever.
112+
*
113+
* FIXME: The semantic of this flag are broken by the existence of `TypeVar#resetInst`.
112114
*/
113115
def isProvisional(using Context): Boolean = mightBeProvisional && testProvisional
114116

@@ -4739,6 +4741,9 @@ object Types {
47394741
* is different from the variable's creation state (meaning unrolls are possible)
47404742
* in the current typer state.
47414743
*
4744+
* FIXME: the "once" in the statement above is not true anymore now that `resetInst`
4745+
* exists, this is problematic for caching (see `Type#isProvisional`).
4746+
*
47424747
* @param origin the parameter that's tracked by the type variable.
47434748
* @param creatorState the typer state in which the variable was created.
47444749
* @param initNestingLevel the initial nesting level of the type variable. (c.f. nestingLevel)

0 commit comments

Comments
 (0)