Domanda

Sfondo

Ho un progetto Scala gestito da SBT che utilizza Layout del progetto SBT usuale per progetti Scala con macro, ovvero un sottoprogetto che contiene i macro un progetto principale che è l'applicazione effettiva e che dipende dal sottoprogetto macro. Le macro sono Annotazioni macro che, in sostanza, generare oggetti compagni per classi regolari. Gli oggetti Companion generati dichiarano, tra gli altri membri, applicano / metodi non apply.

Ho usato il plugin SBT-IDEA per generare un corrispondente progetto Intellij Idea, e io uso la console SBT dal plugin SBT IDEA per compilare ed eseguire la mia applicazione Scala.

Tutto funziona più o meno bene, tranne che gli oggetti compagni generati e, soprattutto, i loro membri come applicare / disposizione non applicano, non sono riconosciuti dall'idea. Quindi, ottengo una linea ondulata ovunque io, ad es., Un metodo applicabile.

La mia configurazione è Intellij Idea CE 133.471 con i plugin SBT 1.5.1 e Scala 0.28.363 su Windows 7 x64.

Domande

Come posso ottenere Illij Idea per riconoscere il codice (classi, oggetti, metodi, ...) che è stato generato da Macro Scala (macro Annotazioni, da precisione)?

sono altri IDES, E.G., ECLIPSE, noto per funzionare meglio in una tale impostazione?

Questa domanda (che è meno dettagliata) essenzialmente chiede lo stesso, ma non ha ancora ottenuto una risposta (2014-02 -26).

Secondo uno sviluppatore Jetbrains La funzione che ho richiesto è sul loro a lungo termine Elenco, ma non verrà implementato presto (2014-03-05).

È stato utile?

Soluzione

Con l'ultima installazione di Scala Plugin, c'è un'API che può essere utilizzata per scrivere il proprio plugin per supportare i tuoi macro: http://blog.jetbrains.com/scala/2015/10/14/inteltellij-api--build-scala-macros-support/

.

Ora, tutti possono usare questa API per rendere le loro macche più amichevoli per il loro IDE preferito.Per farlo, devi implementare syntheticmembersiniettore e registrarlo nel file plugin.xml:

<extensions defaultExtensionNs="org.intellij.scala">
  <syntheticMemberInjector implementation="org.jetbrains.example.injector.Injector"/>
</extensions>
.

Altri suggerimenti

Sembra che ci sia un supporto limitato se presente.

Quote di questo link: http://blog.jetbrains.com/scala/2014/01/23/heading-t-the-perfect-scala-code-analysysis/

Alexander Podkhalyuzin says:    
.

30 gennaio 2014 alle 10:13 AM

Abbiamo iniziato il supporto per Macro Scala, ma non è un compito semplice, quindi non posso prometterlo sarà fatto presto.

Cordiali saluti, Alexander Podkhalyuzin.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top