aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-19 13:15:59 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-19 13:17:39 -0700
commitbff4ac081bd80f227cc0c3027f67e306d35699fa (patch)
treeb5af2374b8fb6f2cb011005716b57b0ac701030c /src/main/java/com/google/devtools/build/lib
parent6590914692db2c4ee7d582d90b28dd1b11bfaa79 (diff)
Expose the j2objc configuration fragment, with field dead_code_report, matching build flag --j2objc_dead_code_report.
RELNOTES: The 'j2objc' configuration fragment is exposed to Skylark. PiperOrigin-RevId: 189630012
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java25
2 files changed, 21 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 5a65d0b48e..3870556daa 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -111,7 +111,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
LabelLateBoundDefault.fromTargetConfiguration(
J2ObjcConfiguration.class,
null,
- (rule, attributes, j2objcConfig) -> j2objcConfig.deadCodeReport().orNull());
+ (rule, attributes, j2objcConfig) -> j2objcConfig.deadCodeReport());
/** Adds additional attribute aspects and attributes to the given AspectDefinition.Builder. */
protected AspectDefinition.Builder addAdditionalAttributes(AspectDefinition.Builder builder) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
index d71ce599c9..f57e901765 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.rules.objc;
import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
@@ -28,8 +27,12 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import java.util.Collections;
import java.util.List;
+import javax.annotation.Nullable;
/**
* A J2ObjC transpiler configuration fragment containing J2ObjC translation flags. This
@@ -38,6 +41,11 @@ import java.util.List;
*/
@AutoCodec
@Immutable
+@SkylarkModule(
+ name = "j2objc",
+ category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT,
+ doc = "A configuration fragment for j2Objc."
+)
public class J2ObjcConfiguration extends Fragment {
/**
* Always-on flags for J2ObjC translation. These flags are always used when invoking the J2ObjC
@@ -91,7 +99,7 @@ public class J2ObjcConfiguration extends Fragment {
private final List<String> translationFlags;
private final boolean removeDeadCode;
private final boolean experimentalJ2ObjcHeaderMap;
- private final Optional<Label> deadCodeReport;
+ @Nullable private final Label deadCodeReport;
J2ObjcConfiguration(J2ObjcCommandLineOptions j2ObjcOptions) {
this(
@@ -102,7 +110,7 @@ public class J2ObjcConfiguration extends Fragment {
.build(),
j2ObjcOptions.removeDeadCode,
j2ObjcOptions.experimentalJ2ObjcHeaderMap,
- Optional.fromNullable(j2ObjcOptions.deadCodeReport));
+ j2ObjcOptions.deadCodeReport);
}
@AutoCodec.Instantiator
@@ -110,7 +118,7 @@ public class J2ObjcConfiguration extends Fragment {
List<String> translationFlags,
boolean removeDeadCode,
boolean experimentalJ2ObjcHeaderMap,
- Optional<Label> deadCodeReport) {
+ Label deadCodeReport) {
this.translationFlags = translationFlags;
this.removeDeadCode = removeDeadCode;
this.experimentalJ2ObjcHeaderMap = experimentalJ2ObjcHeaderMap;
@@ -131,8 +139,15 @@ public class J2ObjcConfiguration extends Fragment {
/**
* Returns the label of the dead code report generated by ProGuard for J2ObjC to eliminate dead
* code. The dead Java code in the report will not be translated to Objective-C code.
+ *
+ * Returns null if no such report was requested.
*/
- public Optional<Label> deadCodeReport() {
+ @Nullable
+ @SkylarkCallable(name = "dead_code_report", structField = true,
+ doc = "The label of the dead code report generated by ProGuard for dead code elimination, "
+ + "or <code>None</code> if no such report was requested.",
+ allowReturnNones = true)
+ public Label deadCodeReport() {
return deadCodeReport;
}