Minor, polish JavaClass
- move utility methods out from JavaClass to the usage site - JavaClassifier extends JavaNamedElement
This commit is contained in:
+18
-3
@@ -268,8 +268,8 @@ public final class JavaClassResolver {
|
|||||||
@NotNull PostponedTasks taskList,
|
@NotNull PostponedTasks taskList,
|
||||||
@NotNull ClassOrNamespaceDescriptor containingDeclaration
|
@NotNull ClassOrNamespaceDescriptor containingDeclaration
|
||||||
) {
|
) {
|
||||||
ClassDescriptorFromJvmBytecode classDescriptor = new ClassDescriptorFromJvmBytecode(containingDeclaration, javaClass.getKind(),
|
ClassDescriptorFromJvmBytecode classDescriptor =
|
||||||
isInnerClass(javaClass));
|
new ClassDescriptorFromJvmBytecode(containingDeclaration, determineClassKind(javaClass), isInnerClass(javaClass));
|
||||||
|
|
||||||
cache(javaClassToKotlinFqName(fqName), classDescriptor);
|
cache(javaClassToKotlinFqName(fqName), classDescriptor);
|
||||||
|
|
||||||
@@ -281,7 +281,7 @@ public final class JavaClassResolver {
|
|||||||
List<JetType> supertypes = new ArrayList<JetType>();
|
List<JetType> supertypes = new ArrayList<JetType>();
|
||||||
classDescriptor.setSupertypes(supertypes);
|
classDescriptor.setSupertypes(supertypes);
|
||||||
classDescriptor.setVisibility(javaClass.getVisibility());
|
classDescriptor.setVisibility(javaClass.getVisibility());
|
||||||
classDescriptor.setModality(javaClass.getModality());
|
classDescriptor.setModality(determineClassModality(javaClass));
|
||||||
classDescriptor.createTypeConstructor();
|
classDescriptor.createTypeConstructor();
|
||||||
|
|
||||||
JavaClassNonStaticMembersScope scope = new JavaClassNonStaticMembersScope(classDescriptor, javaClass, false, memberResolver);
|
JavaClassNonStaticMembersScope scope = new JavaClassNonStaticMembersScope(classDescriptor, javaClass, false, memberResolver);
|
||||||
@@ -313,6 +313,21 @@ public final class JavaClassResolver {
|
|||||||
return classDescriptor;
|
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
|
@NotNull
|
||||||
private static FqNameUnsafe getFqNameForClassObject(@NotNull JavaClass javaClass) {
|
private static FqNameUnsafe getFqNameForClassObject(@NotNull JavaClass javaClass) {
|
||||||
FqName fqName = javaClass.getFqName();
|
FqName fqName = javaClass.getFqName();
|
||||||
|
|||||||
+1
-2
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.resolve.java.resolver;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
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.descriptors.TypeParameterDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||||
import org.jetbrains.jet.lang.resolve.java.TypeUsage;
|
import org.jetbrains.jet.lang.resolve.java.TypeUsage;
|
||||||
@@ -70,7 +69,7 @@ public final class JavaSupertypeResolver {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private JetType getDefaultSupertype(@NotNull JavaClass javaClass) {
|
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();
|
return KotlinBuiltIns.getInstance().getAnyType();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
+1
-10
@@ -18,14 +18,11 @@ package org.jetbrains.jet.lang.resolve.java.structure;
|
|||||||
|
|
||||||
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.descriptors.ClassKind;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.Modality;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public interface JavaClass
|
public interface JavaClass extends JavaClassifier, JavaTypeParameterListOwner, JavaModifierListOwner, JavaAnnotationOwner {
|
||||||
extends JavaClassifier, JavaNamedElement, JavaTypeParameterListOwner, JavaModifierListOwner, JavaAnnotationOwner {
|
|
||||||
@NotNull
|
@NotNull
|
||||||
Collection<JavaClass> getInnerClasses();
|
Collection<JavaClass> getInnerClasses();
|
||||||
|
|
||||||
@@ -38,15 +35,9 @@ public interface JavaClass
|
|||||||
|
|
||||||
boolean isEnum();
|
boolean isEnum();
|
||||||
|
|
||||||
@NotNull
|
|
||||||
ClassKind getKind();
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
JavaClass getOuterClass();
|
JavaClass getOuterClass();
|
||||||
|
|
||||||
@NotNull
|
|
||||||
Modality getModality();
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
Collection<JavaClassifierType> getSupertypes();
|
Collection<JavaClassifierType> getSupertypes();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -16,5 +16,5 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.structure;
|
package org.jetbrains.jet.lang.resolve.java.structure;
|
||||||
|
|
||||||
public interface JavaClassifier extends JavaElement {
|
public interface JavaClassifier extends JavaNamedElement {
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public interface JavaTypeParameter extends JavaClassifier, JavaNamedElement {
|
public interface JavaTypeParameter extends JavaClassifier {
|
||||||
int getIndex();
|
int getIndex();
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
-17
@@ -23,8 +23,6 @@ import com.intellij.psi.PsiTypeParameter;
|
|||||||
import com.intellij.util.containers.ContainerUtil;
|
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.descriptors.ClassKind;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.Modality;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.Visibility;
|
import org.jetbrains.jet.lang.descriptors.Visibility;
|
||||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.JetJavaMirrorMarker;
|
import org.jetbrains.jet.lang.resolve.java.jetAsJava.JetJavaMirrorMarker;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
||||||
@@ -76,15 +74,6 @@ public class JavaClassImpl extends JavaClassifierImpl implements JavaClass, Java
|
|||||||
return getPsi().isEnum();
|
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
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public JavaClass getOuterClass() {
|
public JavaClass getOuterClass() {
|
||||||
@@ -92,12 +81,6 @@ public class JavaClassImpl extends JavaClassifierImpl implements JavaClass, Java
|
|||||||
return outer == null ? null : new JavaClassImpl(outer);
|
return outer == null ? null : new JavaClassImpl(outer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@NotNull
|
|
||||||
public Modality getModality() {
|
|
||||||
return isAnnotationType() ? Modality.FINAL : Modality.convertFromFlags(isAbstract() || isInterface(), !isFinal());
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<JavaTypeParameter> getTypeParameters() {
|
public Collection<JavaTypeParameter> getTypeParameters() {
|
||||||
|
|||||||
Reference in New Issue
Block a user