@@ -596,13 +596,27 @@ class Typer extends Namer
596
596
.withSpan(tree.span)
597
597
.computeNullable()
598
598
599
- def typeSelectOnType (qual : untpd.Tree )(using Context ) =
600
- typedSelect(untpd.cpy.Select (tree)(qual, tree.name.toTypeName), pt)
599
+ def javaSelectOnType (qual : Tree )(using Context ) =
600
+ // semantic name conversion for `O$` in java code
601
+ if ! qual.symbol.is(JavaDefined ) then
602
+ val tree2 = untpd.cpy.Select (tree)(qual, tree.name.unmangleClassName)
603
+ assignType(tree2, qual)
604
+ else
605
+ assignType(cpy.Select (tree)(qual, tree.name), qual)
601
606
602
607
def tryJavaSelectOnType (using Context ): Tree = tree.qualifier match {
603
- case Select (qual, name) => typeSelectOnType(untpd.Select (qual, name.toTypeName))
604
- case Ident (name) => typeSelectOnType(untpd.Ident (name.toTypeName))
605
- case _ => errorTree(tree, " cannot convert to type selection" ) // will never be printed due to fallback
608
+ case sel @ Select (qual, name) =>
609
+ val qual1 = untpd.cpy.Select (sel)(qual, name.toTypeName)
610
+ val qual2 = typedType(qual1, WildcardType )
611
+ javaSelectOnType(qual2)
612
+
613
+ case id @ Ident (name) =>
614
+ val qual1 = untpd.cpy.Ident (id)(name.toTypeName)
615
+ val qual2 = typedType(qual1, WildcardType )
616
+ javaSelectOnType(qual2)
617
+
618
+ case _ =>
619
+ errorTree(tree, " cannot convert to type selection" ) // will never be printed due to fallback
606
620
}
607
621
608
622
def selectWithFallback (fallBack : Context ?=> Tree ) =
0 commit comments