diff --git a/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtil.java b/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtil.java index c6980d8324a..c42c38c13e0 100644 --- a/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtil.java +++ b/compiler/backend-common/src/org/jetbrains/jet/backend/common/CodegenUtil.java @@ -170,7 +170,7 @@ public class CodegenUtil { } private static boolean rawTypeMatches(JetType type, ClassifierDescriptor classifier) { - return type.getConstructor().getDeclarationDescriptor().getOriginal() == classifier.getOriginal(); + return type.getConstructor().equals(classifier.getTypeConstructor()); } public static boolean isEnumValueOfMethod(@NotNull FunctionDescriptor functionDescriptor) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index fe53b1a87ec..ca45ffa6245 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -511,7 +511,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { int access = descriptor.getKind() == ClassKind.TRAIT ? ACC_PUBLIC | ACC_ABSTRACT : ACC_PUBLIC; - if (JvmCodegenUtil.getDeclaredFunctionByRawSignature(descriptor, Name.identifier("toArray"), builtIns.getArray()) == null) { + if (CodegenUtil.getDeclaredFunctionByRawSignature(descriptor, Name.identifier("toArray"), builtIns.getArray()) == null) { MethodVisitor mv = v.newMethod(NO_ORIGIN, access, "toArray", "()[Ljava/lang/Object;", null, null); if (descriptor.getKind() != ClassKind.TRAIT) { @@ -556,7 +556,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { ) { // avoid generating same signature twice if (!generatedSignatures.add(name + desc)) return; - if (JvmCodegenUtil.getDeclaredFunctionByRawSignature( + if (CodegenUtil.getDeclaredFunctionByRawSignature( descriptor, Name.identifier(name), returnedClassifier, valueParameterClassifiers) == null) { int access = descriptor.getKind() == ClassKind.TRAIT ? ACC_PUBLIC | ACC_ABSTRACT : diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java index 72f84221699..ec243a4e436 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java @@ -35,21 +35,16 @@ import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.codeFragmentUtil.CodeFragmentUtilPackage; import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils; import org.jetbrains.jet.lang.resolve.DescriptorUtils; -import org.jetbrains.jet.lang.resolve.calls.CallResolverUtil; import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor; import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyPackageFragmentScopeForJavaPackage; import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalPackageFragmentProvider; -import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.io.File; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; import static org.jetbrains.jet.lang.descriptors.Modality.ABSTRACT; import static org.jetbrains.jet.lang.descriptors.Modality.FINAL; @@ -79,43 +74,6 @@ public class JvmCodegenUtil { return stack.empty() ? null : stack.peek(); } - @Nullable - public static FunctionDescriptor getDeclaredFunctionByRawSignature( - @NotNull ClassDescriptor owner, - @NotNull Name name, - @NotNull ClassifierDescriptor returnedClassifier, - @NotNull ClassifierDescriptor... valueParameterClassifiers - ) { - Collection functions = owner.getDefaultType().getMemberScope().getFunctions(name); - for (FunctionDescriptor function : functions) { - if (!CallResolverUtil.isOrOverridesSynthesized(function) - && function.getTypeParameters().isEmpty() - && valueParameterClassesMatch(function.getValueParameters(), Arrays.asList(valueParameterClassifiers)) - && rawTypeMatches(function.getReturnType(), returnedClassifier)) { - return function; - } - } - return null; - } - - private static boolean valueParameterClassesMatch( - @NotNull List parameters, - @NotNull List classifiers) { - if (parameters.size() != classifiers.size()) return false; - for (int i = 0; i < parameters.size(); i++) { - ValueParameterDescriptor parameterDescriptor = parameters.get(i); - ClassifierDescriptor classDescriptor = classifiers.get(i); - if (!rawTypeMatches(parameterDescriptor.getType(), classDescriptor)) { - return false; - } - } - return true; - } - - private static boolean rawTypeMatches(JetType type, ClassifierDescriptor classifier) { - return type.getConstructor().equals(classifier.getTypeConstructor()); - } - private static boolean isCallInsideSameClassAsDeclared(@NotNull CallableMemberDescriptor descriptor, @NotNull CodegenContext context) { boolean isFakeOverride = descriptor.getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE; boolean isDelegate = descriptor.getKind() == CallableMemberDescriptor.Kind.DELEGATION;