Add getPackageFragment() to JavaDescriptorResolver

This commit is contained in:
Andrey Breslav
2013-12-25 16:36:55 +04:00
parent 45bd70daec
commit 48ac30a933
4 changed files with 12 additions and 3 deletions
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.ImportPath; import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
@@ -237,4 +238,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
return packageFragmentProvider; return packageFragmentProvider;
} }
@Nullable
public PackageFragmentDescriptor getPackageFragment(@NotNull FqName fqName) {
if (LAZY) {
return getLazyJavaPackageFragmentProvider().getPackageFragment(fqName);
}
return packageFragmentProvider.getPackageFragment(fqName);
}
} }
@@ -187,7 +187,7 @@ public class KotlinSignatureAnnotationIntention extends BaseIntentionAction impl
@NotNull @NotNull
private static JetScope getMemberScope(PsiModifierListOwner psiModifierListOwner, FqName classFqName, JavaDescriptorResolver javaDescriptorResolver) { private static JetScope getMemberScope(PsiModifierListOwner psiModifierListOwner, FqName classFqName, JavaDescriptorResolver javaDescriptorResolver) {
if (psiModifierListOwner.hasModifierProperty(PsiModifier.STATIC)) { if (psiModifierListOwner.hasModifierProperty(PsiModifier.STATIC)) {
PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragmentProvider().getPackageFragment(classFqName); PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragment(classFqName);
assert packageFragment != null: "Couldn't resolve package fragment for " + classFqName; assert packageFragment != null: "Couldn't resolve package fragment for " + classFqName;
return packageFragment.getMemberScope(); return packageFragment.getMemberScope();
} }
@@ -167,7 +167,7 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
@NotNull PsiMember member @NotNull PsiMember member
) { ) {
if (member.hasModifierProperty(PsiModifier.STATIC)) { if (member.hasModifierProperty(PsiModifier.STATIC)) {
PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragmentProvider().getPackageFragment(classFqName); PackageFragmentDescriptor packageFragment = javaDescriptorResolver.getPackageFragment(classFqName);
if (packageFragment == null) { if (packageFragment == null) {
return null; return null;
} }
@@ -85,7 +85,7 @@ public final class DecompiledDataFactory {
appendDecompiledTextAndPackageName(packageFqName); appendDecompiledTextAndPackageName(packageFqName);
KotlinClassHeader.Kind kind = classFileHeader.getKind(); KotlinClassHeader.Kind kind = classFileHeader.getKind();
if (kind == KotlinClassHeader.Kind.PACKAGE_FACADE) { if (kind == KotlinClassHeader.Kind.PACKAGE_FACADE) {
PackageFragmentDescriptor pf = javaDescriptorResolver.getPackageFragmentProvider().getPackageFragment(packageFqName); PackageFragmentDescriptor pf = javaDescriptorResolver.getPackageFragment(packageFqName);
if (pf != null) { if (pf != null) {
for (DeclarationDescriptor member : sortDeclarations(pf.getMemberScope().getAllDescriptors())) { for (DeclarationDescriptor member : sortDeclarations(pf.getMemberScope().getAllDescriptors())) {
if (!(member instanceof ClassDescriptor)) { if (!(member instanceof ClassDescriptor)) {