File tree 1 file changed +7
-2
lines changed
compiler/src/dotty/tools/dotc/typer
1 file changed +7
-2
lines changed Original file line number Diff line number Diff line change @@ -586,8 +586,13 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
586
586
lhsCore.tpe match {
587
587
case ref : TermRef =>
588
588
val lhsVal = lhsCore.denot.suchThat(! _.is(Method ))
589
- if (canAssign(lhsVal.symbol))
590
- assignType(cpy.Assign (tree)(lhs1, typed(tree.rhs, lhsVal.info)))
589
+ if (canAssign(lhsVal.symbol)) {
590
+ // lhsBounds: (T .. Any) as seen from lhs prefix, where T is the type of lhsVal.symbol
591
+ // This ensures we do the as-seen-from on T with variance -1. Test case neg/i2928.scala
592
+ val lhsBounds =
593
+ TypeBounds .lower(lhsVal.symbol.info).asSeenFrom(ref.prefix, lhsVal.symbol.owner)
594
+ assignType(cpy.Assign (tree)(lhs1, typed(tree.rhs, lhsBounds.loBound)))
595
+ }
591
596
else {
592
597
val pre = ref.prefix
593
598
val setterName = ref.name.setterName
You can’t perform that action at this time.
0 commit comments