Skip to content

Commit 614e5ca

Browse files
committed
Revert "Closes scala#1731 by fixing error message for overloaded method without re… (scala#2823)"
This reverts commit 91d3ec1.
1 parent 67e34d7 commit 614e5ca

File tree

4 files changed

+14
-45
lines changed

4 files changed

+14
-45
lines changed

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

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,29 +1249,20 @@ object messages {
12491249
|""".stripMargin
12501250
}
12511251

1252-
case class OverloadedOrRecursiveMethodNeedsResultType private (termName: String)(implicit ctx: Context)
1252+
case class OverloadedOrRecursiveMethodNeedsResultType(tree: Names.TermName)(implicit ctx: Context)
12531253
extends Message(OverloadedOrRecursiveMethodNeedsResultTypeID) {
12541254
val kind = "Syntax"
1255-
val msg = hl"""overloaded or recursive method $termName needs return type"""
1255+
val msg = hl"""overloaded or recursive method ${tree} needs return type"""
12561256
val explanation =
1257-
hl"""Case 1: $termName is overloaded
1258-
|If there are multiple methods named `$termName` and at least one definition of
1257+
hl"""Case 1: ${tree} is overloaded
1258+
|If there are multiple methods named `${tree.name}` and at least one definition of
12591259
|it calls another, you need to specify the calling method's return type.
12601260
|
1261-
|Case 2: $termName is recursive
1262-
|If `$termName` calls itself on any path, you need to specify its return type.
1261+
|Case 2: ${tree} is recursive
1262+
|If `${tree.name}` calls itself on any path, you need to specify its return type.
12631263
|""".stripMargin
12641264
}
12651265

1266-
object OverloadedOrRecursiveMethodNeedsResultType {
1267-
def apply[T >: Trees.Untyped](tree: NameTree[T])(implicit ctx: Context)
1268-
: OverloadedOrRecursiveMethodNeedsResultType =
1269-
OverloadedOrRecursiveMethodNeedsResultType(tree.name.show)(ctx)
1270-
def apply(symbol: Symbol)(implicit ctx: Context)
1271-
: OverloadedOrRecursiveMethodNeedsResultType =
1272-
OverloadedOrRecursiveMethodNeedsResultType(symbol.name.show)(ctx)
1273-
}
1274-
12751266
case class RecursiveValueNeedsResultType(tree: Names.TermName)(implicit ctx: Context)
12761267
extends Message(RecursiveValueNeedsResultTypeID) {
12771268
val kind = "Syntax"
@@ -1369,8 +1360,7 @@ object messages {
13691360
|"""
13701361
}
13711362

1372-
case class MethodDoesNotTakeParameters(tree: tpd.Tree, methPartType: Types.Type)
1373-
(err: typer.ErrorReporting.Errors)(implicit ctx: Context)
1363+
case class MethodDoesNotTakeParameters(tree: tpd.Tree, methPartType: Types.Type)(err: typer.ErrorReporting.Errors)(implicit ctx: Context)
13741364
extends Message(MethodDoesNotTakeParametersId) {
13751365
private val more = tree match {
13761366
case Apply(_, _) => " more"

compiler/src/dotty/tools/dotc/typer/ErrorReporting.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ object ErrorReporting {
3232
if (cx.mode is Mode.InferringReturnType) {
3333
cx.tree match {
3434
case tree: untpd.DefDef if !tree.tpt.typeOpt.exists =>
35-
OverloadedOrRecursiveMethodNeedsResultType(tree)
35+
OverloadedOrRecursiveMethodNeedsResultType(tree.name)
3636
case tree: untpd.ValDef if !tree.tpt.typeOpt.exists =>
3737
RecursiveValueNeedsResultType(tree.name)
3838
case _ =>

compiler/src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2032,13 +2032,7 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
20322032
else
20332033
tree
20342034
case _ => tryInsertApplyOrImplicit(tree, pt) {
2035-
pt.resType match {
2036-
case IgnoredProto(WildcardType(optBounds))
2037-
if (optBounds == NoType) && (pt.args.size == tree.productArity) =>
2038-
errorTree(tree, OverloadedOrRecursiveMethodNeedsResultType(tree.symbol))
2039-
case resType =>
2040-
errorTree(tree, MethodDoesNotTakeParameters(tree, methPart(tree).tpe)(err))
2041-
}
2035+
errorTree(tree, MethodDoesNotTakeParameters(tree, methPart(tree).tpe)(err))
20422036
}
20432037
}
20442038

compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ class ErrorMessagesTests extends ErrorMessagesTest {
193193
assertTrue("expected trait", isTrait)
194194
}
195195

196-
@Test def overloadedMethodNeedsReturnType = {
196+
@Test def overloadedMethodNeedsReturnType =
197197
checkMessagesAfter("frontend") {
198198
"""
199199
|class Scope() {
@@ -206,25 +206,10 @@ class ErrorMessagesTests extends ErrorMessagesTest {
206206
implicit val ctx: Context = ictx
207207

208208
assertMessageCount(1, messages)
209-
val OverloadedOrRecursiveMethodNeedsResultType(treeName) :: Nil = messages
210-
assertEquals("foo", treeName)
209+
val OverloadedOrRecursiveMethodNeedsResultType(tree) :: Nil = messages
210+
assertEquals("foo", tree.show)
211211
}
212212

213-
214-
checkMessagesAfter("frontend") {
215-
"""
216-
|case class Foo[T](x: T)
217-
|object Foo { def apply[T]() = Foo(null.asInstanceOf[T]) }
218-
""".stripMargin
219-
}.expect { (ictx, messages) =>
220-
implicit val ctx: Context = ictx
221-
222-
assertMessageCount(1, messages)
223-
val OverloadedOrRecursiveMethodNeedsResultType(treeName2) :: Nil = messages
224-
assertEquals("Foo", treeName2)
225-
}
226-
}
227-
228213
@Test def recursiveMethodNeedsReturnType =
229214
checkMessagesAfter("frontend") {
230215
"""
@@ -237,8 +222,8 @@ class ErrorMessagesTests extends ErrorMessagesTest {
237222
implicit val ctx: Context = ictx
238223

239224
assertMessageCount(1, messages)
240-
val OverloadedOrRecursiveMethodNeedsResultType(treeName) :: Nil = messages
241-
assertEquals("i", treeName)
225+
val OverloadedOrRecursiveMethodNeedsResultType(tree) :: Nil = messages
226+
assertEquals("i", tree.show)
242227
}
243228

244229
@Test def recursiveValueNeedsReturnType =

0 commit comments

Comments
 (0)