From 7d6513f49f3c527e92127805acb964d6a2562326 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Wed, 16 Nov 2011 13:23:18 +0400 Subject: [PATCH] added constructors for enums --- .../jetbrains/jet/j2k/ast/Constructor.java | 4 ---- src/org/jetbrains/jet/j2k/ast/Enum.java | 20 +++++-------------- .../enum/class/primaryPrivateConstructor.jav | 10 ++++++++++ .../enum/class/primaryPrivateConstructor.kt | 9 +++++++++ 4 files changed, 24 insertions(+), 19 deletions(-) create mode 100644 testData/ast/enum/class/primaryPrivateConstructor.jav create mode 100644 testData/ast/enum/class/primaryPrivateConstructor.kt diff --git a/src/org/jetbrains/jet/j2k/ast/Constructor.java b/src/org/jetbrains/jet/j2k/ast/Constructor.java index 827daa99b53..9fe6b498696 100644 --- a/src/org/jetbrains/jet/j2k/ast/Constructor.java +++ b/src/org/jetbrains/jet/j2k/ast/Constructor.java @@ -28,10 +28,6 @@ public class Constructor extends Function { return myIsPrimary; } - public String privatePrimaryToKotlin() { - return modifiersToKotlin() + "(" + myParams.toKotlin() + ")" + SPACE + myBlock.toKotlin(); - } - @NotNull @Override public Kind getKind() { diff --git a/src/org/jetbrains/jet/j2k/ast/Enum.java b/src/org/jetbrains/jet/j2k/ast/Enum.java index 1b16eda4613..f09b8a4a101 100644 --- a/src/org/jetbrains/jet/j2k/ast/Enum.java +++ b/src/org/jetbrains/jet/j2k/ast/Enum.java @@ -15,19 +15,9 @@ public class Enum extends Class { super(name, modifiers, typeParameters, extendsTypes, baseClassParams, implementsTypes, innerClasses, methods, fields); } - @Nullable - private Constructor getPrimaryConstructor() { - for (Function m : myMethods) - if (m.getKind() == Kind.CONSTRUCTOR) - return (Constructor) m; - return null; - } - - private String primaryConstructorToKotlin() { - Constructor maybeConstructor = getPrimaryConstructor(); - if (maybeConstructor != null) - return maybeConstructor.privatePrimaryToKotlin(); - return EMPTY; + String primaryConstructorSignatureToKotlin() { + String s = super.primaryConstructorSignatureToKotlin(); + return s.equals("()") ? EMPTY : s; } @Override @@ -38,11 +28,11 @@ public class Enum extends Class { @NotNull @Override public String toKotlin() { - return modifiersToKotlin() + "enum" + SPACE + myName.toKotlin() + typeParametersToKotlin() + implementTypesToKotlin() + SPACE + "{" + N + + return modifiersToKotlin() + "enum" + SPACE + myName.toKotlin() + primaryConstructorSignatureToKotlin() + typeParametersToKotlin() + implementTypesToKotlin() + SPACE + "{" + N + AstUtil.joinNodes(myFields, N) + N + - primaryConstructorToKotlin() + N + AstUtil.joinNodes(methodsExceptConstructors(), N) + N + AstUtil.joinNodes(myInnerClasses, N) + N + + primaryConstructorBodyToKotlin() + N + "}"; } } \ No newline at end of file diff --git a/testData/ast/enum/class/primaryPrivateConstructor.jav b/testData/ast/enum/class/primaryPrivateConstructor.jav new file mode 100644 index 00000000000..dee69b30e80 --- /dev/null +++ b/testData/ast/enum/class/primaryPrivateConstructor.jav @@ -0,0 +1,10 @@ +enum Color { + private int code; + + private Color(int c) { + code = c; + } + + public int getCode() { + return code; + } \ No newline at end of file diff --git a/testData/ast/enum/class/primaryPrivateConstructor.kt b/testData/ast/enum/class/primaryPrivateConstructor.kt new file mode 100644 index 00000000000..3fe8cd69ef3 --- /dev/null +++ b/testData/ast/enum/class/primaryPrivateConstructor.kt @@ -0,0 +1,9 @@ +enum Color(c : Int) { +private var code : Int +open public fun getCode() : Int { +return code +} +{ +$code = c +} +} \ No newline at end of file