File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -826,7 +826,8 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
826826 if qual.tpe.derivesFrom(defn.SelectableClass ) && ! isDynamicExpansion(tree)
827827 && ! pt.isInstanceOf [FunOrPolyProto ] && pt != LhsProto
828828 then
829- val fieldsType = qual.tpe.select(tpnme.Fields ).dealias.simplified
829+ val pre = if ! TypeOps .isLegalPrefix(qual.tpe) then SkolemType (qual.tpe) else qual.tpe
830+ val fieldsType = pre.select(tpnme.Fields ).dealias.simplified
830831 val fields = fieldsType.namedTupleElementTypes
831832 typr.println(i " try dyn select $qual, $selName, $fields" )
832833 fields.find(_._1 == selName) match
Original file line number Diff line number Diff line change 1+ import scala .language .experimental .namedTuples
2+ import NamedTuple .{AnyNamedTuple , NamedTuple }
3+
4+ trait Foo extends Selectable :
5+ val f : Any
6+ type Fields = (myfield : f.type )
7+ def selectDynamic (name : String ): Any
8+
9+ object Test :
10+ val elem1 : Foo { val f : Int } = ???
11+ def elem2 : Foo { val f : Int } = ???
12+
13+ def test : Unit =
14+ val a : Int = elem1.myfield // OK
15+ val b : Int = elem2.myfield // error: value myfield is not a member of Foo { val f: Int }
You can’t perform that action at this time.
0 commit comments