Minor, polish JavaClass

- move utility methods out from JavaClass to the usage site
- JavaClassifier extends JavaNamedElement
This commit is contained in:
Alexander Udalov
2013-08-20 16:06:33 +04:00
parent 5af28cd953
commit 6549a1d10b
6 changed files with 22 additions and 34 deletions
@@ -268,8 +268,8 @@ public final class JavaClassResolver {
@NotNull PostponedTasks taskList,
@NotNull ClassOrNamespaceDescriptor containingDeclaration
) {
ClassDescriptorFromJvmBytecode classDescriptor = new ClassDescriptorFromJvmBytecode(containingDeclaration, javaClass.getKind(),
isInnerClass(javaClass));
ClassDescriptorFromJvmBytecode classDescriptor =
new ClassDescriptorFromJvmBytecode(containingDeclaration, determineClassKind(javaClass), isInnerClass(javaClass));
cache(javaClassToKotlinFqName(fqName), classDescriptor);
@@ -281,7 +281,7 @@ public final class JavaClassResolver {
List<JetType> supertypes = new ArrayList<JetType>();
classDescriptor.setSupertypes(supertypes);
classDescriptor.setVisibility(javaClass.getVisibility());
classDescriptor.setModality(javaClass.getModality());
classDescriptor.setModality(determineClassModality(javaClass));
classDescriptor.createTypeConstructor();
JavaClassNonStaticMembersScope scope = new JavaClassNonStaticMembersScope(classDescriptor, javaClass, false, memberResolver);
@@ -313,6 +313,21 @@ public final class JavaClassResolver {
return classDescriptor;
}
@NotNull
private static ClassKind determineClassKind(@NotNull JavaClass klass) {
if (klass.isInterface()) {
return klass.isAnnotationType() ? ClassKind.ANNOTATION_CLASS : ClassKind.TRAIT;
}
return klass.isEnum() ? ClassKind.ENUM_CLASS : ClassKind.CLASS;
}
@NotNull
private static Modality determineClassModality(@NotNull JavaClass klass) {
return klass.isAnnotationType()
? Modality.FINAL
: Modality.convertFromFlags(klass.isAbstract() || klass.isInterface(), !klass.isFinal());
}
@NotNull
private static FqNameUnsafe getFqNameForClassObject(@NotNull JavaClass javaClass) {
FqName fqName = javaClass.getFqName();
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.resolve.java.resolver;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassKind;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.TypeUsage;
@@ -70,7 +69,7 @@ public final class JavaSupertypeResolver {
@NotNull
private JetType getDefaultSupertype(@NotNull JavaClass javaClass) {
if (OBJECT_FQ_NAME.equals(javaClass.getFqName()) || javaClass.getKind() == ClassKind.ANNOTATION_CLASS) {
if (OBJECT_FQ_NAME.equals(javaClass.getFqName()) || javaClass.isAnnotationType()) {
return KotlinBuiltIns.getInstance().getAnyType();
}
else {
@@ -18,14 +18,11 @@ package org.jetbrains.jet.lang.resolve.java.structure;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.ClassKind;
import org.jetbrains.jet.lang.descriptors.Modality;
import org.jetbrains.jet.lang.resolve.name.FqName;
import java.util.Collection;
public interface JavaClass
extends JavaClassifier, JavaNamedElement, JavaTypeParameterListOwner, JavaModifierListOwner, JavaAnnotationOwner {
public interface JavaClass extends JavaClassifier, JavaTypeParameterListOwner, JavaModifierListOwner, JavaAnnotationOwner {
@NotNull
Collection<JavaClass> getInnerClasses();
@@ -38,15 +35,9 @@ public interface JavaClass
boolean isEnum();
@NotNull
ClassKind getKind();
@Nullable
JavaClass getOuterClass();
@NotNull
Modality getModality();
@NotNull
Collection<JavaClassifierType> getSupertypes();
@@ -16,5 +16,5 @@
package org.jetbrains.jet.lang.resolve.java.structure;
public interface JavaClassifier extends JavaElement {
public interface JavaClassifier extends JavaNamedElement {
}
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.Collection;
public interface JavaTypeParameter extends JavaClassifier, JavaNamedElement {
public interface JavaTypeParameter extends JavaClassifier {
int getIndex();
@NotNull
@@ -23,8 +23,6 @@ import com.intellij.psi.PsiTypeParameter;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.ClassKind;
import org.jetbrains.jet.lang.descriptors.Modality;
import org.jetbrains.jet.lang.descriptors.Visibility;
import org.jetbrains.jet.lang.resolve.java.jetAsJava.JetJavaMirrorMarker;
import org.jetbrains.jet.lang.resolve.java.structure.*;
@@ -76,15 +74,6 @@ public class JavaClassImpl extends JavaClassifierImpl implements JavaClass, Java
return getPsi().isEnum();
}
@Override
@NotNull
public ClassKind getKind() {
if (isInterface()) {
return isAnnotationType() ? ClassKind.ANNOTATION_CLASS : ClassKind.TRAIT;
}
return isEnum() ? ClassKind.ENUM_CLASS : ClassKind.CLASS;
}
@Override
@Nullable
public JavaClass getOuterClass() {
@@ -92,12 +81,6 @@ public class JavaClassImpl extends JavaClassifierImpl implements JavaClass, Java
return outer == null ? null : new JavaClassImpl(outer);
}
@Override
@NotNull
public Modality getModality() {
return isAnnotationType() ? Modality.FINAL : Modality.convertFromFlags(isAbstract() || isInterface(), !isFinal());
}
@NotNull
@Override
public Collection<JavaTypeParameter> getTypeParameters() {