Skip to content

Commit fbd69ad

Browse files
authored
Merge pull request #9447 from dotty-staging/fix-#9437
Fix #9437: Skip $asInstanceOf$ in error message
2 parents 86a92e4 + a26b2c1 commit fbd69ad

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

compiler/src/dotty/tools/dotc/reporting/messages.scala

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,12 +1279,20 @@ import ast.tpd
12791279

12801280
class MethodDoesNotTakeParameters(tree: tpd.Tree)(using Context)
12811281
extends TypeMsg(MethodDoesNotTakeParametersId) {
1282-
def methodSymbol: Symbol = tpd.methPart(tree).symbol
1282+
def methodSymbol: Symbol =
1283+
def recur(t: tpd.Tree): Symbol =
1284+
val sym = tpd.methPart(t).symbol
1285+
if sym == defn.Any_typeCast then
1286+
t match
1287+
case TypeApply(Select(qual, _), _) => recur(qual)
1288+
case _ => sym
1289+
else sym
1290+
recur(tree)
12831291

12841292
def msg = {
12851293
val more = if (tree.isInstanceOf[tpd.Apply]) " more" else ""
12861294
val meth = methodSymbol
1287-
val methStr = if (meth.exists) methodSymbol.showLocated else "expression"
1295+
val methStr = if (meth.exists) meth.showLocated else "expression"
12881296
em"$methStr does not take$more parameters"
12891297
}
12901298

tests/neg/i9437.check

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
-- [E050] Type Error: tests/neg/i9437.scala:7:10 -----------------------------------------------------------------------
2+
7 | println(x.f1()) // error
3+
| ^^^^
4+
| method selectDynamic in trait Selectable does not take parameters
5+
6+
longer explanation available when compiling with `-explain`

tests/neg/i9437.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Bag extends reflect.Selectable
2+
3+
@main def Test =
4+
val x = new Bag:
5+
val f1 = 23
6+
7+
println(x.f1()) // error

0 commit comments

Comments
 (0)