Commit fd38489
committed
Defer param replacement when inferring GADT constraints
When we're infering the GADT constraints from comparing the type
arguments of pattern type `Foo[C, C]` against the type arguments of
scrutinee type `Foo[X, String]` we end up eagerly instantiating `C` to
`X` and then recording in the GADT constraints that `X =:= String`.
However, later when the SpaceEngine decomposes the scrutinee type
`Foo[X, String]` it discovers `Bar[String]`, but that doesn't match the
pattern type `Bar[X]`, because the GADT constraints are no longer
present.
Not replacing, though, seems to require (pos/gadt-TypeSafeLambda.scala)
not considering the widening of a type parameter to its equal bounds as
an approximation.1 parent 67f11ff commit fd38489
File tree
3 files changed
+40
-4
lines changed- compiler/src/dotty/tools/dotc/core
- tests/pos
3 files changed
+40
-4
lines changedLines changed: 8 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | | - | |
| 255 | + | |
| 256 | + | |
256 | 257 | | |
257 | 258 | | |
258 | 259 | | |
| |||
267 | 268 | | |
268 | 269 | | |
269 | 270 | | |
270 | | - | |
271 | | - | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
272 | 277 | | |
273 | 278 | | |
274 | 279 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1201 | 1201 | | |
1202 | 1202 | | |
1203 | 1203 | | |
1204 | | - | |
| 1204 | + | |
1205 | 1205 | | |
1206 | 1206 | | |
1207 | 1207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
0 commit comments