2012-01-03 13 views
5

Mi Scala proyecto 2.9.1 ahora emite 176 advertencias, todo casi exactamente como ésta:¿Qué significa la advertencia "no es un tipo simple" en Scala?

[warn] Not a simple type: 
[warn] Type: _29.type#source.type forSome { type _29.type <: Ontology.this.TruncationFunctor } (class class scala.tools.nsc.symtab.Types$ExistentialType) 
[warn] Transformed: class xsbti.api.Existential 

(Comenzó con menos, pero mi estilo de codificación parece provocar esta advertencia, ya que estoy cada vez más y más.)

¿Alguien puede explicarme qué significa esta advertencia y cómo debo evitarla? El compilador no emite ningún número de línea, por lo que ni siquiera estoy seguro de dónde viene exactamente.

+1

Sin duda, si se crea a medida que éstos código, puede averiguar qué es lo que les está causando. –

+2

Intente aislar la advertencia haciendo un pequeño archivo de prueba con fragmentos de su código. –

+0

@RexKerr, uno pensaría. Desafortunadamente, aparecieron durante refactorizaciones grandes de mi código (por ejemplo, al cambiar un montón de parámetros de tipo a miembros de tipo abstracto), durante los cuales los errores estaban ahogando la advertencia. Como todo compilado (con advertencias) y probado al final, no me detuve a investigar las advertencias. –

Respuesta

6

Esto parece ser específico de sbt donde una suposición acerca de los tipos es incorrecta y se emite un aviso. Parece que este fragmento de código se ejecuta cuando sbt necesita extraer algo de información de los archivos fuente.

Ver https://github.com/harrah/xsbt/blob/0.11/compile/interface/API.scala#L105

Mi conjetura salvaje sería una combinación de tipos existenciales y tipo de proyección está causando esto. Es posible que desee informar esto como un problema de sbt si puede restringirlo.

+0

Gracias, huynhjl, eso me tranquiliza. Dudo que invierta mucho tiempo, pero si encuentro un pequeño caso de prueba, me aseguraré de contribuir con el sbt. –

Cuestiones relacionadas