From 0c1c0e00998d38b5000a24d2330a4658a65fd4d1 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 8 Nov 2013 19:03:48 +0400 Subject: [PATCH] Always generate local variable table to preserve parameter names --- .../jetbrains/jet/codegen/FunctionCodegen.java | 18 +++++++++++++++--- .../asJava/nullabilityAnnotations/Class.java | 8 ++++---- .../ClassWithConstructor.java | 2 +- .../ClassWithConstructorAndProperties.java | 2 +- .../nullabilityAnnotations/Primitives.java | 2 +- .../nullabilityAnnotations/PrivateInClass.java | 4 ++-- .../nullabilityAnnotations/PrivateInTrait.java | 2 +- .../asJava/nullabilityAnnotations/Trait.java | 4 ++-- .../_DefaultPackage.java | 10 +++++----- 9 files changed, 32 insertions(+), 20 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java index 76b301408d4..6ef4f1fe576 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -124,9 +124,21 @@ public class FunctionCodegen extends ParentCodegenAwareImpl { generateJetValueParameterAnnotations(mv, functionDescriptor, jvmSignature); - if (state.getClassBuilderMode() == ClassBuilderMode.LIGHT_CLASSES) return; - - if (isAbstractMethod(functionDescriptor, methodContext.getContextKind())) return; + if (state.getClassBuilderMode() == ClassBuilderMode.LIGHT_CLASSES || + isAbstractMethod(functionDescriptor, methodContext.getContextKind())) { + generateLocalVariableTable( + mv, + jvmSignature, + functionDescriptor, + getThisTypeForFunction(functionDescriptor, methodContext), + new Label(), + new Label(), + new HashSet(getParameterNamesAsStrings(functionDescriptor)), + Collections.emptyMap(), + methodContext.getContextKind() + ); + return; + } generateMethodBody(mv, functionDescriptor, methodContext, jvmSignature, strategy); diff --git a/compiler/testData/asJava/nullabilityAnnotations/Class.java b/compiler/testData/asJava/nullabilityAnnotations/Class.java index 7c52678b9da..394923d8d0e 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/Class.java +++ b/compiler/testData/asJava/nullabilityAnnotations/Class.java @@ -9,10 +9,10 @@ public final class Class implements jet.JetObject { private java.lang.String notNullVar; @org.jetbrains.annotations.NotNull - public final java.lang.String notNull(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String p) { /* compiled code */ } + public final java.lang.String notNull(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String a) { /* compiled code */ } @org.jetbrains.annotations.Nullable - public final java.lang.String nullable(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "a", type = "?") java.lang.String p) { /* compiled code */ } + public final java.lang.String nullable(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "a", type = "?") java.lang.String a) { /* compiled code */ } @org.jetbrains.annotations.NotNull public final java.lang.String notNullWithNN() { /* compiled code */ } @@ -56,7 +56,7 @@ public final class Class implements jet.JetObject { @org.jetbrains.annotations.Nullable @org.jetbrains.annotations.NotNull - public final void setNotNullVarWithGetSet(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "v") java.lang.String p) { /* compiled code */ } + public final void setNotNullVarWithGetSet(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "v") java.lang.String v) { /* compiled code */ } @org.jetbrains.annotations.NotNull @org.jetbrains.annotations.Nullable @@ -67,7 +67,7 @@ public final class Class implements jet.JetObject { public final java.lang.String getNullableVarWithGetSet() { /* compiled code */ } @org.jetbrains.annotations.NotNull - public final void setNullableVarWithGetSet(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "v", type = "?") java.lang.String p) { /* compiled code */ } + public final void setNullableVarWithGetSet(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "v", type = "?") java.lang.String v) { /* compiled code */ } @org.jetbrains.annotations.NotNull public Class() { /* compiled code */ } diff --git a/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructor.java b/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructor.java index e65d0ed3a58..63fa0808070 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructor.java +++ b/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructor.java @@ -1,4 +1,4 @@ public final class ClassWithConstructor implements jet.JetObject { @org.jetbrains.annotations.NotNull - public ClassWithConstructor(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "nullable", type = "?") java.lang.String p, @org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "notNull") java.lang.String p1) { /* compiled code */ } + public ClassWithConstructor(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "nullable", type = "?") java.lang.String nullable, @org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "notNull") java.lang.String notNull) { /* compiled code */ } } \ No newline at end of file diff --git a/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructorAndProperties.java b/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructorAndProperties.java index 3de4644c2ea..97b3230151b 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructorAndProperties.java +++ b/compiler/testData/asJava/nullabilityAnnotations/ClassWithConstructorAndProperties.java @@ -11,5 +11,5 @@ public final class ClassWithConstructorAndProperties implements jet.JetObject { public final java.lang.String getNotNull() { /* compiled code */ } @org.jetbrains.annotations.NotNull - public ClassWithConstructorAndProperties(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "nullable", type = "?") java.lang.String p, @org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "notNull") java.lang.String p1) { /* compiled code */ } + public ClassWithConstructorAndProperties(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "nullable", type = "?") java.lang.String nullable, @org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "notNull") java.lang.String notNull) { /* compiled code */ } } \ No newline at end of file diff --git a/compiler/testData/asJava/nullabilityAnnotations/Primitives.java b/compiler/testData/asJava/nullabilityAnnotations/Primitives.java index 761223d0b1e..0f3a81a7a42 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/Primitives.java +++ b/compiler/testData/asJava/nullabilityAnnotations/Primitives.java @@ -1,5 +1,5 @@ public interface Primitives extends jet.JetObject { - int $$int /* Real name is 'int' */(@jet.runtime.typeinfo.JetValueParameter(name = "x") int p); + int $$int /* Real name is 'int' */(@jet.runtime.typeinfo.JetValueParameter(name = "x") int x); @org.jetbrains.annotations.Nullable java.lang.Boolean getNullableBool(); diff --git a/compiler/testData/asJava/nullabilityAnnotations/PrivateInClass.java b/compiler/testData/asJava/nullabilityAnnotations/PrivateInClass.java index 529fb9ed599..bdc456393f6 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/PrivateInClass.java +++ b/compiler/testData/asJava/nullabilityAnnotations/PrivateInClass.java @@ -6,7 +6,7 @@ public final class PrivateInClass implements jet.JetObject { private final java.lang.String getN() { /* compiled code */ } - private final java.lang.String bar(@jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String p, @jet.runtime.typeinfo.JetValueParameter(name = "b", type = "?") java.lang.String p1) { /* compiled code */ } + private final java.lang.String bar(@jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String a, @jet.runtime.typeinfo.JetValueParameter(name = "b", type = "?") java.lang.String b) { /* compiled code */ } - private PrivateInClass(@jet.runtime.typeinfo.JetValueParameter(name = "s", type = "?") java.lang.String p) { /* compiled code */ } + private PrivateInClass(@jet.runtime.typeinfo.JetValueParameter(name = "s", type = "?") java.lang.String s) { /* compiled code */ } } \ No newline at end of file diff --git a/compiler/testData/asJava/nullabilityAnnotations/PrivateInTrait.java b/compiler/testData/asJava/nullabilityAnnotations/PrivateInTrait.java index 9af3c2a5e95..699ae9fea12 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/PrivateInTrait.java +++ b/compiler/testData/asJava/nullabilityAnnotations/PrivateInTrait.java @@ -6,5 +6,5 @@ public interface PrivateInTrait extends jet.JetObject { java.lang.String getN(); @org.jetbrains.annotations.Nullable - java.lang.String bar(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String p, @org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "b", type = "?") java.lang.String p1); + java.lang.String bar(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String a, @org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "b", type = "?") java.lang.String b); } \ No newline at end of file diff --git a/compiler/testData/asJava/nullabilityAnnotations/Trait.java b/compiler/testData/asJava/nullabilityAnnotations/Trait.java index 329da257947..520787fb8ca 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/Trait.java +++ b/compiler/testData/asJava/nullabilityAnnotations/Trait.java @@ -1,9 +1,9 @@ public interface Trait extends jet.JetObject { @org.jetbrains.annotations.NotNull - java.lang.String notNull(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String p); + java.lang.String notNull(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String a); @org.jetbrains.annotations.Nullable - java.lang.String nullable(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "a", type = "?") java.lang.String p); + java.lang.String nullable(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "a", type = "?") java.lang.String a); @org.jetbrains.annotations.NotNull java.lang.String notNullWithNN(); diff --git a/compiler/testData/asJava/nullabilityAnnotations/_DefaultPackage.java b/compiler/testData/asJava/nullabilityAnnotations/_DefaultPackage.java index ff4a60b8720..7922b6f20db 100644 --- a/compiler/testData/asJava/nullabilityAnnotations/_DefaultPackage.java +++ b/compiler/testData/asJava/nullabilityAnnotations/_DefaultPackage.java @@ -1,9 +1,9 @@ public final class _DefaultPackage { @org.jetbrains.annotations.NotNull - public static final java.lang.String notNull(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String p) { /* compiled code */ } + public static final java.lang.String notNull(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String a) { /* compiled code */ } @org.jetbrains.annotations.Nullable - public static final java.lang.String nullable(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "a", type = "?") java.lang.String p) { /* compiled code */ } + public static final java.lang.String nullable(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "a", type = "?") java.lang.String a) { /* compiled code */ } @org.jetbrains.annotations.NotNull public static final java.lang.String notNullWithNN() { /* compiled code */ } @@ -47,7 +47,7 @@ public final class _DefaultPackage { @org.jetbrains.annotations.Nullable @org.jetbrains.annotations.NotNull - public static final void setNotNullVarWithGetSet(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "v") java.lang.String p) { /* compiled code */ } + public static final void setNotNullVarWithGetSet(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "v") java.lang.String v) { /* compiled code */ } @org.jetbrains.annotations.NotNull @org.jetbrains.annotations.Nullable @@ -58,7 +58,7 @@ public final class _DefaultPackage { public static final java.lang.String getNullableVarWithGetSet() { /* compiled code */ } @org.jetbrains.annotations.NotNull - public static final void setNullableVarWithGetSet(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "v", type = "?") java.lang.String p) { /* compiled code */ } + public static final void setNullableVarWithGetSet(@org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "v", type = "?") java.lang.String v) { /* compiled code */ } @org.jetbrains.annotations.NotNull public static final java.lang.String getPrivateNn() { /* compiled code */ } @@ -67,5 +67,5 @@ public final class _DefaultPackage { public static final java.lang.String getPrivateN() { /* compiled code */ } @org.jetbrains.annotations.Nullable - public static final java.lang.String privateFun(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String p, @org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "b", type = "?") java.lang.String p1) { /* compiled code */ } + public static final java.lang.String privateFun(@org.jetbrains.annotations.NotNull @jet.runtime.typeinfo.JetValueParameter(name = "a") java.lang.String a, @org.jetbrains.annotations.Nullable @jet.runtime.typeinfo.JetValueParameter(name = "b", type = "?") java.lang.String b) { /* compiled code */ } } \ No newline at end of file