From d7d4c3592970a6c5be385cae2133a84e2df31c4c Mon Sep 17 00:00:00 2001 From: Stefan Haustein Date: Wed, 7 Jan 2026 08:36:48 -0800 Subject: [PATCH] BEGIN_PUBLIC Add an "nsEnum" property with the same functionality as "enumValue" for j2objc transated java enums for kotlin compatibility. END_PUBLIC PiperOrigin-RevId: 853276681 --- .../google/devtools/j2objc/translate/EnumRewriter.java | 9 ++++++++- .../devtools/j2objc/translate/EnumRewriterTest.java | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/translator/src/main/java/com/google/devtools/j2objc/translate/EnumRewriter.java b/translator/src/main/java/com/google/devtools/j2objc/translate/EnumRewriter.java index 9bd6f412e1..62128fa88f 100644 --- a/translator/src/main/java/com/google/devtools/j2objc/translate/EnumRewriter.java +++ b/translator/src/main/java/com/google/devtools/j2objc/translate/EnumRewriter.java @@ -351,6 +351,13 @@ private void addExtraNativeDecls(EnumDeclaration node) { "- (%s)enumValue {\n" + " return (%s)[self ordinal];\n" + "}\n\n", nativeName, nativeName))); + node.addBodyDeclaration( + NativeDeclaration.newInnerDeclaration( + UnicodeUtils.format("@property(readonly) %s nsEnum%s;", nativeName, segmentName), + UnicodeUtils.format( + "- (%s)nsEnum {\n" + " return (%s)[self ordinal];\n" + "}\n\n", + nativeName, nativeName))); + node.addBodyDeclaration( NativeDeclaration.newInnerDeclaration( UnicodeUtils.format("+ (%s *)fromNSEnum:(%s)value;\n", typeName, nativeName), @@ -368,7 +375,7 @@ private void addExtraNativeDecls(EnumDeclaration node) { node.addBodyDeclaration( NativeDeclaration.newInnerDeclaration( UnicodeUtils.format( - "- (%s)ordinal NS_SWIFT_UNAVAILABLE(\"Use .enumValue\")%s;\n", + "- (%s)ordinal NS_SWIFT_UNAVAILABLE(\"Use .nsEnum\")%s;\n", ordinalName, segmentName), UnicodeUtils.format( "- (%s)ordinal {\n" + " return (%s)[super ordinal];\n" + "}\n\n", diff --git a/translator/src/test/java/com/google/devtools/j2objc/translate/EnumRewriterTest.java b/translator/src/test/java/com/google/devtools/j2objc/translate/EnumRewriterTest.java index a9257c0dca..9fd49d009b 100644 --- a/translator/src/test/java/com/google/devtools/j2objc/translate/EnumRewriterTest.java +++ b/translator/src/test/java/com/google/devtools/j2objc/translate/EnumRewriterTest.java @@ -51,6 +51,8 @@ public void testToNsEnumConversion() throws Exception { "- (Test_Enum)toNSEnum {", " return (Test_Enum)[self ordinal];", "}"); + assertTranslatedLines( + translation, "- (Test_Enum)nsEnum {", " return (Test_Enum)[self ordinal];", "}"); assertTranslatedLines( translation, "+ (Test *)fromNSEnum:(Test_Enum)nativeValue {",