How to deal with two packages of classes from import com.intellij.psi.* vs import*


Background: I am trying to create my own version of kotlin-android-extensions's compiler plugin and intelliJ-plugin in the same way how it is originally created. 

When I run my kotlin-android-extension compiler plugin it gives an error when invoking any Psi related apis because there are 2 different packages psi apis

1. com.intellij.psi.*
2.  import*

So the my-kotlin-compiler-plugin is  invoking all apis from* which is fine (maybe not), but this apis api is from kotlin-embeddable library but in original kotlin-compiler plugin the psi apis used is from this package: com.intellij.psi. 

Now even though I try to use kotlin compiler library and remove kotlin-embeddable, then it still invokes psi apis from  this package*. So to make things work I have to use kotlin-embeddable library and replace all psi apis from*. to com.intellij.psi.*

Now, I am able to compile my android code successfully (means synthetic code are getting converted into right binary code even with using* apis

Problem statement: 
Now when I am trying to build the kotlin-android-extensions-intellij-plugin, it uses com.intellij.psi apis internally. This is where I am stuck now, the kotlin-android-extensions-intellij-plugin depends on its  kotlin-android-extensions's compiler plugin but the kotlin-android-extensions-intellij-plugin uses psi apis from com.intellij.psi.*. So these 2 libraries are not able to communicate. 

Please guide


Please sign in to leave a comment.