File tree Expand file tree Collapse file tree 5 files changed +43
-4
lines changed
test/dotty/tools/dotc/reporting Expand file tree Collapse file tree 5 files changed +43
-4
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ import util.Property
1717import collection .mutable
1818import ast .tpd ._
1919import reporting .trace
20+ import reporting .diagnostic .Message
2021
2122trait TypeOps { this : Context => // TODO: Make standalone object.
2223
@@ -315,7 +316,7 @@ trait TypeOps { this: Context => // TODO: Make standalone object.
315316 def dynamicsEnabled =
316317 featureEnabled(defn.LanguageModuleClass , nme.dynamics)
317318
318- def testScala2Mode (msg : => String , pos : Position , rewrite : => Unit = ()) = {
319+ def testScala2Mode (msg : => Message , pos : Position , rewrite : => Unit = ()) = {
319320 if (scala2Mode) {
320321 migrationWarning(msg, pos)
321322 rewrite
Original file line number Diff line number Diff line change @@ -106,7 +106,8 @@ public enum ErrorMessageID {
106106 ClassAndCompanionNameClashID ,
107107 TailrecNotApplicableID ,
108108 FailureToEliminateExistentialID ,
109- OnlyFunctionsCanBeFollowedByUnderscoreID
109+ OnlyFunctionsCanBeFollowedByUnderscoreID ,
110+ MissingEmptyArgumentListID
110111 ;
111112
112113 public int errorNumber () {
Original file line number Diff line number Diff line change @@ -1847,4 +1847,22 @@ object messages {
18471847 hl """ The syntax ${" x _" } is no longer supported if ${" x" } is not a function.
18481848 |To convert to a function value, you need to explicitly write ${" () => x" }"""
18491849 }
1850+
1851+ case class MissingEmptyArgumentList (method : Symbol )(implicit ctx : Context )
1852+ extends Message (MissingEmptyArgumentListID ) {
1853+ val kind = " Syntax"
1854+ val msg = hl " $method must be called with ${" ()" } argument "
1855+ val explanation = {
1856+ val codeExample =
1857+ """ def next(): T = ...
1858+ |next // is expanded to next()"""
1859+
1860+ hl """ Previously an empty argument list () was implicitly inserted when calling a nullary method without arguments. E.g.
1861+ |
1862+ | $codeExample
1863+ |
1864+ |In Dotty, this idiom is an error. The application syntax has to follow exactly the parameter syntax.
1865+ |Excluded from this rule are methods that are defined in Java or that override methods defined in Java. """
1866+ }
1867+ }
18501868}
Original file line number Diff line number Diff line change @@ -1908,7 +1908,7 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
19081908 def methodStr = err.refStr(methPart(tree).tpe)
19091909
19101910 def missingArgs (mt : MethodType ) = {
1911- ctx.error(em " missing arguments for $methodStr " , tree.pos)
1911+ ctx.error(MissingEmptyArgumentList (methPart(tree).symbol) , tree.pos)
19121912 tree.withType(mt.resultType)
19131913 }
19141914
@@ -2076,7 +2076,7 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
20762076 def isAutoApplied (sym : Symbol ): Boolean = {
20772077 sym.isConstructor ||
20782078 sym.matchNullaryLoosely ||
2079- ctx.testScala2Mode(em " ${sym.showLocated} requires () argument " , tree.pos,
2079+ ctx.testScala2Mode(MissingEmptyArgumentList (sym) , tree.pos,
20802080 patch(tree.pos.endPos, " ()" ))
20812081 }
20822082
Original file line number Diff line number Diff line change @@ -1069,4 +1069,23 @@ class ErrorMessagesTests extends ErrorMessagesTest {
10691069 val OnlyFunctionsCanBeFollowedByUnderscore (pt) :: Nil = messages
10701070 assertEquals(" String(n)" , pt.show)
10711071 }
1072+
1073+ @ Test def missingEmptyArgumentList =
1074+ checkMessagesAfter(" frontend" ) {
1075+ """
1076+ |class Test {
1077+ | def greet(): String = "Hello"
1078+ | def main(args: Array[String]): Unit = {
1079+ | greet
1080+ | }
1081+ |}
1082+ """ .stripMargin
1083+ }
1084+ .expect { (ictx, messages) =>
1085+ implicit val ctx : Context = ictx
1086+
1087+ assertMessageCount(1 , messages)
1088+ val MissingEmptyArgumentList (method) :: Nil = messages
1089+ assertEquals(" method greet" , method.show)
1090+ }
10721091}
You can’t perform that action at this time.
0 commit comments