Refactor Resolver*Data

This commit is contained in:
Pavel V. Talanov
2012-11-02 21:23:11 +04:00
parent 1eea128b29
commit c808aa398c
6 changed files with 18 additions and 96 deletions
@@ -1,37 +0,0 @@
/*
* Copyright 2010-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.lang.resolve.java.data;
import com.intellij.psi.PsiClass;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode;
import org.jetbrains.jet.lang.resolve.name.FqName;
/**
* Class with instance members
*/
public class ResolverBinaryClassData extends ResolverClassData {
public ResolverBinaryClassData(
@NotNull PsiClass psiClass,
@Nullable FqName fqName,
@NotNull ClassDescriptorFromJvmBytecode classDescriptor
) {
super(psiClass, null, fqName, false, classDescriptor);
}
}
@@ -30,11 +30,6 @@ public class ResolverClassData extends ResolverScopeData {
private final ClassDescriptorFromJvmBytecode classDescriptor;
public ResolverClassData(boolean negative) {
super(negative);
this.classDescriptor = null;
}
public ResolverClassData(
@Nullable PsiClass psiClass,
@Nullable PsiPackage psiPackage,
@@ -50,4 +45,20 @@ public class ResolverClassData extends ResolverScopeData {
public ClassDescriptorFromJvmBytecode getClassDescriptor() {
return classDescriptor;
}
@NotNull
public static ResolverClassData createSyntheticClassObjectClassData(
@Nullable PsiClass psiClass,
@NotNull ClassDescriptorFromJvmBytecode descriptor
) {
return new ResolverClassData(psiClass, null, null, true, descriptor);
}
public static ResolverClassData createBinaryClassData(
@NotNull PsiClass psiClass,
@Nullable FqName fqName,
@NotNull ClassDescriptorFromJvmBytecode classDescriptor
) {
return new ResolverClassData(psiClass, null, fqName, false, classDescriptor);
}
}
@@ -95,18 +95,6 @@ public abstract class ResolverScopeData {
}
}
public ResolverScopeData(boolean negative) {
if (!negative) {
throw new IllegalStateException();
}
this.psiClass = null;
this.psiPackage = null;
this.fqName = null;
this.staticMembers = false;
this.kotlin = false;
this.classOrNamespaceDescriptor = null;
}
@NotNull
public PsiElement getPsiPackageOrPsiClass() {
if (psiPackage != null) {
@@ -1,37 +0,0 @@
/*
* Copyright 2010-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.lang.resolve.java.data;
import com.intellij.psi.PsiClass;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode;
import org.jetbrains.jet.lang.resolve.name.FqName;
/**
* @author Pavel Talanov
*/
public class ResolverSyntheticClassObjectClassData extends ResolverClassData {
public ResolverSyntheticClassObjectClassData(
@Nullable PsiClass psiClass,
@Nullable FqName fqName,
@NotNull ClassDescriptorFromJvmBytecode descriptor
) {
super(psiClass, null, fqName, true, descriptor);
}
}
@@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.MutableClassDescriptorLite;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.data.ResolverBinaryClassData;
import org.jetbrains.jet.lang.resolve.java.data.ResolverClassData;
import org.jetbrains.jet.lang.resolve.lazy.LazyClassDescriptor;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -52,7 +51,7 @@ public class ClassDescriptorFromJvmBytecode extends MutableClassDescriptorLite {
@NotNull JavaDescriptorResolver javaDescriptorResolver) {
super(containingDeclaration, kind);
this.javaDescriptorResolver = javaDescriptorResolver;
this.resolverBinaryClassData = new ResolverBinaryClassData(psiClass, fqName, this);
this.resolverBinaryClassData = ResolverClassData.createBinaryClassData(psiClass, fqName, this);
}
@NotNull
@@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.data.ResolverClassData;
import org.jetbrains.jet.lang.resolve.java.data.ResolverSyntheticClassObjectClassData;
import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode;
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassMembersScope;
import org.jetbrains.jet.lang.resolve.java.wrapper.PsiClassWrapper;
@@ -150,8 +149,7 @@ public final class JavaClassObjectResolver {
ClassDescriptorFromJvmBytecode classObjectDescriptor = new ClassDescriptorFromJvmBytecode(
containing, ClassKind.CLASS_OBJECT, psiClass, null, javaDescriptorResolver);
ResolverSyntheticClassObjectClassData
data = new ResolverSyntheticClassObjectClassData(psiClass, null, classObjectDescriptor);
ResolverClassData data = ResolverClassData.createSyntheticClassObjectClassData(psiClass, classObjectDescriptor);
setUpClassObjectDescriptor(containing, fqName, data, getClassObjectName(containing.getName().getName()));
return classObjectDescriptor;