diff --git a/jre/lib/annotations.jar b/jre/lib/annotations.jar new file mode 100644 index 00000000000..5de67805f7b Binary files /dev/null and b/jre/lib/annotations.jar differ diff --git a/jre/lib/rt.jar b/jre/lib/rt.jar new file mode 100644 index 00000000000..c6afca0fff4 Binary files /dev/null and b/jre/lib/rt.jar differ diff --git a/src/org/jetbrains/jet/j2k/Converter.java b/src/org/jetbrains/jet/j2k/Converter.java index fd4ee431d24..9944ae30da0 100644 --- a/src/org/jetbrains/jet/j2k/Converter.java +++ b/src/org/jetbrains/jet/j2k/Converter.java @@ -56,10 +56,31 @@ public class Converter { if (psiClass.isInterface()) return new Trait(name, modifiers, typeParameters, extendsTypes, implementsTypes, innerClasses, methods, fields); if (psiClass.isEnum()) - return new Enum(name, modifiers, typeParameters, extendsTypes, implementsTypes, innerClasses, methods, fields); + return new Enum(name, modifiers, typeParameters, new LinkedList(), implementsTypes, innerClasses, methods, fieldsToFieldListForEnums(psiClass.getAllFields())); return new Class(name, modifiers, typeParameters, extendsTypes, implementsTypes, innerClasses, methods, fields); } + // TODO: hack for enums + private static List fieldsToFieldListForEnums(PsiField[] fields) { + List result = new LinkedList(); + for (PsiField f : fields) { + if ((f.getName().equals("ordinal") + && f.getType().getCanonicalText().equals("int") + && f.hasModifierProperty(PsiModifier.PRIVATE) + && f.hasModifierProperty(PsiModifier.FINAL) + ) || + (f.getName().equals("name") + && f.getType().getCanonicalText().equals("java.lang.String") + && f.hasModifierProperty(PsiModifier.PRIVATE) + && f.hasModifierProperty(PsiModifier.FINAL) + )) + continue; + + result.add(fieldToField(f)); + } + return result; + } + private static List fieldsToFieldList(PsiField[] fields) { List result = new LinkedList(); for (PsiField f : fields) { @@ -276,4 +297,4 @@ public class Converter { } return modifiersSet; } -} +} \ No newline at end of file diff --git a/test/org/jetbrains/jet/j2k/JetTestCaseBase.java b/test/org/jetbrains/jet/j2k/JetTestCaseBase.java index e6a9f34870d..55fbcc93e91 100644 --- a/test/org/jetbrains/jet/j2k/JetTestCaseBase.java +++ b/test/org/jetbrains/jet/j2k/JetTestCaseBase.java @@ -40,7 +40,7 @@ public abstract class JetTestCaseBase extends LightDaemonAnalyzerTestCase { } private static Sdk jdkFromIdeaHome() { - return new JavaSdkImpl().createJdk("JDK", "compiler/testData/mockJDK-1.7/jre", true); + return new JavaSdkImpl().createJdk("JDK", "jre", true); } @Override diff --git a/test/org/jetbrains/jet/j2k/ast/EnumTest.java b/test/org/jetbrains/jet/j2k/ast/EnumTest.java index 8ff5f66a841..33c561aa10f 100644 --- a/test/org/jetbrains/jet/j2k/ast/EnumTest.java +++ b/test/org/jetbrains/jet/j2k/ast/EnumTest.java @@ -41,7 +41,7 @@ public class EnumTest extends JetTestCaseBase { "RED\n" + "YELLOW\n" + "BLUE\n" + - "fun toString() : String? {\n" + + "override fun toString() : String? {\n" + "return \"COLOR\"\n" + "}\n" + "}" @@ -84,6 +84,13 @@ public class EnumTest extends JetTestCaseBase { ); } + public void testEnumWithNameField() throws Exception { + Assert.assertEquals( + classToKotlin("enum E { I; private String name; }"), + "enum E {\nI\nprivate var name : String?\n}" + ); + } + public void testEnumImplementsSeveralInterfaces() throws Exception { Assert.assertEquals( classToSingleLineKotlin("enum A implements I0, I1, I2 {}"),