add isKotlinSourceElement method to Source interface in order to recognize kotlin source elements during compilation

This commit is contained in:
Michael Nedzelsky
2015-09-21 22:08:17 +03:00
parent bcd85aa30d
commit c342f6870a
6 changed files with 21 additions and 2 deletions
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.load.java.sources.JavaSourceElementFactory
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
private class JavaSourceElementImpl(override val javaElement: JavaElement) : PsiSourceElement, JavaSourceElement {
override fun isKotlinSourceElement(): Boolean = false
override val psi: PsiElement?
get() = (javaElement as JavaElementImpl<*>).getPsi()
}
@@ -20,7 +20,9 @@ import org.jetbrains.kotlin.psi.JetElement
import org.jetbrains.kotlin.descriptors.SourceElement
import com.intellij.psi.PsiElement
public class KotlinSourceElement(override val psi: JetElement) : PsiSourceElement
public class KotlinSourceElement(override val psi: JetElement) : PsiSourceElement {
override fun isKotlinSourceElement(): Boolean = true
}
public fun JetElement?.toSourceElement(): SourceElement = if (this == null) SourceElement.NO_SOURCE else KotlinSourceElement(this)
@@ -19,5 +19,6 @@ package org.jetbrains.kotlin.load.kotlin
import org.jetbrains.kotlin.descriptors.SourceElement
public class KotlinJvmBinarySourceElement(public val binaryClass: KotlinJvmBinaryClass) : SourceElement {
override fun isKotlinSourceElement(): Boolean = false
override fun toString() = javaClass.name + ": " + binaryClass.toString()
}
@@ -23,6 +23,8 @@ import org.jetbrains.kotlin.load.java.structure.reflect.ReflectJavaElement
public object RuntimeSourceElementFactory : JavaSourceElementFactory {
private class RuntimeSourceElement(override val javaElement: ReflectJavaElement) : JavaSourceElement {
override fun isKotlinSourceElement(): Boolean = false
override fun toString() = javaClass.name + ": " + javaElement.toString()
}
@@ -18,4 +18,6 @@ package org.jetbrains.kotlin.load.kotlin.reflect
import org.jetbrains.kotlin.descriptors.SourceElement
public class ReflectAnnotationSource(public val annotation: Annotation) : SourceElement
public class ReflectAnnotationSource(public val annotation: Annotation) : SourceElement {
override fun isKotlinSourceElement(): Boolean = false
}
@@ -16,8 +16,18 @@
package org.jetbrains.kotlin.descriptors;
import kotlin.Deprecated;
public interface SourceElement {
@Deprecated("This is a hack in order to preliminary support internal visibility in multi-module projects")
boolean isKotlinSourceElement();
SourceElement NO_SOURCE = new SourceElement() {
@Override
public boolean isKotlinSourceElement() {
return false;
}
@Override
public String toString() {
return "NO_SOURCE";