diff --git a/translator/src/main/java/com/google/devtools/j2objc/gen/TypeDeclarationGenerator.java b/translator/src/main/java/com/google/devtools/j2objc/gen/TypeDeclarationGenerator.java index 79179710a3..51b3de8dbd 100644 --- a/translator/src/main/java/com/google/devtools/j2objc/gen/TypeDeclarationGenerator.java +++ b/translator/src/main/java/com/google/devtools/j2objc/gen/TypeDeclarationGenerator.java @@ -135,7 +135,7 @@ protected void generateInitialDeclaration() { // refer to the companion type, so we need one forward declaration in any case. printf("\n@class %s;\n", typeName); - printf("\n@protocol %sCompanion\n", typeName); + printf("\n@protocol %sInternalCompanionProtocol\n", typeName); for (BodyDeclaration declaration : getInnerDeclarations()) { if (declaration.getKind().equals(TreeNode.Kind.METHOD_DECLARATION)) { printMethodDeclaration((MethodDeclaration) declaration, false, true); @@ -162,7 +162,8 @@ protected void generateInitialDeclaration() { if (needsKotlinCompanionClass()) { printf("\n#pragma clang diagnostic push\n"); printf("#pragma clang diagnostic ignored \"-Wincompatible-property-type\"\n"); - printf("@property (readonly, class) id<%sCompanion> companion;\n", typeName); + printf( + "@property (readonly, class) id<%sInternalCompanionProtocol> companion;\n", typeName); printf("#pragma clang diagnostic pop\n"); } } @@ -485,7 +486,7 @@ protected void printCompanionClassDeclaration() { if (needsKotlinCompanionClass()) { printf("\n#pragma clang diagnostic push\n"); printf("#pragma clang diagnostic ignored \"-Wincompatible-property-type\"\n"); - printf("@property (readonly, class) id<%sCompanion> companion;\n", typeName); + printf("@property (readonly, class) id<%sInternalCompanionProtocol> companion;\n", typeName); printf("#pragma clang diagnostic pop\n"); } println("\n@end"); diff --git a/translator/src/main/java/com/google/devtools/j2objc/gen/TypeImplementationGenerator.java b/translator/src/main/java/com/google/devtools/j2objc/gen/TypeImplementationGenerator.java index 92d8debeb2..a026587146 100644 --- a/translator/src/main/java/com/google/devtools/j2objc/gen/TypeImplementationGenerator.java +++ b/translator/src/main/java/com/google/devtools/j2objc/gen/TypeImplementationGenerator.java @@ -118,8 +118,8 @@ protected void generate() { printf("@implementation %s\n", typeName); printProperties(); if (needsKotlinCompanionClass()) { - printf("\n+ (id<%sCompanion>)companion {", typeName); - printf("\n return (id<%sCompanion>)self;\n}\n", typeName); + printf("\n+ (id<%sInternalCompanionProtocol>)companion {", typeName); + printf("\n return (id<%sInternalCompanionProtocol>)self;\n}\n", typeName); } printStaticAccessors(); printInnerDeclarations(); diff --git a/translator/src/test/java/com/google/devtools/j2objc/gen/GenerateObjCCompanionTest.java b/translator/src/test/java/com/google/devtools/j2objc/gen/GenerateObjCCompanionTest.java index e682bee231..87146571d7 100644 --- a/translator/src/test/java/com/google/devtools/j2objc/gen/GenerateObjCCompanionTest.java +++ b/translator/src/test/java/com/google/devtools/j2objc/gen/GenerateObjCCompanionTest.java @@ -36,14 +36,15 @@ public static void doSomething() {} """; String header = translateSourceFile(source, "Foo", "Foo.h"); assertInTranslation(header, "@class Foo;"); - assertInTranslation(header, "@protocol FooCompanion"); + assertInTranslation(header, "@protocol FooInternalCompanionProtocol"); // The companion protocol method should be an instance method instead of class method assertInTranslation(header, "- (void)doSomething;"); - assertInTranslation(header, "@property (readonly, class) id companion;"); + assertInTranslation( + header, "@property (readonly, class) id companion;"); String impl = translateSourceFile(source, "Foo", "Foo.m"); - assertInTranslation(impl, "+ (id)companion {"); - assertInTranslation(impl, "return (id)self;"); + assertInTranslation(impl, "+ (id)companion {"); + assertInTranslation(impl, "return (id)self;"); } public void testGenericVariablesAreLost() throws IOException { @@ -56,9 +57,10 @@ public class Bar { """; String header = translateSourceFile(source, "Bar", "Bar.h"); assertInTranslation(header, "@class Bar;"); - assertInTranslation(header, "@protocol BarCompanion"); + assertInTranslation(header, "@protocol BarInternalCompanionProtocol"); assertInTranslation(header, "- (id)doSomethingWithId:(id)arg;"); - assertInTranslation(header, "@property (readonly, class) id companion;"); + assertInTranslation( + header, "@property (readonly, class) id companion;"); } public void testBoundGenericMethodTypesArePreserved() throws IOException { @@ -73,7 +75,7 @@ public static ThreadLocal identity(ThreadLocal val) { """; String header = translateSourceFile(source, "Baz", "Baz.h"); assertInTranslation(header, "@class Baz;"); - assertInTranslation(header, "@protocol BazCompanion"); + assertInTranslation(header, "@protocol BazInternalCompanionProtocol"); assertInTranslation( header, "- (JavaLangThreadLocal" @@ -92,7 +94,7 @@ public class Foo { } """; String header = translateSourceFile(source, "Foo", "Foo.h"); - assertInTranslation(header, "@protocol FooCompanion"); + assertInTranslation(header, "@protocol FooInternalCompanionProtocol"); // Should generate instance property for CONSTANT_VALUE in companion protocol. assertInTranslation( header, "@property (readonly) int32_t CONSTANT_VALUE NS_SWIFT_NAME(CONSTANT_VALUE);"); @@ -114,7 +116,7 @@ public class Foo { """; // This should compile successfully without throwing "types without static methods" exception. String header = translateSourceFile(source, "Foo", "Foo.h"); - assertInTranslation(header, "@protocol FooCompanion"); + assertInTranslation(header, "@protocol FooInternalCompanionProtocol"); assertInTranslation( header, "@property (readonly) int32_t CONSTANT_VALUE NS_SWIFT_NAME(CONSTANT_VALUE);"); } @@ -130,17 +132,18 @@ public static void doSomething() {} } """; String header = translateSourceFile(source, "Foo", "Foo.h"); - assertInTranslation(header, "@protocol FooCompanion"); + assertInTranslation(header, "@protocol FooInternalCompanionProtocol"); assertInTranslation( header, "@property (readonly) int32_t CONSTANT_VALUE NS_SWIFT_NAME(CONSTANT_VALUE);"); assertInTranslation(header, "- (void)doSomething;"); assertInTranslation(header, "@interface Foo : NSObject"); - assertInTranslation(header, "@property (readonly, class) id companion;"); + assertInTranslation( + header, "@property (readonly, class) id companion;"); String impl = translateSourceFile(source, "Foo", "Foo.m"); assertInTranslation(impl, "@implementation Foo"); - assertInTranslation(impl, "+ (id)companion {"); - assertInTranslation(impl, "return (id)self;"); + assertInTranslation(impl, "+ (id)companion {"); + assertInTranslation(impl, "return (id)self;"); } public void testCompanionPropertiesForPropertyMethods() throws IOException { @@ -156,7 +159,7 @@ public static String getBar() { } """; String header = translateSourceFile(source, "Foo", "Foo.h"); - assertInTranslation(header, "@protocol FooCompanion"); + assertInTranslation(header, "@protocol FooInternalCompanionProtocol"); assertInTranslation(header, "@property (nonatomic, getter=getBar, readonly) NSString * bar;"); assertInTranslation( header, "@property (class, nonatomic, getter=getBar, readonly) NSString * bar;");