JetElement.getContainingJetFile() introduced

This commit is contained in:
Andrey Breslav
2014-04-21 18:25:17 +04:00
parent da0efe2a9e
commit 767eb04930
50 changed files with 89 additions and 62 deletions
@@ -20,6 +20,9 @@ import com.intellij.psi.NavigatablePsiElement;
import org.jetbrains.annotations.NotNull;
public interface JetElement extends NavigatablePsiElement {
@NotNull
JetFile getContainingJetFile();
<D> void acceptChildren(@NotNull JetTreeVisitor<D> visitor, D data);
<R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data);
@@ -20,6 +20,7 @@ import com.intellij.extapi.psi.ASTWrapperPsiElement;
import com.intellij.lang.ASTNode;
import com.intellij.lang.Language;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiReferenceService;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry;
@@ -52,6 +53,14 @@ public class JetElementImpl extends ASTWrapperPsiElement implements JetElement {
}
}
@NotNull
@Override
public JetFile getContainingJetFile() {
PsiFile file = getContainingFile();
assert file instanceof JetFile : "JetElement not inside JetFile: " + file + " " + file.getText();
return (JetFile) file;
}
@Override
public <D> void acceptChildren(@NotNull JetTreeVisitor<D> visitor, D data) {
JetPsiUtil.visitChildren(this, visitor, data);
@@ -21,6 +21,7 @@ import com.intellij.lang.ASTNode;
import com.intellij.lang.Language;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.StubBasedPsiElement;
import com.intellij.psi.stubs.IStubElementType;
import com.intellij.psi.stubs.StubElement;
@@ -58,6 +59,14 @@ public class JetElementImplStub<T extends StubElement> extends StubBasedPsiEleme
}
}
@NotNull
@Override
public JetFile getContainingJetFile() {
PsiFile file = getContainingFile();
assert file instanceof JetFile : "JetElement not inside JetFile: " + file + " " + file.getText();
return (JetFile) file;
}
@Override
public <D> void acceptChildren(@NotNull JetTreeVisitor<D> visitor, D data) {
PsiElement child = getFirstChild();
@@ -160,6 +160,12 @@ public class JetFile extends PsiFileBase implements JetDeclarationContainer, Jet
}
}
@NotNull
@Override
public JetFile getContainingJetFile() {
return this;
}
@Override
public <D> void acceptChildren(@NotNull JetTreeVisitor<D> visitor, D data) {
JetPsiUtil.visitChildren(this, visitor, data);
@@ -321,7 +321,7 @@ public class JetPsiUtil {
public static void deleteClass(@NotNull JetClassOrObject clazz) {
CheckUtil.checkWritable(clazz);
JetFile file = (JetFile) clazz.getContainingFile();
JetFile file = clazz.getContainingJetFile();
if (isLocal(clazz) || file.getDeclarations().size() > 1) {
PsiElement parent = clazz.getParent();
CodeEditUtil.removeChild(parent.getNode(), clazz.getNode());
@@ -912,7 +912,7 @@ public class JetPsiUtil {
@Nullable
public static String getPackageName(@NotNull JetElement element) {
JetFile file = (JetFile) element.getContainingFile();
JetFile file = element.getContainingJetFile();
JetPackageDirective header = PsiTreeUtil.findChildOfType(file, JetPackageDirective.class);
return header != null ? header.getQualifiedName() : null;
@@ -82,7 +82,7 @@ public class ImportsResolver {
// SCRIPT: process script import directives
for (JetScript script : c.getScripts().keySet()) {
WritableScope scriptScope = ((ScriptDescriptorImpl) c.getScripts().get(script)).getScopeForBodyResolution();
processImportsInFile(lookupMode, scriptScope, ((JetFile) script.getContainingFile()).getImportDirectives(), true);
processImportsInFile(lookupMode, scriptScope, script.getContainingJetFile().getImportDirectives(), true);
}
}
@@ -236,7 +236,7 @@ public class LazyTopDownAnalyzer {
}
for (JetScript script : c.getScripts().keySet()) {
resolveAndCheckImports((JetFile) script.getContainingFile(), resolveSession);
resolveAndCheckImports(script.getContainingJetFile(), resolveSession);
}
}
@@ -64,7 +64,7 @@ public class ScriptHeaderResolver {
public void processScriptHierarchy(@NotNull TopDownAnalysisContext c, @NotNull JetScript script, @NotNull WritableScope outerScope) {
JetFile file = (JetFile) script.getContainingFile();
JetFile file = script.getContainingJetFile();
FqName fqName = file.getPackageFqName();
PackageFragmentDescriptor ns = packageFragmentProvider.getOrCreateFragment(fqName);
@@ -30,7 +30,7 @@ public class ScriptNameUtil {
@NotNull
public static FqName classNameForScript(JetScript script) {
JetFile file = (JetFile) script.getContainingFile();
JetFile file = script.getContainingJetFile();
JetScriptDefinition scriptDefinition = JetScriptDefinitionProvider.getInstance(file.getProject()).findScriptDefinition(file);
String name = file.getName();
@@ -54,7 +54,7 @@ public class ScriptParameterResolver {
) {
List<ValueParameterDescriptor> valueParameters = Lists.newArrayList();
JetFile file = (JetFile) declaration.getContainingFile();
JetFile file = declaration.getContainingJetFile();
JetScriptDefinition scriptDefinition = JetScriptDefinitionProvider.getInstance(file.getProject()).findScriptDefinition(file);
int index = 0;
@@ -177,7 +177,7 @@ public class LazyImportScope implements JetScope, LazyEntity {
ImportResolveStatus status = importedScopesProvider.invoke(importDirective).importResolveStatus;
if (status != null && !status.descriptors.isEmpty()) {
JetScope fileScope = resolveSession.getScopeProvider().getFileScope((JetFile) importDirective.getContainingFile());
JetScope fileScope = resolveSession.getScopeProvider().getFileScope(importDirective.getContainingJetFile());
ImportsResolver.reportUselessImport(importDirective, fileScope, status.descriptors, traceForImportResolve);
}
}
@@ -55,7 +55,7 @@ public class LazyPackageMemberScope extends AbstractLazyMemberScope<PackageFragm
@NotNull
@Override
protected JetScope getScopeForMemberDeclarationResolution(JetDeclaration declaration) {
return resolveSession.getScopeProvider().getFileScope((JetFile) declaration.getContainingFile());
return resolveSession.getScopeProvider().getFileScope(declaration.getContainingJetFile());
}
@Override
@@ -58,7 +58,7 @@ public class LazyScriptDescriptor(
val jetScript: JetScript,
val _priority: Int
) : ScriptDescriptor, LazyEntity, DeclarationDescriptorNonRootImpl(
(jetScript.getContainingFile() as JetFile).getPackageFqName().let {
jetScript.getContainingJetFile().getPackageFqName().let {
fqName ->
resolveSession.getPackageFragment(fqName).sure("Package not found $fqName")
},
@@ -102,7 +102,7 @@ public class LazyScriptDescriptor(
return ChainedScope(
this,
"Scope for body resolution for " + this,
resolveSession.getScopeProvider().getFileScope(jetScript.getContainingFile() as JetFile),
resolveSession.getScopeProvider().getFileScope(jetScript.getContainingJetFile()),
parametersScope
)
}