Не выводится скалярное предупреждение с включенными флагами "-Xlint:infer-any" или "-Ywarn-infer-any"
У нас есть следующий метод "изображения" с выводом любого типа возврата
class Attachment {
def images = if (isImage) new AttachmentImages(this)
}
В нашем build.sbt у нас включены следующие флаги:
scalacOptions in Compile ++= scalaCompilerOpts
lazy val scalaCompilerOpts = Seq(
"-Xmax-classfile-name", "240", // Need to override Xmax-classfile-name, because default is 255 (docker tolerates 240). Future versions
// of scala defaults to 128, so when we upgrade we can remove this. See https://github.com/scala/scala/pull/5088/files
"-target:jvm-1.8", // target JVM- IMPORTANT: If we upgrade, need to update this.
"-deprecation:false", // TURNED OFF: Emit warning and location for usages of deprecated APIs. Note: We dont want to fail builds if deprecation warnings.
"-encoding", "utf-8", // Specify character encoding used by source files.
"-explaintypes", // Explain type errors in more detail.
"-feature", // Emit warning and location for usages of features that should be imported explicitly.
"-language:existentials", // Existential types (besides wildcard types) can be written and inferred
"-language:experimental.macros", // Allow macro definition (besides implementation and application)
"-language:higherKinds", // Allow higher-kinded types
"-language:implicitConversions", // Allow definition of implicit functions called views
"-language:postfixOps", // Allow postfix operator
"-unchecked", // Enable additional warnings where generated code depends on assumptions.
//"-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access. TODO: DISABLED THIS BREAKS OUR CODE???: https://github.com/scala/bug/search?q=-Xcheckinit&type=Issues
"-Xfatal-warnings", // Fail the compilation if there are any warnings.
"-Xfuture", // Turn on future language features.
"-Xlint:adapted-args", // Warn if an argument list is modified to match the receiver.
"-Xlint:by-name-right-associative", // By-name parameter of right associative operator.
//"-Xlint:constant", // Evaluation of a constant arithmetic expression results in an error. TODO: available in 2.12
"-Xlint:delayedinit-select", // Selecting member of DelayedInit.
"-Xlint:doc-detached", // A Scaladoc comment appears to be detached from its element.
"-Xlint:inaccessible", // Warn about inaccessible types in method signatures.
"-Xlint:infer-any", // Warn when a type argument is inferred to be `Any`.
"-Xlint:missing-interpolator", // A string literal appears to be missing an interpolator id.
"-Xlint:-nullary-override", // Warn when non-nullary `def f()' overrides nullary `def f'. TODO: DISABLED: report bug with SBT, broken with @beanproperty (Renable when fixed)
"-Xlint:nullary-unit", // Warn when nullary methods return Unit.
"-Xlint:option-implicit", // Option.apply used implicit view.
"-Xlint:package-object-classes", // Class or object defined in package object.
"-Xlint:poly-implicit-overload", // Parameterized overloaded implicit methods are not visible as view bounds.
"-Xlint:private-shadow", // A private field (or class parameter) shadows a superclass field.
"-Xlint:stars-align", // Pattern sequence wildcard must align with sequence component.
"-Xlint:type-parameter-shadow", // A local type parameter shadows a type already in scope.
"-Xlint:unsound-match", // Pattern match may not be typesafe.
"-Ywarn-dead-code", // Warn when dead code is identified.
"-Yno-adapted-args", // Do not adapt an argument list (either by inserting () or creating a tuple) to match the receiver.
//"-Ypartial-unification", // Enable partial unification in type constructor inference TODO: available in 2.12
//"-Ywarn-extra-implicit", // Warn when more than one implicit parameter section is defined. TODO: available in 2.12
"-Ywarn-inaccessible", // Warn about inaccessible types in method signatures.
"-Ywarn-infer-any", // Warn when a type argument is inferred to be `Any`.
"-Ywarn-nullary-override:false", // Warn when non-nullary `def f()' overrides nullary `def f'. TODO: DISABLED report sbt bug, we have an issue with @BeanProperty vars see HoursOfOperation center as example.
"-Ywarn-nullary-unit", // Warn when nullary methods return Unit.
"-Ywarn-numeric-widen", // Warn when numerics are widened.
"-Ywarn-unused-import", // Warn if an import selector is not referenced.
"-Ywarn-value-discard" // Warn when non-Unit expression results are unused. TODO: discuss solutions: unnamed value: val _ = or explicit unit value (); i prefer latter, but former is one line so...?
// TODO: available in 2.12 - also, cold fusion and hibernate empty constructors might cause a problem for some unused warnings.
/*"-Ywarn-unused:implicits", // Warn if an implicit parameter is unused.
"-Ywarn-unused:locals", // Warn if a local definition is unused.
"-Ywarn-unused:params", // Warn if a value parameter is unused.
"-Ywarn-unused:patvars", // Warn if a variable bound in a pattern is unused.
"-Ywarn-unused:privates"*/ // Warn if a private member is unused.
)
Как видно выше, в scalacOptions Seq включены флаги -Xlint:infer-any и -Ywarn-infer-any. Насколько я понимаю, предупреждение должно было быть сделано. Почему компилятор не жаловался? (версия Scala 2.11.8)
спасибо, любая помощь приветствуется!
ps другие предупреждения для других типов запахов кода работают, только этот конкретный случай озадачивает меня.