Evaluate expression: add ability to import class
This commit is contained in:
@@ -40,6 +40,9 @@ public abstract class JetCodeFragment(
|
||||
{
|
||||
getViewProvider().forceCachedPsi(this)
|
||||
init(TokenType.CODE_FRAGMENT, elementType)
|
||||
if (_context != null) {
|
||||
addImportsFromString(getImportsForElement(_context))
|
||||
}
|
||||
}
|
||||
|
||||
private var _resolveScope: GlobalSearchScope? = null
|
||||
@@ -89,11 +92,15 @@ public abstract class JetCodeFragment(
|
||||
}
|
||||
|
||||
override fun addImportsFromString(imports: String?) {
|
||||
if (imports == null) return
|
||||
if (imports == null || imports.isEmpty()) return
|
||||
|
||||
_myImports.addAll(imports.split(IMPORT_SEPARATOR))
|
||||
}
|
||||
|
||||
fun importsAsImportList(): JetImportList? {
|
||||
return JetPsiFactory.createFile(_project, _myImports.makeString("\n")).getImportList()
|
||||
}
|
||||
|
||||
override fun setVisibilityChecker(checker: JavaCodeFragment.VisibilityChecker?) { }
|
||||
|
||||
override fun getVisibilityChecker() = JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE
|
||||
@@ -110,5 +117,14 @@ public abstract class JetCodeFragment(
|
||||
|
||||
class object {
|
||||
val IMPORT_SEPARATOR = ","
|
||||
|
||||
fun getImportsForElement(elementAtCaret: PsiElement): String {
|
||||
val containingFile = elementAtCaret.getContainingFile()
|
||||
if (containingFile !is JetFile) return ""
|
||||
|
||||
return containingFile.getImportList()?.getImports()
|
||||
?.map { it.getText() }
|
||||
?.makeString(JetCodeFragment.IMPORT_SEPARATOR) ?: ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.psi.JetCodeFragment;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
||||
import org.jetbrains.jet.lang.psi.JetImportList;
|
||||
import org.jetbrains.jet.lang.resolve.*;
|
||||
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
@@ -158,10 +160,19 @@ public class LazyImportScope implements JetScope, LazyEntity {
|
||||
@NotNull BindingTrace traceForImportResolve,
|
||||
@NotNull String debugName
|
||||
) {
|
||||
List<JetImportDirective> importDirectives;
|
||||
if (jetFile instanceof JetCodeFragment) {
|
||||
JetImportList importList = ((JetCodeFragment) jetFile).importsAsImportList();
|
||||
importDirectives = importList != null ? importList.getImports() : Collections.<JetImportDirective>emptyList();
|
||||
}
|
||||
else {
|
||||
importDirectives = jetFile.getImportDirectives();
|
||||
}
|
||||
|
||||
return new LazyImportScope(
|
||||
resolveSession,
|
||||
packageDescriptor,
|
||||
Lists.reverse(jetFile.getImportDirectives()),
|
||||
Lists.reverse(importDirectives),
|
||||
traceForImportResolve,
|
||||
debugName,
|
||||
packageDescriptor.getFqName().isRoot());
|
||||
|
||||
Reference in New Issue
Block a user