scala コンパイラの Y 警告を使用しようとしていますが、正しく行っているとは思えません。以下の例では、nums は使用されていないため、 -Ywarn-value-discard がその警告を出力することを期待しています。2 つの if 条件があり、一方は他方の内部にネストされています。子 if の条件は親の条件と正反対であるため、その中のすべてがデッド コードです。しかし、 -Ywarn-dead-code はそれに対して警告しません。誰かが私が間違っているかもしれないことを提案してもらえますか? 任意のポインタをいただければ幸いです。
object DeadCodeWarn{
def main( args: Array[ String ] ) {
val nums = 1 to 100
//There should be a warning for squares
//as its a non-unit expression thats not
//used in any computation. Y-warn-value-discard
val squares = nums.map( x => x * x )
if( nums.length == 100 ){
println( "should be printed" )
if( nums.length !=100 )
{
//-Ywarn-dead-code
println( "Dead code, so should be warned against" )
}
}
}
}
$scalac -Xlint -Ywarn-all DeadCodeWarn.scala
黙って成功します。