summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala4
-rw-r--r--test/files/pos/t9020.flags1
-rw-r--r--test/files/pos/t9020.scala10
3 files changed, 13 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index c8970727d4..d01e4f84ba 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -1039,11 +1039,11 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
// to non-continuation types.
if (tree.tpe <:< AnyTpe) pt.dealias match {
case TypeRef(_, UnitClass, _) => // (12)
- if (settings.warnValueDiscard)
+ if (!isPastTyper && settings.warnValueDiscard)
context.warning(tree.pos, "discarded non-Unit value")
return typedPos(tree.pos, mode, pt)(Block(List(tree), Literal(Constant(()))))
case TypeRef(_, sym, _) if isNumericValueClass(sym) && isNumericSubType(tree.tpe, pt) =>
- if (settings.warnNumericWiden)
+ if (!isPastTyper && settings.warnNumericWiden)
context.warning(tree.pos, "implicit numeric widening")
return typedPos(tree.pos, mode, pt)(Select(tree, "to" + sym.name))
case _ =>
diff --git a/test/files/pos/t9020.flags b/test/files/pos/t9020.flags
new file mode 100644
index 0000000000..efb2dd3e6f
--- /dev/null
+++ b/test/files/pos/t9020.flags
@@ -0,0 +1 @@
+-Ywarn-value-discard -Xfatal-warnings
diff --git a/test/files/pos/t9020.scala b/test/files/pos/t9020.scala
new file mode 100644
index 0000000000..16e31e2572
--- /dev/null
+++ b/test/files/pos/t9020.scala
@@ -0,0 +1,10 @@
+trait ValueDiscard[@specialized U] {
+ def u: U
+}
+/* Was:
+scalac-hash v2.11.5 -Ywarn-value-discard test/files/pos/t9020.scala
+test/files/pos/t9020.scala:2: warning: discarded non-Unit value
+ def u: U
+ ^
+one warning found
+*/