@@ -596,13 +596,27 @@ class Typer extends Namer
596596 .withSpan(tree.span)
597597 .computeNullable()
598598
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)
601606
602607 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
606620 }
607621
608622 def selectWithFallback (fallBack : Context ?=> Tree ) =
0 commit comments