From 61a17c732bc3a5227ae32c7ac7c397ee8b45cfcb Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Thu, 3 Nov 2011 15:14:35 +0400 Subject: [PATCH] access modifiers support for fields --- src/org/jetbrains/jet/j2k/ast/Field.java | 25 ++++++++++++++++++- test/org/jetbrains/jet/j2k/ast/EnumTest.java | 2 +- test/org/jetbrains/jet/j2k/ast/FieldTest.java | 16 ++++++++++++ test/org/jetbrains/jet/j2k/ast/TraitTest.java | 6 ++--- 4 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/org/jetbrains/jet/j2k/ast/Field.java b/src/org/jetbrains/jet/j2k/ast/Field.java index 2b733e401e2..360466124e0 100644 --- a/src/org/jetbrains/jet/j2k/ast/Field.java +++ b/src/org/jetbrains/jet/j2k/ast/Field.java @@ -1,7 +1,10 @@ package org.jetbrains.jet.j2k.ast; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.j2k.util.AstUtil; +import java.util.LinkedList; +import java.util.List; import java.util.Set; /** @@ -20,10 +23,30 @@ public class Field extends Node { myInitializer = initializer; } + private String accessModifier() { + for (String m : myModifiers) + if (m.equals(Modifier.PUBLIC) || m.equals(Modifier.PROTECTED) || m.equals(Modifier.PRIVATE)) + return m; + return EMPTY; // package local converted to internal, but we use internal by default + } + + String modifiersToKotlin() { + List modifierList = new LinkedList(); + + modifierList.add(accessModifier()); + + modifierList.add(myModifiers.contains(Modifier.FINAL) ? "val" : "var"); + + if (modifierList.size() > 0) + return AstUtil.join(modifierList, SPACE) + SPACE; + + return EMPTY; + } + @NotNull @Override public String toKotlin() { - String modifier = (myModifiers.contains(Modifier.FINAL) ? "val" : "var") + SPACE; + String modifier = modifiersToKotlin(); if (myInitializer.toKotlin().isEmpty()) // TODO: remove return modifier + myIdentifier.toKotlin() + SPACE + COLON + SPACE + myType.toKotlin(); diff --git a/test/org/jetbrains/jet/j2k/ast/EnumTest.java b/test/org/jetbrains/jet/j2k/ast/EnumTest.java index 67ebb370101..8ff5f66a841 100644 --- a/test/org/jetbrains/jet/j2k/ast/EnumTest.java +++ b/test/org/jetbrains/jet/j2k/ast/EnumTest.java @@ -69,7 +69,7 @@ public class EnumTest extends JetTestCaseBase { "RED(23)\n" + "YELLOW(24)\n" + "BLUE(25)\n" + - "var code : Int\n" + + "private var code : Int\n" + "public fun getCode() : Int {\n" + "return code\n" + "}\n" + diff --git a/test/org/jetbrains/jet/j2k/ast/FieldTest.java b/test/org/jetbrains/jet/j2k/ast/FieldTest.java index 8fb7fc3952a..4be8af966fc 100644 --- a/test/org/jetbrains/jet/j2k/ast/FieldTest.java +++ b/test/org/jetbrains/jet/j2k/ast/FieldTest.java @@ -27,4 +27,20 @@ public class FieldTest extends JetTestCaseBase { "val f : Foo? = Foo(1, 2)" ); } + + public void testPrivateField() throws Exception { + Assert.assertEquals(methodToSingleLineKotlin("private Foo f;"), "private var f : Foo?"); + } + + public void testProtectedField() throws Exception { + Assert.assertEquals(methodToSingleLineKotlin("protected Foo f;"), "protected var f : Foo?"); + } + + public void testPublicField() throws Exception { + Assert.assertEquals(methodToSingleLineKotlin("public Foo f;"), "public var f : Foo?"); + } + + public void testInternalField() throws Exception { + Assert.assertEquals(methodToSingleLineKotlin("Foo f;"), "var f : Foo?"); + } } diff --git a/test/org/jetbrains/jet/j2k/ast/TraitTest.java b/test/org/jetbrains/jet/j2k/ast/TraitTest.java index 4bdeb7b6b37..a835f20806d 100644 --- a/test/org/jetbrains/jet/j2k/ast/TraitTest.java +++ b/test/org/jetbrains/jet/j2k/ast/TraitTest.java @@ -36,9 +36,9 @@ public class TraitTest extends JetTestCaseBase { "}" ), "trait INode {\n" + - "val IN : String? = \"in\"\n" + - "val AT : String? = \"@\"\n" + - "val COMMA_WITH_SPACE : String? = (COMMA + SPACE)\n" + + "public val IN : String? = \"in\"\n" + + "public val AT : String? = \"@\"\n" + + "public val COMMA_WITH_SPACE : String? = (COMMA + SPACE)\n" + "}" ); }