diff options
Diffstat (limited to 'src/main/java')
5 files changed, 40 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java index 7de5cc9b00..af06231ffe 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java @@ -50,6 +50,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics codedOut.writeBoolNoTag(semantics.incompatibleDisableObjcProviderResources()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowDictPlus()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowFileType()); + codedOut.writeBoolNoTag(semantics.incompatibleDisallowLegacyJavaInfo()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowOldStyleArgsAdd()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowSlashOperator()); codedOut.writeBoolNoTag(semantics.incompatibleNewActionsApi()); @@ -73,6 +74,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics builder.incompatibleDisableObjcProviderResources(codedIn.readBool()); builder.incompatibleDisallowDictPlus(codedIn.readBool()); builder.incompatibleDisallowFileType(codedIn.readBool()); + builder.incompatibleDisallowLegacyJavaInfo(codedIn.readBool()); builder.incompatibleDisallowOldStyleArgsAdd(codedIn.readBool()); builder.incompatibleDisallowSlashOperator(codedIn.readBool()); builder.incompatibleNewActionsApi(codedIn.readBool()); diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java index 499f7d2596..e62f837088 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java @@ -158,6 +158,18 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable public boolean incompatibleDisallowFileType; @Option( + name = "incompatible_disallow_legacy_javainfo", + defaultValue = "false", + documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, + effectTags = {OptionEffectTag.UNKNOWN}, + metadataTags = { + OptionMetadataTag.INCOMPATIBLE_CHANGE, + OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES + }, + help = "If set to true, old-style JavaInfo provider construction is disallowed.") + public boolean incompatibleDisallowLegacyJavaInfo; + + @Option( name = "incompatible_disallow_slash_operator", defaultValue = "false", documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, @@ -280,6 +292,7 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable .incompatibleDisableObjcProviderResources(incompatibleDisableObjcProviderResources) .incompatibleDisallowDictPlus(incompatibleDisallowDictPlus) .incompatibleDisallowFileType(incompatibleDisallowFileType) + .incompatibleDisallowLegacyJavaInfo(incompatibleDisallowLegacyJavaInfo) .incompatibleDisallowOldStyleArgsAdd(incompatibleDisallowOldStyleArgsAdd) .incompatibleDisallowSlashOperator(incompatibleDisallowSlashOperator) .incompatibleNewActionsApi(incompatibleNewActionsApi) diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java index 1a96c66d19..63e2656b41 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java @@ -326,6 +326,14 @@ public final class JavaInfo extends NativeInfo { || javaToolchain != null || hostJavabase != null; if (hasLegacyArg) { + if (env.getSemantics().incompatibleDisallowLegacyJavaInfo()) { + throw new EvalException( + loc, + "Cannot use deprecated argument when " + + "--incompatible_disallow_legacy_javainfo is set. " + + "Deprecated arguments are 'actions', 'sources', 'source_jars', " + + "'use_ijar', 'java_toolchain', 'host_javabase'."); + } boolean hasNewArg = compileJar != null || sourceJar != null; if (hasNewArg) { throw new EvalException( diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java index 6570c5e771..310e19733f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java @@ -31,6 +31,7 @@ import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.ParamType; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.Runtime; import com.google.devtools.build.lib.syntax.SkylarkList; @@ -154,7 +155,8 @@ public class JavaSkylarkCommon { "A list or set of output source jars that contain the uncompiled source files " + "including the source files generated by annotation processors if the case.") }, - useLocation = true) + useLocation = true, + useEnvironment = true) public JavaInfo create( @Nullable Object actionsUnchecked, Object compileTimeJars, @@ -164,9 +166,16 @@ public class JavaSkylarkCommon { Object transitiveCompileTimeJars, Object transitiveRuntimeJars, Object sourceJars, - Location location) + Location location, + Environment environment) throws EvalException { - + if (environment.getSemantics().incompatibleDisallowLegacyJavaInfo()) { + throw new EvalException( + location, + "create_provider is deprecated and cannot be used when " + + "--incompatible_disallow_legacy_javainfo is set. " + + "Please migrate to the JavaInfo constructor."); + } return JavaInfoBuildHelper.getInstance() .create( actionsUnchecked, diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java index 25946d88e3..b4b23880c2 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java @@ -53,6 +53,8 @@ public abstract class SkylarkSemantics { public abstract boolean incompatibleDisallowFileType(); + public abstract boolean incompatibleDisallowLegacyJavaInfo(); + public abstract boolean incompatibleDisallowOldStyleArgsAdd(); public abstract boolean incompatibleDisallowSlashOperator(); @@ -91,6 +93,7 @@ public abstract class SkylarkSemantics { .incompatibleDisableObjcProviderResources(false) .incompatibleDisallowDictPlus(false) .incompatibleDisallowFileType(false) + .incompatibleDisallowLegacyJavaInfo(false) .incompatibleDisallowOldStyleArgsAdd(false) .incompatibleDisallowSlashOperator(false) .incompatibleNewActionsApi(false) @@ -120,6 +123,8 @@ public abstract class SkylarkSemantics { public abstract Builder incompatibleDisallowFileType(boolean value); + public abstract Builder incompatibleDisallowLegacyJavaInfo(boolean value); + public abstract Builder incompatibleDisallowOldStyleArgsAdd(boolean value); public abstract Builder incompatibleDisallowSlashOperator(boolean value); |