From bc09c9b2e5aa3c15de1e7f1be4e103f59ad53b88 Mon Sep 17 00:00:00 2001 From: antoniocortes Date: Wed, 19 Jun 2019 07:10:09 -0700 Subject: [PATCH] External annotations: promote flag -Xexternal-annotation-file to -external-annotation-file. Change on 2019/06/19 by antoniocortes ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=253989939 --- .../google/devtools/cyclefinder/Options.java | 2 +- doc/man/j2objc.1 | 5 +++ jre_emul/Makefile | 4 +-- jre_emul/java.mk | 2 +- jre_emul/tests.mk | 2 +- .../com/google/devtools/j2objc/Options.java | 2 +- .../google/devtools/j2objc/J2ObjC.properties | 3 ++ .../ExternalAnnotationInjectorTest.java | 34 +++++++++++++++++++ 8 files changed, 48 insertions(+), 6 deletions(-) diff --git a/cycle_finder/src/main/java/com/google/devtools/cyclefinder/Options.java b/cycle_finder/src/main/java/com/google/devtools/cyclefinder/Options.java index c926cda670..2ff9d62cad 100644 --- a/cycle_finder/src/main/java/com/google/devtools/cyclefinder/Options.java +++ b/cycle_finder/src/main/java/com/google/devtools/cyclefinder/Options.java @@ -244,7 +244,7 @@ public static Options parse(String[] args) throws IOException { } } else if (arg.equals("--print-reference-graph")) { options.printReferenceGraph = true; - } else if (arg.equals("-Xexternal-annotation-file")) { + } else if (arg.equals("-external-annotation-file")) { if (++nArg == args.length) { usage(arg + " requires an argument"); } diff --git a/doc/man/j2objc.1 b/doc/man/j2objc.1 index ab84b69d46..fe9b60508f 100644 --- a/doc/man/j2objc.1 +++ b/doc/man/j2objc.1 @@ -80,6 +80,11 @@ Translate Javadoc comments into Xcode-compatible comments. .BI \-\-doc\-comment-warnings Report warnings when translating Javadoc comments. .TP +.BI \-external\-annotation\-file +Specify the most common annotations that affect +transpilation in a Java Annotation Index File +(format defined by the Checker Framework). +.TP .BI \-g:none Do not generate Java source debugging support .TP diff --git a/jre_emul/Makefile b/jre_emul/Makefile index 7a8410fa2e..de883e828a 100644 --- a/jre_emul/Makefile +++ b/jre_emul/Makefile @@ -39,8 +39,8 @@ TRANSLATE_JAVA_FULL = $(JAVA_TO_TRANSLATE) TRANSLATE_JAVA_RELATIVE = $(JAVA_TO_TRANSLATE) TRANSLATE_ARGS = -sourcepath $(JRE_SRC) \ $(J2OBJC_DEBUGFLAGS) -encoding UTF-8 --doc-comments -Xtranslate-bootclasspath \ - --nullability -Xexternal-annotation-file $(ANDROID_ANNOTATIONS) \ - -Xexternal-annotation-file $(J2OBJC_ANNOTATIONS) + --nullability -external-annotation-file $(ANDROID_ANNOTATIONS) \ + -external-annotation-file $(J2OBJC_ANNOTATIONS) ifndef JAVA_8 TRANSLATE_ARGS += --patch-module java.base=$(JRE_SRC) endif diff --git a/jre_emul/java.mk b/jre_emul/java.mk index baf9ec023d..3c380b14b8 100644 --- a/jre_emul/java.mk +++ b/jre_emul/java.mk @@ -113,5 +113,5 @@ java_sources_manifest: $(JAVA_SOURCES_MANIFEST) find_cycles: cycle_finder_dist $(JAVA_SOURCES_MANIFEST) $(DIST_DIR)/cycle_finder --patch-module java.base=$(JRE_SRC) \ -w cycle_whitelist.txt -s $(JAVA_SOURCES_MANIFEST) \ - -Xexternal-annotation-file $(J2OBJC_ANNOTATIONS) + -external-annotation-file $(J2OBJC_ANNOTATIONS) diff --git a/jre_emul/tests.mk b/jre_emul/tests.mk index 9c7a238eac..8c9c0c4c9f 100644 --- a/jre_emul/tests.mk +++ b/jre_emul/tests.mk @@ -80,7 +80,7 @@ ifndef JAVA_8 TRANSLATE_ARGS += --patch-module java.base=$(TEST_SRC):$(GEN_JAVA_DIR) endif ifdef J2OBJC_JRE_STRIP_REFLECTION -TRANSLATE_ARGS += -Xexternal-annotation-file lite/ignore_tests.jaif +TRANSLATE_ARGS += -external-annotation-file lite/ignore_tests.jaif endif TRANSLATE_SOURCES = $(SUPPORT_SOURCES) $(TEST_SOURCES) $(SUITE_SOURCES) $(ALL_TESTS_CLASS).java TRANSLATE_SOURCES_ARC = $(ARC_TEST_SOURCES) $(COPIED_ARC_TEST_SOURCES) diff --git a/translator/src/main/java/com/google/devtools/j2objc/Options.java b/translator/src/main/java/com/google/devtools/j2objc/Options.java index deee7dc0a7..0f4db4a936 100644 --- a/translator/src/main/java/com/google/devtools/j2objc/Options.java +++ b/translator/src/main/java/com/google/devtools/j2objc/Options.java @@ -502,7 +502,7 @@ private void processArg(Iterator args) throws IOException { emitKytheMappings = true; } else if (arg.equals("-Xno-source-headers")) { emitSourceHeaders = false; - } else if (arg.equals("-Xexternal-annotation-file")) { + } else if (arg.equals("-external-annotation-file")) { addExternalAnnotationFile(getArgValue(args, arg)); } else if (arg.equals("--reserved-names")) { NameTable.addReservedNames(getArgValue(args, arg)); diff --git a/translator/src/main/resources/com/google/devtools/j2objc/J2ObjC.properties b/translator/src/main/resources/com/google/devtools/j2objc/J2ObjC.properties index d46bf2caf7..6d0936f49a 100644 --- a/translator/src/main/resources/com/google/devtools/j2objc/J2ObjC.properties +++ b/translator/src/main/resources/com/google/devtools/j2objc/J2ObjC.properties @@ -50,6 +50,9 @@ Other options:\n\ --dead-code-report Specify a ProGuard usage report for dead code elimination.\n\ --doc-comments Translate Javadoc comments into Xcode-compatible comments.\n\ --doc-comment-warnings Report warnings when translating Javadoc comments.\n\ + -external-annotation-file Specify the most common annotations that affect\ + \n transpilation in a Java Annotation Index File\ + \n (format defined by the Checker Framework).\n\ -g:none Do not generate Java source debugging support.\n\ -g:relative Generate Java source debugging support with relative paths.\n\ --generate-deprecated Generate deprecated attributes for deprecated methods,\ diff --git a/translator/src/test/java/com/google/devtools/j2objc/translate/ExternalAnnotationInjectorTest.java b/translator/src/test/java/com/google/devtools/j2objc/translate/ExternalAnnotationInjectorTest.java index 5639c8ad9e..684138e545 100644 --- a/translator/src/test/java/com/google/devtools/j2objc/translate/ExternalAnnotationInjectorTest.java +++ b/translator/src/test/java/com/google/devtools/j2objc/translate/ExternalAnnotationInjectorTest.java @@ -350,4 +350,38 @@ public void testWeak() throws IOException { assertTranslation(translation, "__unsafe_unretained JavaLangThread *t_;"); assertTranslation(translation, "t_ = otherT;"); } + + public void testRetainedWith() throws IOException { + String source = "package p; " + + "import com.google.j2objc.annotations.RetainedWith; " + + "public class A { " + + " private Object o; " + + " public void setO(Object o) { this.o = o; } " + + "}"; + options.addExternalAnnotationFileContents( + "package com.google.j2objc.annotations: " + + "annotation @RetainedWith: " + + "package p: " + + "class A: " + + " field o: @RetainedWith "); + String translation = translateSourceFile(source, "p.A", "p/A.m"); + assertTranslation(translation, "JreRetainedWithAssign"); + assertTranslation(translation, "JreRetainedWithRelease"); + } + + public void testAutoreleasePool() throws IOException { + String source = "package p; " + + "import com.google.j2objc.annotations.AutoreleasePool; " + + "public class A { " + + " public void test() {} " + + "}"; + options.addExternalAnnotationFileContents( + "package com.google.j2objc.annotations: " + + "annotation @AutoreleasePool: " + + "package p: " + + "class A: " + + " method test()V: @AutoreleasePool "); + String translation = translateSourceFile(source, "p.A", "p/A.m"); + assertTranslation(translation, "@autoreleasepool"); + } }