diff options
author | Martin Odersky <odersky@gmail.com> | 2007-03-08 17:17:24 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-03-08 17:17:24 +0000 |
commit | 0790935d101215532ef025c8da80f2e586a7acaf (patch) | |
tree | 35471cdfee6a82bca35db9f3c113cd87f92cfe87 /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | 3e35bb38883427cdbf8b93d0a29089c0dfe7fce9 (diff) | |
download | scala-0790935d101215532ef025c8da80f2e586a7acaf.tar.gz scala-0790935d101215532ef025c8da80f2e586a7acaf.tar.bz2 scala-0790935d101215532ef025c8da80f2e586a7acaf.zip |
added option -Xwarndeadcode
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 5962ef7d99..28431bf328 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -625,6 +625,9 @@ trait Typers requires Analyzer { } else if (!context.undetparams.isEmpty && (mode & POLYmode) == 0) { // (9) instantiate(tree, mode, pt) } else if (tree.tpe <:< pt) { + if (settings.Xwarndeadcode.value && + tree.tpe.symbol == AllClass && pt != WildcardType && pt.symbol != AllClass) + context.unit.warning (tree.pos, "dead code") tree } else { if ((mode & PATTERNmode) != 0) { @@ -652,8 +655,8 @@ trait Typers requires Analyzer { // (13); the condition prevents chains of views if (settings.debug.value) log("inferring view from "+tree.tpe+" to "+pt) val coercion = inferView(tree.pos, tree.tpe, pt, true) - // convert forward views of delegate types into closures wrapped around - // the delegate's apply method (the "Invoke" method, which was translated into apply) + // convert forward views of delegate types into closures wrapped around + // the delegate's apply method (the "Invoke" method, which was translated into apply) if (forMSIL && coercion != null && isCorrespondingDelegate(tree.tpe, pt)) { val meth: Symbol = tree.tpe.member(nme.apply) if(settings.debug.value) @@ -1336,7 +1339,10 @@ trait Typers requires Analyzer { case _ => val localTyper = if (inBlock || (stat.isDef && !stat.isInstanceOf[LabelDef])) this else newTyper(context.make(stat, exprOwner)) - localTyper.typed(stat) + val stat1 = localTyper.typed(stat) + if (settings.Xwarndeadcode.value && stat1.tpe.symbol == AllClass) + context.unit.warning(stat1.pos, "dead code") + stat1 } } def accesses(accessor: Symbol, accessed: Symbol) = |