summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Iry <jamesiry@gmail.com>2013-10-29 12:44:59 -0700
committerJames Iry <jamesiry@gmail.com>2013-10-29 12:44:59 -0700
commit9b8d108ed7cb1a049e4e8500b6896e9554328aab (patch)
tree70b0e1340094c417724762896c7db675a7905d1f
parent2c1e9af40e252bd9ed5bfe4305991ee6f7d25636 (diff)
parentbc475036c4cae5e9534ee3f9985e4e7a848e4b67 (diff)
downloadscala-9b8d108ed7cb1a049e4e8500b6896e9554328aab.tar.gz
scala-9b8d108ed7cb1a049e4e8500b6896e9554328aab.tar.bz2
scala-9b8d108ed7cb1a049e4e8500b6896e9554328aab.zip
Merge pull request #3076 from soc/SI-7605-deprecate-procedures
SI-7605 Deprecate procedure syntax
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala10
-rw-r--r--test/files/neg/t7605-deprecation.check12
-rw-r--r--test/files/neg/t7605-deprecation.flags1
-rw-r--r--test/files/neg/t7605-deprecation.scala5
4 files changed, 27 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 1d5f35b7d6..07938ec3df 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -2512,7 +2512,11 @@ self =>
val vparamss = paramClauses(nme.CONSTRUCTOR, classContextBounds map (_.duplicate), ofCaseClass = false)
newLineOptWhenFollowedBy(LBRACE)
val rhs = in.token match {
- case LBRACE => atPos(in.offset) { constrBlock(vparamss) }
+ case LBRACE => {
+ if (settings.future)
+ deprecationWarning(in.offset, "Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`.")
+ atPos(in.offset) { constrBlock(vparamss) }
+ }
case _ => accept(EQUALS) ; atPos(in.offset) { constrExpr(vparamss) }
}
DefDef(mods, nme.CONSTRUCTOR, List(), vparamss, TypeTree(), rhs)
@@ -2538,10 +2542,14 @@ self =>
var restype = fromWithinReturnType(typedOpt())
val rhs =
if (isStatSep || in.token == RBRACE) {
+ if (settings.future)
+ deprecationWarning(in.lastOffset, "Procedure syntax is deprecated. Convert procedure to method by adding `: Unit`.")
if (restype.isEmpty) restype = scalaUnitConstr
newmods |= Flags.DEFERRED
EmptyTree
} else if (restype.isEmpty && in.token == LBRACE) {
+ if (settings.future)
+ deprecationWarning(in.offset, "Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`.")
restype = scalaUnitConstr
blockExpr()
} else {
diff --git a/test/files/neg/t7605-deprecation.check b/test/files/neg/t7605-deprecation.check
new file mode 100644
index 0000000000..9c466c058c
--- /dev/null
+++ b/test/files/neg/t7605-deprecation.check
@@ -0,0 +1,12 @@
+t7605-deprecation.scala:2: warning: Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`.
+ def this(i: Int) { this() }
+ ^
+t7605-deprecation.scala:3: warning: Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`.
+ def bar {}
+ ^
+t7605-deprecation.scala:4: warning: Procedure syntax is deprecated. Convert procedure to method by adding `: Unit`.
+ def baz
+ ^
+error: No warnings can be incurred under -Xfatal-warnings.
+three warnings found
+one error found
diff --git a/test/files/neg/t7605-deprecation.flags b/test/files/neg/t7605-deprecation.flags
new file mode 100644
index 0000000000..0a7cb7d202
--- /dev/null
+++ b/test/files/neg/t7605-deprecation.flags
@@ -0,0 +1 @@
+-deprecation -Xfuture -Xfatal-warnings
diff --git a/test/files/neg/t7605-deprecation.scala b/test/files/neg/t7605-deprecation.scala
new file mode 100644
index 0000000000..4a7dcd26d6
--- /dev/null
+++ b/test/files/neg/t7605-deprecation.scala
@@ -0,0 +1,5 @@
+abstract class Foo {
+ def this(i: Int) { this() }
+ def bar {}
+ def baz
+} \ No newline at end of file