Skip to content

Commit

Permalink
Made swift-enums defaulted to on
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 605700160
  • Loading branch information
j2objc-copybara authored and Copybara-Service committed Feb 9, 2024
1 parent 074f69d commit 6040366
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 11 deletions.
4 changes: 2 additions & 2 deletions doc/man/j2objc.1
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,8 @@ Do not generate metadata needed for Java reflection.
Generate code that facilitates Swift importing (equivalent to
\-\-class\-properties \-\-nullability \-\-swift-enum).
.TP
.BI \-\-swift-enums
Generate Swift-like enum case names.
.BI \-\-no-swift-enums
Disables generation of Swift-like enum case names.
.TP
.BI \-\-system
Option forwarded directly to the Java compiler (see javac help for details).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public class Options {
private String processors = null;
private boolean disallowInheritedConstructors = true;
private boolean nullability = false;
private boolean swiftEnums = false;
private boolean swiftEnums = true;
private boolean nullMarked = false;
private TimingLevel timingLevel = TimingLevel.NONE;
private boolean dumpAST = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ Other options:\n\
--strip-reflection Do not generate metadata needed for Java reflection.\n\
--swift-friendly Generate code that facilitates Swift importing (equivalent to\
\n --class-properties --nullability --swift-enum).\n\
--swift-enums Generate Swift-like enum case names.\n\
--no-swift-enums Disables generation of Swift-like enum case names.\n\
--system. Option forwarded directly to the Java compiler\
\n (see javac help for details).\n\
-t, --timing-info Print time spent in translation steps.\n\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,31 @@ public void testEnum() throws IOException {
String translation = translateSourceFile(
"public enum Color { RED, WHITE, BLUE }",
"Color", "Color.h");
assertTranslatedLines(translation,
assertTranslatedLines(
translation,
"typedef NS_ENUM(jint, Color_Enum) {",
" Color_Enum_RED NS_SWIFT_NAME(red) = 0,",
" Color_Enum_WHITE NS_SWIFT_NAME(white) = 1,",
" Color_Enum_BLUE NS_SWIFT_NAME(blue) = 2,",
"};");
assertTranslation(translation, "@interface Color : JavaLangEnum");
assertTranslation(translation, "+ (IOSObjectArray *)values;");
assertTranslation(translation, "+ (Color *)valueOfWithNSString:(NSString *)name;");
assertTranslation(translation, "FOUNDATION_EXPORT Color *Color_values_[];");
assertTranslatedLines(
translation, "inline Color *Color_get_RED(void);", "J2OBJC_ENUM_CONSTANT(Color, RED)");
assertTranslatedLines(
translation, "inline Color *Color_get_WHITE(void);", "J2OBJC_ENUM_CONSTANT(Color, WHITE)");
assertTranslatedLines(
translation, "inline Color *Color_get_BLUE(void);", "J2OBJC_ENUM_CONSTANT(Color, BLUE)");
}

public void testEnumNoSwiftEnums() throws IOException {
options.setSwiftEnums(false);
String translation =
translateSourceFile("public enum Color { RED, WHITE, BLUE }", "Color", "Color.h");
assertTranslatedLines(
translation,
"typedef NS_ENUM(jint, Color_Enum) {",
" Color_Enum_RED = 0,",
" Color_Enum_WHITE = 1,",
Expand Down Expand Up @@ -519,9 +543,9 @@ public void testEnumIsImplicitlyNonnullWhenNullMarked() throws IOException {
assertTranslatedLines(
translation,
"typedef NS_ENUM(jint, Color_Enum) {",
" Color_Enum_RED = 0,",
" Color_Enum_WHITE = 1,",
" Color_Enum_BLUE = 2,",
" Color_Enum_RED NS_SWIFT_NAME(red) = 0,",
" Color_Enum_WHITE NS_SWIFT_NAME(white) = 1,",
" Color_Enum_BLUE NS_SWIFT_NAME(blue) = 2,",
"};");
assertTranslation(translation, "FOUNDATION_EXPORT Color *_Nonnull Color_values_[];");
assertTranslatedLines(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ public void testEnumConstantAccessorMethodsAreImplicitlyNonnullWhenNullMarked()
public void testEnumConstantClassProperties() throws IOException {
options.setClassProperties(true);
options.setNullability(true);
options.setSwiftEnums(false);
String source = "enum Test { ONE, TWO, EOF }"; // EOF is a reserved name.
String translation = translateSourceFile(source, "Test", "Test.h");
assertTranslation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,10 +272,11 @@ public void testRenamePackageAnnotationEnum() throws IOException {
+ "package foo.bar;", "foo/bar/package-info.java");
addSourceFile("package foo.bar; public enum Test { FOO, BAR }", "foo/bar/Test.java");
String translation = translateSourceFile("foo.bar.Test", "foo/bar/Test.h");
assertTranslatedLines(translation,
assertTranslatedLines(
translation,
"typedef NS_ENUM(jint, FBTest_Enum) {",
" FBTest_Enum_FOO = 0,",
" FBTest_Enum_BAR = 1,",
" FBTest_Enum_FOO NS_SWIFT_NAME(foo) = 0,",
" FBTest_Enum_BAR NS_SWIFT_NAME(bar) = 1,",
"};");
assertTranslation(translation, "@interface FBTest : JavaLangEnum");
assertTranslation(translation, "FBTest_values(void);");
Expand Down

0 comments on commit 6040366

Please sign in to comment.