From 1026675d446d9be62117a7b3cf082cf42ae75954 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 3 Oct 2012 20:47:09 +0400 Subject: [PATCH] JavaDescriptorResolveData.ResolverScopeData fields are private and accessed via getters --- .../resolve/java/JavaClassMembersScope.java | 6 +-- .../resolve/java/JavaClassOrPackageScope.java | 18 ++++----- .../JavaDescriptorPropertiesResolver.java | 4 +- .../java/JavaDescriptorResolveData.java | 39 ++++++++++++++++--- .../resolve/java/JavaDescriptorResolver.java | 22 +++++------ .../java/JavaDescriptorResolverHelper.java | 4 +- .../lang/resolve/java/JavaPackageScope.java | 2 +- 7 files changed, 61 insertions(+), 34 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java index a1d9b78fe00..e4b9d1c0697 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java @@ -45,7 +45,7 @@ public class JavaClassMembersScope extends JavaClassOrPackageScope { @NotNull ResolverScopeData resolverScopeData) { super(semanticServices, resolverScopeData); - if (resolverScopeData.psiClass == null) { + if (resolverScopeData.getPsiClass() == null) { throw new IllegalArgumentException("must pass PsiClass here"); } } @@ -79,9 +79,9 @@ public class JavaClassMembersScope extends JavaClassOrPackageScope { private ClassifierDescriptor doGetClassifierDescriptor(Name name) { // TODO : suboptimal, walk the list only once - for (PsiClass innerClass : resolverScopeData.psiClass.getAllInnerClasses()) { + for (PsiClass innerClass : resolverScopeData.getPsiClass().getAllInnerClasses()) { if (name.getName().equals(innerClass.getName())) { - if (innerClass.hasModifierProperty(PsiModifier.STATIC) != resolverScopeData.staticMembers) return null; + if (innerClass.hasModifierProperty(PsiModifier.STATIC) != resolverScopeData.isStaticMembers()) return null; ClassDescriptor classDescriptor = semanticServices.getDescriptorResolver() .resolveClass(new FqName(innerClass.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); if (classDescriptor != null) { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java index 96350d57c0f..67528ef4c82 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java @@ -53,7 +53,7 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { @NotNull @Override public DeclarationDescriptor getContainingDeclaration() { - return resolverScopeData.classOrNamespaceDescriptor; + return resolverScopeData.getClassOrNamespaceDescriptor(); } @NotNull @@ -74,7 +74,7 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { if (allDescriptors == null) { allDescriptors = Sets.newHashSet(); - if (resolverScopeData.psiClass != null) { + if (resolverScopeData.getPsiClass() != null) { ProgressIndicatorProvider.checkCanceled(); allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveMethods(resolverScopeData)); @@ -85,21 +85,21 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { // TODO: Trying to hack the situation when we produce namespace descriptor for java class and still want to see inner classes if (getContainingDeclaration() instanceof JavaNamespaceDescriptor) { allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses( - resolverScopeData.classOrNamespaceDescriptor, resolverScopeData.psiClass, false)); + resolverScopeData.getClassOrNamespaceDescriptor(), resolverScopeData.getPsiClass(), false)); } else { allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses( - resolverScopeData.classOrNamespaceDescriptor, resolverScopeData.psiClass, - resolverScopeData.staticMembers)); + resolverScopeData.getClassOrNamespaceDescriptor(), resolverScopeData.getPsiClass(), + resolverScopeData.isStaticMembers())); } } - if (resolverScopeData.psiPackage != null) { - FqName packageFqName = resolverScopeData.fqName; + if (resolverScopeData.getPsiPackage() != null) { + FqName packageFqName = resolverScopeData.getFqName(); boolean isKotlinNamespace = packageFqName != null && semanticServices.getKotlinNamespaceDescriptor(packageFqName) != null; final JavaDescriptorResolver descriptorResolver = semanticServices.getDescriptorResolver(); - for (PsiPackage psiSubPackage : resolverScopeData.psiPackage.getSubPackages()) { + for (PsiPackage psiSubPackage : resolverScopeData.getPsiPackage().getSubPackages()) { NamespaceDescriptor childNs = descriptorResolver.resolveNamespace( new FqName(psiSubPackage.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); if (childNs != null) { @@ -107,7 +107,7 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { } } - for (PsiClass psiClass : resolverScopeData.psiPackage.getClasses()) { + for (PsiClass psiClass : resolverScopeData.getPsiPackage().getClasses()) { if (isKotlinNamespace && JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) { continue; } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorPropertiesResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorPropertiesResolver.java index 4f8ea1ee054..6d0c87400a1 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorPropertiesResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorPropertiesResolver.java @@ -327,7 +327,7 @@ public final class JavaDescriptorPropertiesResolver { } private static boolean isPropertyFinal(ResolverScopeData scopeData, GroupingValue members) { - if (!scopeData.kotlin) { + if (!scopeData.isKotlin()) { return true; } @@ -376,7 +376,7 @@ public final class JavaDescriptorPropertiesResolver { @NotNull ResolverScopeData scopeData, boolean isStatic ) { - final PsiClass psiClass = scopeData.psiClass; + final PsiClass psiClass = scopeData.getPsiClass(); assert psiClass != null; boolean isEnum = psiClass.isEnum(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolveData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolveData.java index 60d57b1e2a0..c5c41e538e1 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolveData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolveData.java @@ -35,14 +35,41 @@ import java.util.Map; class JavaDescriptorResolveData { static abstract class ResolverScopeData { @Nullable - final PsiClass psiClass; + public PsiClass getPsiClass() { + return psiClass; + } + @Nullable - final PsiPackage psiPackage; + public PsiPackage getPsiPackage() { + return psiPackage; + } + @Nullable - final FqName fqName; - final boolean staticMembers; - final boolean kotlin; - final ClassOrNamespaceDescriptor classOrNamespaceDescriptor; + public FqName getFqName() { + return fqName; + } + + public boolean isStaticMembers() { + return staticMembers; + } + + public boolean isKotlin() { + return kotlin; + } + + public ClassOrNamespaceDescriptor getClassOrNamespaceDescriptor() { + return classOrNamespaceDescriptor; + } + + @Nullable + private final PsiClass psiClass; + @Nullable + private final PsiPackage psiPackage; + @Nullable + private final FqName fqName; + private final boolean staticMembers; + private final boolean kotlin; + private final ClassOrNamespaceDescriptor classOrNamespaceDescriptor; protected ResolverScopeData(@Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, @Nullable FqName fqName, boolean staticMembers, @NotNull ClassOrNamespaceDescriptor descriptor) { JavaDescriptorResolver.checkPsiClassIsNotJet(psiClass); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 41a2597a901..4784b0eaaf2 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -283,7 +283,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes public Collection resolveConstructors(@NotNull ResolverClassData classData) { Collection constructors = Lists.newArrayList(); - PsiClass psiClass = classData.psiClass; + PsiClass psiClass = classData.getPsiClass(); ClassDescriptorFromJvmBytecode containingClass = classData.classDescriptor; assert psiClass != null; @@ -609,7 +609,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } if (result.isEmpty()) { - if (classData.kotlin + if (classData.isKotlin() || OBJECT_FQ_NAME.equalsTo(psiClass.getQualifiedName()) // TODO: annotations || classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS) { @@ -882,7 +882,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes public Set resolveFieldGroupByName(@NotNull Name fieldName, @NotNull ResolverScopeData scopeData) { - final PsiClass psiClass = scopeData.psiClass; + final PsiClass psiClass = scopeData.getPsiClass(); if (psiClass == null) { return Collections.emptySet(); } @@ -896,7 +896,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes final String qualifiedName = psiClass.getQualifiedName(); javaDescriptorPropertiesResolver.resolveNamedGroupProperties( - scopeData.classOrNamespaceDescriptor, scopeData, namedMembers, fieldName, + scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, fieldName, "class or namespace " + qualifiedName); return namedMembers.propertyDescriptors; @@ -906,7 +906,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes public Set resolveFieldGroup(@NotNull ResolverScopeData scopeData) { getResolverScopeData(scopeData); - final PsiClass psiClass = scopeData.psiClass; + final PsiClass psiClass = scopeData.getPsiClass(); assert psiClass != null; Set descriptors = Sets.newHashSet(); @@ -916,7 +916,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes Name propertyName = entry.getKey(); javaDescriptorPropertiesResolver.resolveNamedGroupProperties( - scopeData.classOrNamespaceDescriptor, scopeData, namedMembers, propertyName, + scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, propertyName, "class or namespace " + psiClass.getQualifiedName()); descriptors.addAll(namedMembers.propertyDescriptors); } @@ -1001,7 +1001,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes NamedMembers namedMembers = namedMembersMap.get(methodName); if (namedMembers != null && namedMembers.methods != null) { - resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass, namedMembers, methodName, scopeData); + resolveNamedGroupFunctions(scopeData.getClassOrNamespaceDescriptor(), scopeData.getPsiClass(), namedMembers, methodName, scopeData); return namedMembers.functionDescriptors; } @@ -1055,7 +1055,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes final PsiMethod psiMethod = method.getPsiMethod(); final PsiClass containingClass = psiMethod.getContainingClass(); - if (scopeData.kotlin) { + if (scopeData.isKotlin()) { // TODO: unless maybe class explicitly extends Object assert containingClass != null; String ownerClassName = containingClass.getQualifiedName(); @@ -1069,7 +1069,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } SimpleFunctionDescriptorImpl functionDescriptorImpl = new SimpleFunctionDescriptorImpl( - scopeData.classOrNamespaceDescriptor, + scopeData.getClassOrNamespaceDescriptor(), resolveAnnotations(psiMethod), Name.identifier(method.getName()), DescriptorKindUtils.flagsToKind(method.getJetMethod().kind()) @@ -1102,7 +1102,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes functionDescriptorImpl.initialize( valueParameterDescriptors.receiverType, - DescriptorUtils.getExpectedThisObjectIfNeeded(scopeData.classOrNamespaceDescriptor), + DescriptorUtils.getExpectedThisObjectIfNeeded(scopeData.getClassOrNamespaceDescriptor()), methodTypeParameters, valueParameterDescriptors.descriptors, returnType, @@ -1364,7 +1364,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes for (Map.Entry entry : scopeData.getNamedMembersMap().entrySet()) { Name methodName = entry.getKey(); NamedMembers namedMembers = entry.getValue(); - resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass, + resolveNamedGroupFunctions(scopeData.getClassOrNamespaceDescriptor(), scopeData.getPsiClass(), namedMembers, methodName, scopeData); functions.addAll(namedMembers.functionDescriptors); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolverHelper.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolverHelper.java index e9bab8f098c..54e43a22611 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolverHelper.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolverHelper.java @@ -208,9 +208,9 @@ class JavaDescriptorResolverHelper { @NotNull static Map getNamedMembers(@NotNull ResolverScopeData resolverScopeData) { - if (resolverScopeData.psiClass != null) { + if (resolverScopeData.getPsiClass() != null) { @SuppressWarnings("ConstantConditions") - Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.psiClass), resolverScopeData.staticMembers, resolverScopeData.kotlin); + Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.getPsiClass()), resolverScopeData.isStaticMembers(), resolverScopeData.isKotlin()); builder.run(); return builder.namedMembersMap; } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java index 88949b8c8eb..6bebb1e1b36 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java @@ -39,7 +39,7 @@ public class JavaPackageScope extends JavaClassOrPackageScope { super(semanticServices, resolverNamespaceData); this.packageFQN = packageFQN; - if (!resolverNamespaceData.staticMembers) { + if (!resolverNamespaceData.isStaticMembers()) { throw new IllegalArgumentException("instance members should be resolved using " + JavaClassMembersScope.class); } }