2011-06-29 20 views
9

Yo uso sbt 0.10.¿Cómo se puede anexar una opción del compilador Scala a scalacOptions en sbt?

tengo la siguiente configuración en .sbt archivo:

scalacOptions += "-usejavacp" 

El problema es que cuando el compilador Scala conseguir ejecutado y el scalacOptions se establece:

[debug] Calling Scala compiler with arguments (CompilerInterface): 
[debug]   -usejavacp 
[debug]   -d 
[debug]   D:\project\target\scala-2.8.1.final\classes 
[debug]   -bootclasspath 
... 

el parámetro -usejavacp aparece antes de la real Scala jar que resulta en este error:

scala.collection.mutable.ListBuffer does not take type parameters 

¿Hay alguna forma en la que el parámetro se anexe y no se anexe? También probé el ++= Array("-usejavacp") pero el resultado es el mismo.

Respuesta

7

Si nos fijamos here, verá el siguiente comentario:

key += value is equivalent to key ~= (_ :+ value) or key <<= key(_ :+ value)

cual, curiosamente, parece contradecir el orden que está viendo. Creo que vale la pena abrir un problema y, mientras tanto, puedes jugar con la sintaxis completa para ver si puedes lograr lo que necesitas.

2

Para responder directamente a su pregunta, la lista de opciones de scalac personalizada, proporcionada por la configuración scalacOptions, es prepended a las opciones para controlar la ruta de clases, el directorio de salida y los archivos de origen.

Presumiblemente está utilizando -usejavacp para usar el compilador o intérprete de Scala mediante programación. Hay una entrada para esto en el SBT FAQ.