2012-01-03 13 views
5

mio Scala progetto 2.9.1 ora emette 176 avvertimenti, tutti quasi esattamente come questo:Che cosa significa "non un tipo semplice" significa in 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 

(E 'iniziato con meno, ma il mio stile di codifica sembra provocare questo avvertimento, come sto diventando sempre altro.)

Qualcuno può spiegarmi cosa significa questo avvertimento e come dovrei evitarlo? Il compilatore non emette alcun numero di linea, quindi non sono nemmeno sicuro da dove provenga.

+1

Sicuramente se si crea questi come si codice, si può capire che cosa è che li sta causando. –

+2

Prova ad isolare l'avviso creando un piccolo file di prova con frammenti di codice. –

+0

@RexKerr, si potrebbe pensare. Sfortunatamente sono apparsi durante i grandi refactoring del mio codice (ad esempio quando si cambiava un intero lotto di parametri di tipo per i membri di tipo astratti), durante i quali gli errori stavano sommergendo l'avviso. Dal momento che tutto è stato compilato (con avvertenze) e testato alla fine, non mi sono fermato a indagare sugli avvertimenti. –

risposta

6

Questo sembra essere specifico per sbt in cui un'assunzione sui tipi non è corretta e un avviso emesso. Sembra che questo pezzo di codice funzioni quando sbt ha bisogno di estrarre alcune informazioni dai file sorgente.

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

La mia supposizione sarebbe una combinazione di tipi esistenziali e tipo di proiezione sta causando questo. Potresti segnalare questo come un problema sbt se puoi restringerlo.

+0

Grazie, huynhjl, che mi fa riposare la mente. Dubito che investirò molto tempo, ma se dovessi imbattermi in un piccolo test, sarei sicuro di contribuire a sbt. –