Store information about package declaration in context
This information is used for resolving references in plugin
This commit is contained in:
@@ -896,4 +896,18 @@ public class JetPsiUtil {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static NavigatablePsiElement getPackageReference(@NotNull JetFile file, int partIndex) {
|
||||||
|
JetNamespaceHeader header = file.getNamespaceHeader();
|
||||||
|
if (header == null) {
|
||||||
|
throw new IllegalArgumentException("Should be called only for files with namespace: " + file);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<JetSimpleNameExpression> names = header.getParentNamespaceNames();
|
||||||
|
if (!(0 <= partIndex && partIndex < names.size() + 1)) {
|
||||||
|
throw new IndexOutOfBoundsException(String.format("%s index for file with header %s is out of range", partIndex, header.getText()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return (names.size() > partIndex) ? names.get(partIndex) : header.getLastPartExpression();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -65,7 +65,6 @@ public abstract class AbstractPsiBasedDeclarationProvider implements Declaration
|
|||||||
throw new IllegalArgumentException("Unknown declaration: " + declaration);
|
throw new IllegalArgumentException("Unknown declaration: " + declaration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private final NotNullLazyValue<Index> index;
|
private final NotNullLazyValue<Index> index;
|
||||||
|
|||||||
+7
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.lazy.declarations;
|
package org.jetbrains.jet.lang.resolve.lazy.declarations;
|
||||||
|
|
||||||
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||||
@@ -44,6 +45,12 @@ public class EmptyPackageMemberDeclarationProvider implements PackageMemberDecla
|
|||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Collection<NavigatablePsiElement> getPackageDeclarations(FqName fqName) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<JetDeclaration> getAllDeclarations() {
|
public List<JetDeclaration> getAllDeclarations() {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|||||||
+27
-4
@@ -18,23 +18,25 @@ package org.jetbrains.jet.lang.resolve.lazy.declarations;
|
|||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import com.google.common.collect.Collections2;
|
import com.google.common.collect.*;
|
||||||
import com.google.common.collect.HashMultimap;
|
|
||||||
import com.google.common.collect.Multimap;
|
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import com.intellij.openapi.util.Computable;
|
import com.intellij.openapi.util.Computable;
|
||||||
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
import com.intellij.util.Function;
|
import com.intellij.util.Function;
|
||||||
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo;
|
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.MemoizedFunctionToNullable;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.MemoizedFunctionToNullable;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.NotNullLazyValue;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.NotNullLazyValue;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
import org.jetbrains.jet.util.QualifiedNamesUtil;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class FileBasedDeclarationProviderFactory implements DeclarationProviderFactory {
|
public class FileBasedDeclarationProviderFactory implements DeclarationProviderFactory {
|
||||||
@@ -116,6 +118,27 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*package*/ Collection<NavigatablePsiElement> getPackageDeclarations(@NotNull final FqName fqName) {
|
||||||
|
if (fqName.isRoot()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Collection<NavigatablePsiElement> resultElements = Lists.newArrayList();
|
||||||
|
for (FqName declaredPackage : index.compute().filesByPackage.keys()) {
|
||||||
|
if (QualifiedNamesUtil.isSubpackageOf(declaredPackage, fqName)) {
|
||||||
|
Collection<JetFile> files = index.compute().filesByPackage.get(declaredPackage);
|
||||||
|
resultElements.addAll(ContainerUtil.map(files, new Function<JetFile, NavigatablePsiElement>() {
|
||||||
|
@Override
|
||||||
|
public NavigatablePsiElement fun(JetFile file) {
|
||||||
|
return JetPsiUtil.getPackageReference(file, QualifiedNamesUtil.numberOfSegments(fqName) - 1);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultElements;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PackageMemberDeclarationProvider getPackageMemberDeclarationProvider(@NotNull FqName packageFqName) {
|
public PackageMemberDeclarationProvider getPackageMemberDeclarationProvider(@NotNull FqName packageFqName) {
|
||||||
return packageDeclarationProviders.fun(packageFqName);
|
return packageDeclarationProviders.fun(packageFqName);
|
||||||
|
|||||||
+14
-5
@@ -17,8 +17,10 @@
|
|||||||
package org.jetbrains.jet.lang.resolve.lazy.declarations;
|
package org.jetbrains.jet.lang.resolve.lazy.declarations;
|
||||||
|
|
||||||
import com.intellij.openapi.util.Computable;
|
import com.intellij.openapi.util.Computable;
|
||||||
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.NotNullLazyValue;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.NotNullLazyValue;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -30,7 +32,7 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD
|
|||||||
|
|
||||||
private final FqName fqName;
|
private final FqName fqName;
|
||||||
private final FileBasedDeclarationProviderFactory factory;
|
private final FileBasedDeclarationProviderFactory factory;
|
||||||
private final Collection<JetFile> allFiles;
|
private final Collection<JetFile> packageFiles;
|
||||||
private final NotNullLazyValue<Collection<FqName>> allDeclaredPackages;
|
private final NotNullLazyValue<Collection<FqName>> allDeclaredPackages;
|
||||||
|
|
||||||
|
|
||||||
@@ -38,12 +40,12 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD
|
|||||||
@NotNull StorageManager storageManager,
|
@NotNull StorageManager storageManager,
|
||||||
@NotNull FqName _fqName,
|
@NotNull FqName _fqName,
|
||||||
@NotNull FileBasedDeclarationProviderFactory _factory,
|
@NotNull FileBasedDeclarationProviderFactory _factory,
|
||||||
@NotNull Collection<JetFile> allFiles
|
@NotNull Collection<JetFile> packageFiles
|
||||||
) {
|
) {
|
||||||
super(storageManager);
|
super(storageManager);
|
||||||
this.fqName = _fqName;
|
this.fqName = _fqName;
|
||||||
this.factory = _factory;
|
this.factory = _factory;
|
||||||
this.allFiles = allFiles;
|
this.packageFiles = packageFiles;
|
||||||
this.allDeclaredPackages = storageManager.createLazyValue(new Computable<Collection<FqName>>() {
|
this.allDeclaredPackages = storageManager.createLazyValue(new Computable<Collection<FqName>>() {
|
||||||
@Override
|
@Override
|
||||||
public Collection<FqName> compute() {
|
public Collection<FqName> compute() {
|
||||||
@@ -54,8 +56,9 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doCreateIndex(@NotNull Index index) {
|
protected void doCreateIndex(@NotNull Index index) {
|
||||||
for (JetFile file : allFiles) {
|
for (JetFile file : packageFiles) {
|
||||||
for (JetDeclaration declaration : file.getDeclarations()) {
|
for (JetDeclaration declaration : file.getDeclarations()) {
|
||||||
|
assert fqName.asString().equals(file.getPackageName()) : "Files declaration utils contains file with invalid namespace";
|
||||||
index.putToIndex(declaration);
|
index.putToIndex(declaration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -71,6 +74,12 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD
|
|||||||
return allDeclaredPackages.compute();
|
return allDeclaredPackages.compute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Collection<NavigatablePsiElement> getPackageDeclarations(FqName fqName) {
|
||||||
|
return factory.getPackageDeclarations(fqName);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Declarations for package " + fqName;
|
return "Declarations for package " + fqName;
|
||||||
|
|||||||
+4
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.lazy.declarations;
|
package org.jetbrains.jet.lang.resolve.lazy.declarations;
|
||||||
|
|
||||||
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
@@ -27,4 +28,7 @@ public interface PackageMemberDeclarationProvider extends DeclarationProvider {
|
|||||||
boolean isPackageDeclared(@NotNull Name name);
|
boolean isPackageDeclared(@NotNull Name name);
|
||||||
|
|
||||||
Collection<FqName> getAllDeclaredPackages();
|
Collection<FqName> getAllDeclaredPackages();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
Collection<NavigatablePsiElement> getPackageDeclarations(FqName fqName);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-2
@@ -16,11 +16,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.lazy.descriptors;
|
package org.jetbrains.jet.lang.resolve.lazy.descriptors;
|
||||||
|
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.AbstractNamespaceDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.impl.AbstractNamespaceDescriptorImpl;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
|
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.LazyDescriptor;
|
import org.jetbrains.jet.lang.resolve.lazy.LazyDescriptor;
|
||||||
@@ -51,6 +54,11 @@ public class LazyPackageDescriptor extends AbstractNamespaceDescriptorImpl imple
|
|||||||
this.lazyScope = new LazyPackageMemberScope(resolveSession, declarationProvider, this);
|
this.lazyScope = new LazyPackageMemberScope(resolveSession, declarationProvider, this);
|
||||||
|
|
||||||
this.memberScope = new ChainedScope(this, "Lazy package members scope: " + name, lazyScope, scope);
|
this.memberScope = new ChainedScope(this, "Lazy package members scope: " + name, lazyScope, scope);
|
||||||
|
|
||||||
|
NavigatablePsiElement declaration = Iterables.getFirst(declarationProvider.getPackageDeclarations(getFqName()), null);
|
||||||
|
if (declaration != null) {
|
||||||
|
resolveSession.getTrace().record(BindingContext.NAMESPACE, declaration, this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public final class QualifiedNamesUtil {
|
|||||||
String subpackageNameStr = subpackageName.asString();
|
String subpackageNameStr = subpackageName.asString();
|
||||||
String packageNameStr = packageName.asString();
|
String packageNameStr = packageName.asString();
|
||||||
|
|
||||||
return (subpackageNameStr.startsWith(packageNameStr) && subpackageNameStr.charAt(packageNameStr.length()) == '.');
|
return isSubpackageOf(subpackageNameStr, packageNameStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isOneSegmentFQN(@NotNull String fqn) {
|
public static boolean isOneSegmentFQN(@NotNull String fqn) {
|
||||||
@@ -78,6 +78,14 @@ public final class QualifiedNamesUtil {
|
|||||||
return new FqName(fqNameStr.substring(fqNameStr.indexOf('.'), fqNameStr.length()));
|
return new FqName(fqNameStr.substring(fqNameStr.indexOf('.'), fqNameStr.length()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int numberOfSegments(@NotNull FqName fqName) {
|
||||||
|
if (fqName.isRoot()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1 + numberOfSegments(fqName.parent());
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static FqName combine(@NotNull FqName first, @NotNull Name second) {
|
public static FqName combine(@NotNull FqName first, @NotNull Name second) {
|
||||||
return first.child(second);
|
return first.child(second);
|
||||||
@@ -186,4 +194,9 @@ public final class QualifiedNamesUtil {
|
|||||||
|
|
||||||
return state != AFTER_DOT;
|
return state != AFTER_DOT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isSubpackageOf(String subpackageNameStr, String packageNameStr) {
|
||||||
|
return subpackageNameStr.equals(packageNameStr) ||
|
||||||
|
(subpackageNameStr.startsWith(packageNameStr) && subpackageNameStr.charAt(packageNameStr.length()) == '.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+20
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.jet.plugin.stubindex.resolve;
|
package org.jetbrains.jet.plugin.stubindex.resolve;
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import com.intellij.util.Function;
|
import com.intellij.util.Function;
|
||||||
import com.intellij.util.containers.ContainerUtil;
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
@@ -25,14 +26,17 @@ import org.jetbrains.jet.asJava.LightClassGenerationSupport;
|
|||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
||||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.PackageMemberDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.lazy.declarations.PackageMemberDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex;
|
import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex;
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionsFqnNameIndex;
|
import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionsFqnNameIndex;
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertiesFqnNameIndex;
|
import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertiesFqnNameIndex;
|
||||||
|
import org.jetbrains.jet.util.QualifiedNamesUtil;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
public class StubPackageMemberDeclarationProvider extends AbstractStubDeclarationProvider implements PackageMemberDeclarationProvider {
|
public class StubPackageMemberDeclarationProvider extends AbstractStubDeclarationProvider implements PackageMemberDeclarationProvider {
|
||||||
private final FqName fqName;
|
private final FqName fqName;
|
||||||
@@ -76,4 +80,20 @@ public class StubPackageMemberDeclarationProvider extends AbstractStubDeclaratio
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Collection<NavigatablePsiElement> getPackageDeclarations(final FqName fqName) {
|
||||||
|
if (fqName.isRoot()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Collection<JetFile> files = JetAllPackagesIndex.getInstance().get(fqName.asString(), project, searchScope);
|
||||||
|
return ContainerUtil.map(files, new Function<JetFile, NavigatablePsiElement>() {
|
||||||
|
@Override
|
||||||
|
public NavigatablePsiElement fun(JetFile file) {
|
||||||
|
return JetPsiUtil.getPackageReference(file, QualifiedNamesUtil.numberOfSegments(fqName) - 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package org.jetbrains.jet.plugin.stubs.resolve;
|
|||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import com.google.common.collect.Collections2;
|
import com.google.common.collect.Collections2;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||||
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
||||||
@@ -80,4 +81,16 @@ public class JetStubResolveTest extends LightCodeInsightFixtureTestCase {
|
|||||||
assertSize(1, testProperties);
|
assertSize(1, testProperties);
|
||||||
assertEquals("val test = 12", testProperties.get(0).getText());
|
assertEquals("val test = 12", testProperties.get(0).getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGetPackageByIntermediatePartition() {
|
||||||
|
myFixture.configureByText(JetFileType.INSTANCE, "package first.second.third");
|
||||||
|
|
||||||
|
StubPackageMemberDeclarationProvider provider = new StubPackageMemberDeclarationProvider(
|
||||||
|
new FqName("first.second"), getProject(), GlobalSearchScope.projectScope(getProject()));
|
||||||
|
|
||||||
|
Collection<NavigatablePsiElement> packageDeclarations = provider.getPackageDeclarations(new FqName("first.second"));
|
||||||
|
|
||||||
|
assertSize(1, packageDeclarations);
|
||||||
|
assertEquals("second", packageDeclarations.iterator().next().getText());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user