diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AbstractClassBuilder.java b/compiler/backend/src/org/jetbrains/jet/codegen/AbstractClassBuilder.java index 13ceb90a550..36784d3f688 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AbstractClassBuilder.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AbstractClassBuilder.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.codegen; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.org.objectweb.asm.*; public abstract class AbstractClassBuilder implements ClassBuilder { @@ -64,8 +63,7 @@ public abstract class AbstractClassBuilder implements ClassBuilder { @Override @NotNull public MethodVisitor newMethod( - @Nullable PsiElement origin, - @Nullable DeclarationDescriptor descriptor, + @NotNull JvmDeclarationOrigin origin, int access, @NotNull String name, @NotNull String desc, diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClassBuilder.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClassBuilder.java index d38820982b1..a00012c1bc0 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClassBuilder.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClassBuilder.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.codegen; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.org.objectweb.asm.AnnotationVisitor; import org.jetbrains.org.objectweb.asm.ClassVisitor; import org.jetbrains.org.objectweb.asm.FieldVisitor; @@ -38,8 +37,7 @@ public interface ClassBuilder { @NotNull MethodVisitor newMethod( - @Nullable PsiElement origin, - @Nullable DeclarationDescriptor descriptor, + @NotNull JvmDeclarationOrigin origin, int access, @NotNull String name, @NotNull String desc, diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java index 77203cf090a..37c1ff1e411 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClosureCodegen.java @@ -201,7 +201,7 @@ public class ClosureCodegen extends ParentCodegenAware { private void generateConstInstance(@NotNull ClassBuilder cv) { - MethodVisitor mv = cv.newMethod(fun, funDescriptor, ACC_STATIC | ACC_SYNTHETIC, "", "()V", null, ArrayUtil.EMPTY_STRING_ARRAY); + MethodVisitor mv = cv.newMethod(OtherOrigin(fun, funDescriptor), ACC_STATIC | ACC_SYNTHETIC, "", "()V", null, ArrayUtil.EMPTY_STRING_ARRAY); InstructionAdapter iv = new InstructionAdapter(mv); cv.newField(OtherOrigin(fun, funDescriptor), ACC_STATIC | ACC_FINAL, JvmAbi.INSTANCE_FIELD, asmType.getDescriptor(), null, null); @@ -221,7 +221,7 @@ public class ClosureCodegen extends ParentCodegenAware { if (bridge.equals(delegate)) return; MethodVisitor mv = - cv.newMethod(fun, funDescriptor, ACC_PUBLIC | ACC_BRIDGE, bridge.getName(), bridge.getDescriptor(), null, ArrayUtil.EMPTY_STRING_ARRAY); + cv.newMethod(OtherOrigin(fun, funDescriptor), ACC_PUBLIC | ACC_BRIDGE, bridge.getName(), bridge.getDescriptor(), null, ArrayUtil.EMPTY_STRING_ARRAY); if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return; @@ -258,7 +258,7 @@ public class ClosureCodegen extends ParentCodegenAware { Type[] argTypes = fieldListToTypeArray(args); Method constructor = new Method("", Type.VOID_TYPE, argTypes); - MethodVisitor mv = cv.newMethod(fun, funDescriptor, visibilityFlag, "", constructor.getDescriptor(), null, + MethodVisitor mv = cv.newMethod(OtherOrigin(fun, funDescriptor), visibilityFlag, "", constructor.getDescriptor(), null, ArrayUtil.EMPTY_STRING_ARRAY); if (state.getClassBuilderMode() == ClassBuilderMode.FULL) { mv.visitCode(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/DelegatingClassBuilder.java b/compiler/backend/src/org/jetbrains/jet/codegen/DelegatingClassBuilder.java index 1f31dc49be0..5b314f2f585 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/DelegatingClassBuilder.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/DelegatingClassBuilder.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.codegen; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.org.objectweb.asm.AnnotationVisitor; import org.jetbrains.org.objectweb.asm.ClassVisitor; import org.jetbrains.org.objectweb.asm.FieldVisitor; @@ -45,15 +44,14 @@ public abstract class DelegatingClassBuilder implements ClassBuilder { @NotNull @Override public MethodVisitor newMethod( - @Nullable PsiElement origin, - @Nullable DeclarationDescriptor descriptor, + @NotNull JvmDeclarationOrigin origin, int access, @NotNull String name, @NotNull String desc, @Nullable String signature, @Nullable String[] exceptions ) { - return getDelegate().newMethod(origin, descriptor, access, name, desc, signature, exceptions); + return getDelegate().newMethod(origin, access, name, desc, signature, exceptions); } @NotNull diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index 779e4be2b0a..50047c240ef 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -63,6 +63,7 @@ import java.util.List; import java.util.Set; import static org.jetbrains.jet.codegen.AsmUtil.*; +import static org.jetbrains.jet.codegen.CodegenPackage.OtherOrigin; import static org.jetbrains.jet.codegen.JvmSerializationBindings.*; import static org.jetbrains.jet.codegen.binding.CodegenBinding.isLocalNamedFun; import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.DECLARATION; @@ -126,8 +127,7 @@ public class FunctionCodegen extends ParentCodegenAware { OwnerKind methodContextKind = methodContext.getContextKind(); Method asmMethod = jvmSignature.getAsmMethod(); - MethodVisitor mv = v.newMethod(origin, - functionDescriptor, + MethodVisitor mv = v.newMethod(OtherOrigin(origin, functionDescriptor), getMethodAsmFlags(functionDescriptor, methodContextKind), asmMethod.getName(), asmMethod.getDescriptor(), @@ -507,7 +507,7 @@ public class FunctionCodegen extends ParentCodegenAware { return; } int flags = getVisibilityAccessFlag(constructorDescriptor); - MethodVisitor mv = classBuilder.newMethod(null, constructorDescriptor, flags, "", "()V", null, + MethodVisitor mv = classBuilder.newMethod(OtherOrigin(constructorDescriptor), flags, "", "()V", null, getThrownExceptions(constructorDescriptor, state.getTypeMapper())); if (state.getClassBuilderMode() == ClassBuilderMode.LIGHT_CLASSES) return; @@ -559,7 +559,7 @@ public class FunctionCodegen extends ParentCodegenAware { Method defaultMethod = typeMapper.mapDefaultMethod(functionDescriptor, kind, owner); - MethodVisitor mv = v.newMethod(null, functionDescriptor, flags | (isConstructor ? 0 : ACC_STATIC), + MethodVisitor mv = v.newMethod(OtherOrigin(functionDescriptor), flags | (isConstructor ? 0 : ACC_STATIC), defaultMethod.getName(), defaultMethod.getDescriptor(), null, getThrownExceptions(functionDescriptor, typeMapper)); @@ -729,7 +729,7 @@ public class FunctionCodegen extends ParentCodegenAware { ) { int flags = ACC_PUBLIC | ACC_BRIDGE | ACC_SYNTHETIC; // TODO. - MethodVisitor mv = v.newMethod(null, descriptor, flags, delegateTo.getName(), bridge.getDescriptor(), null, null); + MethodVisitor mv = v.newMethod(OtherOrigin(descriptor), flags, delegateTo.getName(), bridge.getDescriptor(), null, null); if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return; mv.visitCode(); @@ -772,7 +772,7 @@ public class FunctionCodegen extends ParentCodegenAware { int flags = ACC_PUBLIC; - MethodVisitor mv = v.newMethod(null, functionDescriptor, flags, delegateMethod.getName(), delegateMethod.getDescriptor(), null, + MethodVisitor mv = v.newMethod(OtherOrigin(functionDescriptor), flags, delegateMethod.getName(), delegateMethod.getDescriptor(), null, getThrownExceptions(functionDescriptor, typeMapper)); if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return; diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 17f8c04440e..0cbcfd942a0 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -68,6 +68,7 @@ import java.util.*; import static org.jetbrains.jet.codegen.AsmUtil.*; import static org.jetbrains.jet.codegen.CodegenPackage.OtherOrigin; import static org.jetbrains.jet.codegen.JvmCodegenUtil.*; +import static org.jetbrains.jet.codegen.JvmDeclarationOrigin.NO_ORIGIN; import static org.jetbrains.jet.codegen.binding.CodegenBinding.*; import static org.jetbrains.jet.descriptors.serialization.NameSerializationUtil.createNameResolver; import static org.jetbrains.jet.lang.resolve.BindingContextUtils.descriptorToDeclaration; @@ -493,7 +494,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { ACC_PUBLIC | ACC_ABSTRACT : ACC_PUBLIC; if (JvmCodegenUtil.getDeclaredFunctionByRawSignature(descriptor, Name.identifier("toArray"), builtIns.getArray()) == null) { - MethodVisitor mv = v.newMethod(null, null, access, "toArray", "()[Ljava/lang/Object;", null, null); + MethodVisitor mv = v.newMethod(NO_ORIGIN, access, "toArray", "()[Ljava/lang/Object;", null, null); if (descriptor.getKind() != ClassKind.TRAIT) { InstructionAdapter iv = new InstructionAdapter(mv); @@ -508,7 +509,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { } if (!isGenericToArrayPresent()) { - MethodVisitor mv = v.newMethod(null, null, access, "toArray", "([Ljava/lang/Object;)[Ljava/lang/Object;", null, null); + MethodVisitor mv = v.newMethod(NO_ORIGIN, access, "toArray", "([Ljava/lang/Object;)[Ljava/lang/Object;", null, null); if (descriptor.getKind() != ClassKind.TRAIT) { InstructionAdapter iv = new InstructionAdapter(mv); @@ -536,7 +537,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { int access = descriptor.getKind() == ClassKind.TRAIT ? ACC_PUBLIC | ACC_ABSTRACT : ACC_PUBLIC; - MethodVisitor mv = v.newMethod(null, null, access, name, desc, null, null); + MethodVisitor mv = v.newMethod(NO_ORIGIN, access, name, desc, null, null); if (descriptor.getKind() != ClassKind.TRAIT) { mv.visitCode(); genThrow(mv, "java/lang/UnsupportedOperationException", "Mutating immutable collection"); @@ -620,7 +621,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { KotlinBuiltIns.getInstance().getBoolean(), KotlinBuiltIns.getInstance().getAny() ); - MethodVisitor mv = v.newMethod(null, equalsFunction, ACC_PUBLIC, "equals", "(Ljava/lang/Object;)Z", null, null); + MethodVisitor mv = v.newMethod(OtherOrigin(equalsFunction), ACC_PUBLIC, "equals", "(Ljava/lang/Object;)Z", null, null); InstructionAdapter iv = new InstructionAdapter(mv); mv.visitCode(); @@ -679,7 +680,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { descriptor, Name.identifier(CodegenUtil.HASH_CODE_METHOD_NAME), KotlinBuiltIns.getInstance().getInt() ); - MethodVisitor mv = v.newMethod(null, hashCodeFunction, ACC_PUBLIC, "hashCode", "()I", null, null); + MethodVisitor mv = v.newMethod(OtherOrigin(hashCodeFunction), ACC_PUBLIC, "hashCode", "()I", null, null); InstructionAdapter iv = new InstructionAdapter(mv); mv.visitCode(); @@ -730,7 +731,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { descriptor, Name.identifier(CodegenUtil.TO_STRING_METHOD_NAME), KotlinBuiltIns.getInstance().getString() ); - MethodVisitor mv = v.newMethod(null, toString, ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null); + MethodVisitor mv = v.newMethod(OtherOrigin(toString), ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null); InstructionAdapter iv = new InstructionAdapter(mv); mv.visitCode(); @@ -887,7 +888,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { return DescriptorUtils.isEnumValuesMethod(descriptor); } }); - MethodVisitor mv = v.newMethod(myClass, valuesFunction, ACC_PUBLIC | ACC_STATIC, "values", "()" + type.getDescriptor(), null, null); + MethodVisitor mv = v.newMethod(OtherOrigin(myClass, valuesFunction), ACC_PUBLIC | ACC_STATIC, "values", "()" + type.getDescriptor(), null, null); if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return; mv.visitCode(); @@ -905,7 +906,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { return DescriptorUtils.isEnumValueOfMethod(descriptor); } }); - MethodVisitor mv = v.newMethod(myClass, valueOfFunction, + MethodVisitor mv = v.newMethod(OtherOrigin(myClass, valueOfFunction), ACC_PUBLIC | ACC_STATIC, "valueOf", "(Ljava/lang/String;)" + classAsmType.getDescriptor(), null, null); if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return; diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt b/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt index f3fa34dcf73..dedba90e1f1 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmDeclarationOrigin.kt @@ -35,8 +35,11 @@ public class JvmDeclarationOrigin( } } -public fun OtherOrigin(element: PsiElement, descriptor: DeclarationDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, element, descriptor) +public fun OtherOrigin(element: PsiElement?, descriptor: DeclarationDescriptor?): JvmDeclarationOrigin = + if (element == null && descriptor == null) + JvmDeclarationOrigin.NO_ORIGIN + else JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, element, descriptor) -public fun OtherOrigin(element: PsiElement): JvmDeclarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, element, null) +public fun OtherOrigin(element: PsiElement?): JvmDeclarationOrigin = OtherOrigin(element, null) -public fun OtherOrigin(descriptor: DeclarationDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, null, descriptor) +public fun OtherOrigin(descriptor: DeclarationDescriptor?): JvmDeclarationOrigin = OtherOrigin(null, descriptor) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java index a6817bed992..814871b9898 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java @@ -50,6 +50,7 @@ import java.util.List; import static org.jetbrains.jet.codegen.AsmUtil.boxType; import static org.jetbrains.jet.codegen.AsmUtil.isPrimitive; +import static org.jetbrains.jet.codegen.CodegenPackage.OtherOrigin; import static org.jetbrains.jet.codegen.JvmDeclarationOrigin.NO_ORIGIN; import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.SYNTHESIZED; import static org.jetbrains.jet.lang.resolve.BindingContext.VARIABLE; @@ -200,7 +201,7 @@ public abstract class MemberCodegen should not be generated for light classes. Descriptor: " + descriptor; if (clInit == null) { - MethodVisitor mv = v.newMethod(null, descriptor, ACC_STATIC, "", "()V", null, null); + MethodVisitor mv = v.newMethod(OtherOrigin(descriptor), ACC_STATIC, "", "()V", null, null); mv.visitCode(); SimpleFunctionDescriptorImpl clInit = SimpleFunctionDescriptorImpl.create(descriptor, Annotations.EMPTY, Name.special(""), SYNTHESIZED); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java index a401cd8a3a0..be7b9dc2f80 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java @@ -130,7 +130,7 @@ public class PropertyCodegen { Type type = typeMapper.mapType(descriptor); String name = p.getName(); assert name != null : "Annotation parameter has no name: " + p.getText(); - MethodVisitor visitor = v.newMethod(p, descriptor, ACC_PUBLIC | ACC_ABSTRACT, name, "()" + type.getDescriptor(), null, null); + MethodVisitor visitor = v.newMethod(OtherOrigin(p, descriptor), ACC_PUBLIC | ACC_ABSTRACT, name, "()" + type.getDescriptor(), null, null); JetExpression defaultValue = p.getDefaultValue(); if (defaultValue != null) { CompileTimeConstant constant = ExpressionCodegen.getCompileTimeConstant(defaultValue, bindingContext); @@ -171,7 +171,7 @@ public class PropertyCodegen { if (!isTrait(context.getContextDescriptor()) || kind == OwnerKind.TRAIT_IMPL) { int flags = ACC_DEPRECATED | ACC_FINAL | ACC_PRIVATE | ACC_STATIC | ACC_SYNTHETIC; - MethodVisitor mv = v.newMethod(null, descriptor, flags, name, desc, null, null); + MethodVisitor mv = v.newMethod(OtherOrigin(descriptor), flags, name, desc, null, null); AnnotationCodegen.forMethod(mv, typeMapper).genAnnotations(descriptor); mv.visitCode(); mv.visitInsn(Opcodes.RETURN); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java index 39f08057e84..306152275b0 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/SamWrapperCodegen.java @@ -95,7 +95,7 @@ public class SamWrapperCodegen { } private void generateConstructor(Type ownerType, Type functionType, ClassBuilder cv) { - MethodVisitor mv = cv.newMethod(null, samType.getJavaClassDescriptor(), + MethodVisitor mv = cv.newMethod(OtherOrigin(samType.getJavaClassDescriptor()), NO_FLAG_PACKAGE_PRIVATE, "", Type.getMethodDescriptor(Type.VOID_TYPE, functionType), null, null); if (state.getClassBuilderMode() == ClassBuilderMode.FULL) { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ScriptCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ScriptCodegen.java index 266e2e17bb7..84ab347bc6e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ScriptCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ScriptCodegen.java @@ -129,7 +129,7 @@ public class ScriptCodegen extends MemberCodegen { JvmMethodSignature jvmSignature = typeMapper.mapScriptSignature(scriptDescriptor, context.getEarlierScripts()); MethodVisitor mv = classBuilder.newMethod( - scriptDeclaration, scriptDescriptor.getClassDescriptor().getUnsubstitutedPrimaryConstructor(), + OtherOrigin(scriptDeclaration, scriptDescriptor.getClassDescriptor().getUnsubstitutedPrimaryConstructor()), ACC_PUBLIC, jvmSignature.getAsmMethod().getName(), jvmSignature.getAsmMethod().getDescriptor(), null, null); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/SignatureCollectingClassBuilderFactory.kt b/compiler/backend/src/org/jetbrains/jet/codegen/SignatureCollectingClassBuilderFactory.kt index b5c3256ede0..42cf689eb31 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/SignatureCollectingClassBuilderFactory.kt +++ b/compiler/backend/src/org/jetbrains/jet/codegen/SignatureCollectingClassBuilderFactory.kt @@ -65,9 +65,9 @@ public abstract class SignatureCollectingClassBuilderFactory( return super.newField(origin, access, name, desc, signature, value) } - override fun newMethod(origin: PsiElement?, descriptor: DeclarationDescriptor?, access: Int, name: String, desc: String, signature: String?, exceptions: Array?): MethodVisitor { - signatures.putValue(RawSignature(name, desc, MemberKind.METHOD), JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, origin, descriptor)) - return super.newMethod(origin, descriptor, access, name, desc, signature, exceptions) + override fun newMethod(origin: JvmDeclarationOrigin, access: Int, name: String, desc: String, signature: String?, exceptions: Array?): MethodVisitor { + signatures.putValue(RawSignature(name, desc, MemberKind.METHOD), origin) + return super.newMethod(origin, access, name, desc, signature, exceptions) } override fun done() { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/AnonymousObjectTransformer.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/AnonymousObjectTransformer.java index e47975477b5..2033946d74c 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/AnonymousObjectTransformer.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/AnonymousObjectTransformer.java @@ -21,10 +21,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.OutputFile; -import org.jetbrains.jet.codegen.AsmUtil; -import org.jetbrains.jet.codegen.ClassBuilder; -import org.jetbrains.jet.codegen.FieldInfo; -import org.jetbrains.jet.codegen.StackValue; +import org.jetbrains.jet.codegen.*; import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.codegen.state.JetTypeMapper; import org.jetbrains.org.objectweb.asm.*; @@ -37,6 +34,8 @@ import org.jetbrains.org.objectweb.asm.tree.VarInsnNode; import java.io.IOException; import java.util.*; +import static org.jetbrains.jet.codegen.JvmDeclarationOrigin.NO_ORIGIN; + public class AnonymousObjectTransformer { protected final GenerationState state; @@ -232,7 +231,7 @@ public class AnonymousObjectTransformer { String constructorDescriptor = Type.getMethodDescriptor(Type.VOID_TYPE, descTypes.toArray(new Type[descTypes.size()])); - MethodVisitor constructorVisitor = classBuilder.newMethod(null, null, + MethodVisitor constructorVisitor = classBuilder.newMethod(NO_ORIGIN, AsmUtil.NO_FLAG_PACKAGE_PRIVATE, "", constructorDescriptor, null, ArrayUtil.EMPTY_STRING_ARRAY); @@ -304,8 +303,7 @@ public class AnonymousObjectTransformer { @NotNull private static MethodVisitor newMethod(@NotNull ClassBuilder builder, @NotNull MethodNode original) { return builder.newMethod( - null, - null, + NO_ORIGIN, original.access, original.name, original.desc, diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/inline/RemappingClassBuilder.java b/compiler/backend/src/org/jetbrains/jet/codegen/inline/RemappingClassBuilder.java index 2f957c833a7..32556b5c2f3 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/inline/RemappingClassBuilder.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/inline/RemappingClassBuilder.java @@ -16,13 +16,11 @@ package org.jetbrains.jet.codegen.inline; -import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.codegen.ClassBuilder; import org.jetbrains.jet.codegen.DelegatingClassBuilder; import org.jetbrains.jet.codegen.JvmDeclarationOrigin; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.org.objectweb.asm.AnnotationVisitor; import org.jetbrains.org.objectweb.asm.ClassVisitor; import org.jetbrains.org.objectweb.asm.FieldVisitor; @@ -60,8 +58,7 @@ public class RemappingClassBuilder extends DelegatingClassBuilder { @Override @NotNull public MethodVisitor newMethod( - @Nullable PsiElement origin, - @Nullable DeclarationDescriptor descriptor, + @NotNull JvmDeclarationOrigin origin, int access, @NotNull String name, @NotNull String desc, @@ -69,7 +66,7 @@ public class RemappingClassBuilder extends DelegatingClassBuilder { @Nullable String[] exceptions ) { return new RemappingMethodAdapter(access, desc, - builder.newMethod(origin, descriptor, access, name, remapper.mapMethodDesc(desc), signature, exceptions), + builder.newMethod(origin, access, name, remapper.mapMethodDesc(desc), signature, exceptions), remapper); } diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java index b0b105c5992..a6cb3cce5c1 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/StubClassBuilder.java @@ -25,7 +25,6 @@ import com.intellij.util.containers.Stack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.codegen.JvmDeclarationOrigin; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.org.objectweb.asm.ClassVisitor; import org.jetbrains.org.objectweb.asm.FieldVisitor; import org.jetbrains.org.objectweb.asm.MethodVisitor; @@ -99,19 +98,18 @@ public class StubClassBuilder extends AbstractClassBuilder { @NotNull @Override public MethodVisitor newMethod( - @Nullable PsiElement origin, - @Nullable DeclarationDescriptor descriptor, + @NotNull JvmDeclarationOrigin origin, int access, @NotNull String name, @NotNull String desc, @Nullable String signature, @Nullable String[] exceptions ) { - MethodVisitor internalVisitor = super.newMethod(origin, descriptor, access, name, desc, signature, exceptions); + MethodVisitor internalVisitor = super.newMethod(origin, access, name, desc, signature, exceptions); if (internalVisitor != EMPTY_METHOD_VISITOR) { // If stub for method generated - markLastChild(origin); + markLastChild(origin.getElement()); } return internalVisitor;