diff options
author | 2018-04-13 06:09:30 -0700 | |
---|---|---|
committer | 2018-04-13 06:10:29 -0700 | |
commit | 707acfeecf60ef622b745741e76bf47717b1b480 (patch) | |
tree | 5cab49a70b5e3380417c4817174d95d5fb0512b0 /src/main | |
parent | 8738794b0497e240c9b41faefe46a7e790fc0ab7 (diff) |
Introduce `--incompatible_disallow_filetype` to remove the `FileType` function.
RELNOTES:
`FileType` is deprecated and will be removed soon.
Try the `--incompatible_disallow_filetype` flag to ensure your code
is forward-compatible.
PiperOrigin-RevId: 192758063
Diffstat (limited to 'src/main')
4 files changed, 33 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java index 28ae658324..a612326495 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java @@ -1087,11 +1087,21 @@ public class SkylarkRuleClassFunctions { defaultValue = "[]", doc = "a list of the accepted file extensions." ) - } + }, + useLocation = true, + useEnvironment = true ) private static final BuiltinFunction fileType = new BuiltinFunction("FileType") { - public SkylarkFileType invoke(SkylarkList types) throws EvalException { + public SkylarkFileType invoke(SkylarkList types, Location loc, Environment env) + throws EvalException { + if (env.getSemantics().incompatibleDisallowFileType()) { + throw new EvalException( + loc, + "FileType function is not available. You may use a list of strings instead. " + + "You can temporarily reenable the function by passing the flag " + + "--incompatible_disallow_filetype=false"); + } return SkylarkFileType.of(types.getContents(String.class, "types")); } }; 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 29d8d193fc..7de5cc9b00 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 @@ -49,6 +49,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics codedOut.writeBoolNoTag(semantics.incompatibleDisableGlobTracking()); codedOut.writeBoolNoTag(semantics.incompatibleDisableObjcProviderResources()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowDictPlus()); + codedOut.writeBoolNoTag(semantics.incompatibleDisallowFileType()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowOldStyleArgsAdd()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowSlashOperator()); codedOut.writeBoolNoTag(semantics.incompatibleNewActionsApi()); @@ -71,6 +72,7 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics builder.incompatibleDisableGlobTracking(codedIn.readBool()); builder.incompatibleDisableObjcProviderResources(codedIn.readBool()); builder.incompatibleDisallowDictPlus(codedIn.readBool()); + builder.incompatibleDisallowFileType(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 2bbe8711d1..499f7d2596 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 @@ -145,6 +145,19 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable public boolean incompatibleDisallowDictPlus; @Option( + name = "incompatible_disallow_filetype", + defaultValue = "false", + documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, + effectTags = {OptionEffectTag.UNKNOWN}, + metadataTags = { + OptionMetadataTag.INCOMPATIBLE_CHANGE, + OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES + }, + help = "If set to true, function `FileType` is not available." + ) + public boolean incompatibleDisallowFileType; + + @Option( name = "incompatible_disallow_slash_operator", defaultValue = "false", documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, @@ -266,6 +279,7 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable .incompatibleDisableGlobTracking(incompatibleDisableGlobTracking) .incompatibleDisableObjcProviderResources(incompatibleDisableObjcProviderResources) .incompatibleDisallowDictPlus(incompatibleDisallowDictPlus) + .incompatibleDisallowFileType(incompatibleDisallowFileType) .incompatibleDisallowOldStyleArgsAdd(incompatibleDisallowOldStyleArgsAdd) .incompatibleDisallowSlashOperator(incompatibleDisallowSlashOperator) .incompatibleNewActionsApi(incompatibleNewActionsApi) 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 52409387c4..25946d88e3 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 @@ -51,6 +51,8 @@ public abstract class SkylarkSemantics { public abstract boolean incompatibleDisallowDictPlus(); + public abstract boolean incompatibleDisallowFileType(); + public abstract boolean incompatibleDisallowOldStyleArgsAdd(); public abstract boolean incompatibleDisallowSlashOperator(); @@ -88,6 +90,7 @@ public abstract class SkylarkSemantics { .incompatibleDisableGlobTracking(true) .incompatibleDisableObjcProviderResources(false) .incompatibleDisallowDictPlus(false) + .incompatibleDisallowFileType(false) .incompatibleDisallowOldStyleArgsAdd(false) .incompatibleDisallowSlashOperator(false) .incompatibleNewActionsApi(false) @@ -115,6 +118,8 @@ public abstract class SkylarkSemantics { public abstract Builder incompatibleDisallowDictPlus(boolean value); + public abstract Builder incompatibleDisallowFileType(boolean value); + public abstract Builder incompatibleDisallowOldStyleArgsAdd(boolean value); public abstract Builder incompatibleDisallowSlashOperator(boolean value); |