blob: 52e07b835ea7ce9c5af5c0b7217289e1dd2e08a3 [file] [log] [blame]
brandjon60be5312017-10-04 23:06:41 +02001// Copyright 2017 The Bazel Authors. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package com.google.devtools.build.lib.syntax;
16
17import com.google.auto.value.AutoValue;
laurentlbe5894f02018-10-25 13:02:00 -070018import com.google.common.base.Ascii;
cparsons507b00f2018-09-12 11:59:07 -070019import com.google.common.base.Preconditions;
plf7e41f9b2018-08-03 01:47:22 -070020import com.google.common.collect.ImmutableList;
21import java.util.List;
cparsons507b00f2018-09-12 11:59:07 -070022import java.util.function.Function;
brandjon60be5312017-10-04 23:06:41 +020023
24/**
laurentlb6659b4c2019-02-18 07:23:36 -080025 * Options that affect Starlark semantics.
brandjon60be5312017-10-04 23:06:41 +020026 *
laurentlb92c43cd2019-02-18 08:27:55 -080027 * <p>For descriptions of what these options do, see {@link StarlarkSemanticsOptions}.
brandjon60be5312017-10-04 23:06:41 +020028 */
29// TODO(brandjon): User error messages that reference options should maybe be substituted with the
laurentlb6659b4c2019-02-18 07:23:36 -080030// option name outside of the core Starlark interpreter?
laurentlb92c43cd2019-02-18 08:27:55 -080031// TODO(brandjon): Eventually these should be documented in full here, and StarlarkSemanticsOptions
brandjon60be5312017-10-04 23:06:41 +020032// should refer to this class for documentation. But this doesn't play nice with the options
33// parser's annotation mechanism.
34@AutoValue
laurentlb6659b4c2019-02-18 07:23:36 -080035public abstract class StarlarkSemantics {
brandjon60be5312017-10-04 23:06:41 +020036
cparsons6622e6f2018-10-17 15:00:09 -070037 /**
laurentlb6659b4c2019-02-18 07:23:36 -080038 * Enum where each element represents a starlark semantics flag. The name of each value should be
39 * the exact name of the flag transformed to upper case (for error representation).
cparsons6622e6f2018-10-17 15:00:09 -070040 */
cparsons507b00f2018-09-12 11:59:07 -070041 public enum FlagIdentifier {
Googler137019f2019-04-23 02:23:37 -070042 EXPERIMENTAL_ALLOW_INCREMENTAL_REPOSITORY_UPDATES(
43 StarlarkSemantics::experimentalAllowIncrementalRepositoryUpdates),
Googler91eb3d22018-10-18 00:05:29 -070044 EXPERIMENTAL_ENABLE_ANDROID_MIGRATION_APIS(
laurentlb6659b4c2019-02-18 07:23:36 -080045 StarlarkSemantics::experimentalEnableAndroidMigrationApis),
46 EXPERIMENTAL_BUILD_SETTING_API(StarlarkSemantics::experimentalBuildSettingApi),
47 EXPERIMENTAL_PLATFORM_API(StarlarkSemantics::experimentalPlatformsApi),
juliexxiadeb028e2019-01-05 17:19:21 -080048 EXPERIMENTAL_STARLARK_CONFIG_TRANSITION(
laurentlb6659b4c2019-02-18 07:23:36 -080049 StarlarkSemantics::experimentalStarlarkConfigTransitions),
cparsons507b00f2018-09-12 11:59:07 -070050 INCOMPATIBLE_DISABLE_OBJC_PROVIDER_RESOURCES(
laurentlb6659b4c2019-02-18 07:23:36 -080051 StarlarkSemantics::incompatibleDisableObjcProviderResources),
52 INCOMPATIBLE_NO_OUTPUT_ATTR_DEFAULT(StarlarkSemantics::incompatibleNoOutputAttrDefault),
53 INCOMPATIBLE_NO_TARGET_OUTPUT_GROUP(StarlarkSemantics::incompatibleNoTargetOutputGroup),
54 INCOMPATIBLE_NO_ATTR_LICENSE(StarlarkSemantics::incompatibleNoAttrLicense),
Googlerf8e87fb2019-04-12 19:13:28 -070055 INCOMPATIBLE_OBJC_FRAMEWORK_CLEANUP(StarlarkSemantics::incompatibleObjcFrameworkCleanup),
John Cater56887932019-04-26 05:27:07 -070056 INCOMPATIBLE_DISALLOW_RULE_EXECUTION_PLATFORM_CONSTRAINTS_ALLOWED(
57 StarlarkSemantics::incompatibleDisallowRuleExecutionPlatformConstraintsAllowed),
cparsons507b00f2018-09-12 11:59:07 -070058 NONE(null);
59
60 // Using a Function here makes the enum definitions far cleaner, and, since this is
61 // a private field, and we can ensure no callers treat this field as mutable.
62 @SuppressWarnings("ImmutableEnumChecker")
laurentlb6659b4c2019-02-18 07:23:36 -080063 private final Function<StarlarkSemantics, Boolean> semanticsFunction;
cparsons507b00f2018-09-12 11:59:07 -070064
laurentlb6659b4c2019-02-18 07:23:36 -080065 FlagIdentifier(Function<StarlarkSemantics, Boolean> semanticsFunction) {
cparsons507b00f2018-09-12 11:59:07 -070066 this.semanticsFunction = semanticsFunction;
67 }
cparsons6622e6f2018-10-17 15:00:09 -070068
69 /**
70 * Returns the name of the flag that this identifier controls. For example, EXPERIMENTAL_FOO
71 * would return 'experimental_foo'.
72 */
73 public String getFlagName() {
laurentlbe5894f02018-10-25 13:02:00 -070074 return Ascii.toLowerCase(this.name());
cparsons6622e6f2018-10-17 15:00:09 -070075 }
cparsons507b00f2018-09-12 11:59:07 -070076 }
77
78 /**
79 * Returns true if a feature attached to the given toggling flags should be enabled.
80 *
81 * <ul>
plfc25c0542019-03-07 07:35:38 -080082 * <li>If both parameters are {@code NONE}, this indicates the feature is not controlled by
83 * flags, and should thus be enabled.
84 * <li>If the {@code enablingFlag} parameter is non-{@code NONE}, this returns true if and only
85 * if that flag is true. (This represents a feature that is only on if a given flag is
86 * *on*).
87 * <li>If the {@code disablingFlag} parameter is non-{@code NONE}, this returns true if and only
88 * if that flag is false. (This represents a feature that is only on if a given flag is
89 * *off*).
90 * <li>It is illegal to pass both parameters as non-{@code NONE}.
cparsons507b00f2018-09-12 11:59:07 -070091 * </ul>
92 */
93 public boolean isFeatureEnabledBasedOnTogglingFlags(
plfc25c0542019-03-07 07:35:38 -080094 FlagIdentifier enablingFlag, FlagIdentifier disablingFlag) {
95 Preconditions.checkArgument(
96 enablingFlag == FlagIdentifier.NONE || disablingFlag == FlagIdentifier.NONE,
cparsons507b00f2018-09-12 11:59:07 -070097 "at least one of 'enablingFlag' or 'disablingFlag' must be NONE");
98 if (enablingFlag != FlagIdentifier.NONE) {
99 return enablingFlag.semanticsFunction.apply(this);
100 } else {
101 return disablingFlag == FlagIdentifier.NONE || !disablingFlag.semanticsFunction.apply(this);
102 }
103 }
104
cparsons1832ed32018-11-13 14:15:32 -0800105 /** Returns the value of the given flag. */
106 public boolean flagValue(FlagIdentifier flagIdentifier) {
107 return flagIdentifier.semanticsFunction.apply(this);
108 }
109
brandjon617f8ff2017-10-06 06:07:13 +0200110 /**
111 * The AutoValue-generated concrete class implementing this one.
112 *
113 * <p>AutoValue implementation classes are usually package-private. We expose it here for the
114 * benefit of code that relies on reflection.
115 */
laurentlb6659b4c2019-02-18 07:23:36 -0800116 public static final Class<? extends StarlarkSemantics> IMPL_CLASS =
117 AutoValue_StarlarkSemantics.class;
brandjon617f8ff2017-10-06 06:07:13 +0200118
brandjon60be5312017-10-04 23:06:41 +0200119 // <== Add new options here in alphabetic order ==>
Googler137019f2019-04-23 02:23:37 -0700120 public abstract boolean experimentalAllowIncrementalRepositoryUpdates();
121
juliexxia1f332e02018-10-31 14:20:55 -0700122 public abstract boolean experimentalBuildSettingApi();
123
cushon1e86d352019-01-11 16:48:10 -0800124 public abstract ImmutableList<String> experimentalCcSkylarkApiEnabledPackages();
plf7e41f9b2018-08-03 01:47:22 -0700125
Googlerc2cd9572018-10-02 14:38:15 -0700126 public abstract boolean experimentalEnableAndroidMigrationApis();
127
cparsonsed6bfbe2019-04-19 10:17:03 -0700128 public abstract boolean experimentalGoogleLegacyApi();
129
elenairinae679d022019-01-07 07:49:27 -0800130 public abstract ImmutableList<String> experimentalJavaCommonCreateProviderEnabledPackages();
131
cparsons140c0762018-10-05 14:07:19 -0700132 public abstract boolean experimentalPlatformsApi();
133
cparsonse0efc142018-10-17 09:39:10 -0700134 public abstract boolean experimentalStarlarkConfigTransitions();
135
brandjon60be5312017-10-04 23:06:41 +0200136 public abstract boolean incompatibleBzlDisallowLoadAfterStatement();
laurentlb1cbce0f2018-03-27 12:43:22 -0700137
brandjon60be5312017-10-04 23:06:41 +0200138 public abstract boolean incompatibleDepsetIsNotIterable();
laurentlb1cbce0f2018-03-27 12:43:22 -0700139
laurentlb2bbda4a2017-12-07 10:38:46 -0800140 public abstract boolean incompatibleDepsetUnion();
laurentlb1cbce0f2018-03-27 12:43:22 -0700141
gregce4aa059a2019-02-26 13:20:47 -0800142 public abstract boolean incompatibleDisableThirdPartyLicenseChecking();
143
cparsonse5068582018-07-16 13:33:33 -0700144 public abstract boolean incompatibleDisableDeprecatedAttrParams();
145
cparsons99be8b42018-03-01 15:16:46 -0800146 public abstract boolean incompatibleDisableObjcProviderResources();
laurentlb1cbce0f2018-03-27 12:43:22 -0700147
brandjon60be5312017-10-04 23:06:41 +0200148 public abstract boolean incompatibleDisallowDictPlus();
laurentlb1cbce0f2018-03-27 12:43:22 -0700149
laurentlb707acfe2018-04-13 06:09:30 -0700150 public abstract boolean incompatibleDisallowFileType();
151
elenairina2fe38c12019-01-10 00:49:13 -0800152 public abstract boolean incompatibleDisallowLegacyJavaProvider();
153
tomlue3749702018-05-02 09:38:00 -0700154 public abstract boolean incompatibleDisallowLegacyJavaInfo();
155
nharmatad86b5092018-10-16 15:50:21 -0700156 public abstract boolean incompatibleDisallowLoadLabelsToCrossPackageBoundaries();
157
laurentlb64e833c2019-02-22 09:50:34 -0800158 public abstract boolean incompatibleDisallowNativeInBuildFile();
159
tomlubeafd7e2018-04-05 15:03:19 -0700160 public abstract boolean incompatibleDisallowOldStyleArgsAdd();
161
John Cater56887932019-04-26 05:27:07 -0700162 public abstract boolean incompatibleDisallowRuleExecutionPlatformConstraintsAllowed();
163
cparsons5d531712019-02-05 13:31:03 -0800164 public abstract boolean incompatibleDisallowStructProviderSyntax();
165
tomlu774bfe02018-08-24 14:15:44 -0700166 public abstract boolean incompatibleExpandDirectories();
167
brandjon60be5312017-10-04 23:06:41 +0200168 public abstract boolean incompatibleNewActionsApi();
laurentlb1cbce0f2018-03-27 12:43:22 -0700169
laurentlbd8d37762018-10-26 14:08:33 -0700170 public abstract boolean incompatibleNoAttrLicense();
171
laurentlbde41cf82019-04-12 13:47:58 -0700172 public abstract boolean incompatibleNoKwargsInBuildFiles();
173
cparsonsfbc828b2018-10-04 14:38:50 -0700174 public abstract boolean incompatibleNoOutputAttrDefault();
175
tomluaaf11e92018-06-02 10:20:16 -0700176 public abstract boolean incompatibleNoSupportToolsInActionInputs();
177
cparsons3cb3a5d2018-10-01 10:36:08 -0700178 public abstract boolean incompatibleNoTargetOutputGroup();
179
laurentlb9d179e12018-09-27 08:15:42 -0700180 public abstract boolean incompatibleNoTransitiveLoads();
181
Googlerf8e87fb2019-04-12 19:13:28 -0700182 public abstract boolean incompatibleObjcFrameworkCleanup();
183
dannarked874632019-01-17 14:01:15 -0800184 public abstract boolean incompatibleRemapMainRepo();
185
Danna Kelmer21f4bd32018-11-29 11:04:48 -0800186 public abstract boolean incompatibleRemoveNativeMavenJar();
187
cparsons6b3724f2019-04-26 08:53:32 -0700188 public abstract boolean incompatibleRestrictNamedParams();
189
laurentlb18ef7a52019-03-28 08:07:25 -0700190 public abstract boolean incompatibleStringJoinRequiresStrings();
191
laurentlbed633332019-04-12 16:34:08 -0700192 public abstract boolean incompatibleStaticNameResolutionInBuildFiles();
193
brandjon60be5312017-10-04 23:06:41 +0200194 public abstract boolean internalSkylarkFlagTestCanary();
195
plf3010e572019-03-11 07:02:28 -0700196 public abstract boolean incompatibleDoNotSplitLinkingCmdline();
197
plf0d40b7f2019-04-29 08:09:11 -0700198 public abstract boolean incompatibleDepsetForLibrariesToLinkGetter();
199
brandjon6ac92f92017-12-06 13:57:15 -0800200 /** Returns a {@link Builder} initialized with the values of this instance. */
201 public abstract Builder toBuilder();
202
brandjon60be5312017-10-04 23:06:41 +0200203 public static Builder builder() {
laurentlb6659b4c2019-02-18 07:23:36 -0800204 return new AutoValue_StarlarkSemantics.Builder();
brandjon60be5312017-10-04 23:06:41 +0200205 }
206
brandjon6ac92f92017-12-06 13:57:15 -0800207 /** Returns a {@link Builder} initialized with default values for all options. */
208 public static Builder builderWithDefaults() {
209 return DEFAULT_SEMANTICS.toBuilder();
210 }
211
laurentlb6659b4c2019-02-18 07:23:36 -0800212 public static final StarlarkSemantics DEFAULT_SEMANTICS =
vladmos1df46352017-11-30 03:02:36 -0800213 builder()
214 // <== Add new options here in alphabetic order ==>
juliexxia1f332e02018-10-31 14:20:55 -0700215 .experimentalBuildSettingApi(false)
plf7e41f9b2018-08-03 01:47:22 -0700216 .experimentalCcSkylarkApiEnabledPackages(ImmutableList.of())
Googler137019f2019-04-23 02:23:37 -0700217 .experimentalAllowIncrementalRepositoryUpdates(false)
Googlerc2cd9572018-10-02 14:38:15 -0700218 .experimentalEnableAndroidMigrationApis(false)
cparsonsed6bfbe2019-04-19 10:17:03 -0700219 .experimentalGoogleLegacyApi(false)
elenairinae679d022019-01-07 07:49:27 -0800220 .experimentalJavaCommonCreateProviderEnabledPackages(ImmutableList.of())
cparsons140c0762018-10-05 14:07:19 -0700221 .experimentalPlatformsApi(false)
cparsonse0efc142018-10-17 09:39:10 -0700222 .experimentalStarlarkConfigTransitions(false)
laurentlb3992d292019-03-22 13:35:12 -0700223 .incompatibleBzlDisallowLoadAfterStatement(true)
vladmos1df46352017-11-30 03:02:36 -0800224 .incompatibleDepsetIsNotIterable(false)
laurentlb2cfa0192019-04-26 06:34:47 -0700225 .incompatibleDepsetUnion(true)
gregcec4333f42019-03-28 14:39:20 -0700226 .incompatibleDisableThirdPartyLicenseChecking(true)
cparsonse5068582018-07-16 13:33:33 -0700227 .incompatibleDisableDeprecatedAttrParams(false)
kaipi6cb90b82019-05-01 09:16:31 -0700228 .incompatibleDisableObjcProviderResources(true)
laurentlbb6422282019-02-20 11:03:01 -0800229 .incompatibleDisallowDictPlus(true)
laurentlbce1a64e2019-02-13 12:36:06 -0800230 .incompatibleDisallowFileType(true)
elenairina2fe38c12019-01-10 00:49:13 -0800231 .incompatibleDisallowLegacyJavaProvider(false)
tomlue3749702018-05-02 09:38:00 -0700232 .incompatibleDisallowLegacyJavaInfo(false)
laurentlb3f791e762019-03-26 08:01:28 -0700233 .incompatibleDisallowLoadLabelsToCrossPackageBoundaries(true)
schmittd1c17942019-05-23 07:34:28 -0700234 .incompatibleDisallowNativeInBuildFile(false)
laurentlbd4e13ea2019-02-21 13:07:26 -0800235 .incompatibleDisallowOldStyleArgsAdd(true)
John Cater56887932019-04-26 05:27:07 -0700236 .incompatibleDisallowRuleExecutionPlatformConstraintsAllowed(false)
cparsons5d531712019-02-05 13:31:03 -0800237 .incompatibleDisallowStructProviderSyntax(false)
laurentlbcc7a4da2019-01-22 14:38:27 -0800238 .incompatibleExpandDirectories(true)
vladmos1df46352017-11-30 03:02:36 -0800239 .incompatibleNewActionsApi(false)
laurentlbce4b73e2019-03-27 12:32:34 -0700240 .incompatibleNoAttrLicense(true)
laurentlbde41cf82019-04-12 13:47:58 -0700241 .incompatibleNoKwargsInBuildFiles(false)
laurentlb774cf202019-04-12 17:23:58 -0700242 .incompatibleNoOutputAttrDefault(true)
tomluaaf11e92018-06-02 10:20:16 -0700243 .incompatibleNoSupportToolsInActionInputs(false)
cparsons3cb3a5d2018-10-01 10:36:08 -0700244 .incompatibleNoTargetOutputGroup(false)
laurentlb684646e2019-03-22 08:24:33 -0700245 .incompatibleNoTransitiveLoads(true)
Googlerf8e87fb2019-04-12 19:13:28 -0700246 .incompatibleObjcFrameworkCleanup(false)
pcloudy70981cd2019-02-28 02:32:15 -0800247 .incompatibleRemapMainRepo(false)
Danna Kelmer21f4bd32018-11-29 11:04:48 -0800248 .incompatibleRemoveNativeMavenJar(false)
cparsons6b3724f2019-04-26 08:53:32 -0700249 .incompatibleRestrictNamedParams(false)
laurentlbcc7a6e02019-05-22 14:30:47 -0700250 .incompatibleStaticNameResolutionInBuildFiles(true)
laurentlb18ef7a52019-03-28 08:07:25 -0700251 .incompatibleStringJoinRequiresStrings(false)
Klaus Aehliga7b34a12018-02-20 09:31:37 -0800252 .internalSkylarkFlagTestCanary(false)
plf3010e572019-03-11 07:02:28 -0700253 .incompatibleDoNotSplitLinkingCmdline(false)
plf0d40b7f2019-04-29 08:09:11 -0700254 .incompatibleDepsetForLibrariesToLinkGetter(false)
Klaus Aehliga7b34a12018-02-20 09:31:37 -0800255 .build();
brandjon60be5312017-10-04 23:06:41 +0200256
laurentlb6659b4c2019-02-18 07:23:36 -0800257 /** Builder for {@link StarlarkSemantics}. All fields are mandatory. */
brandjon60be5312017-10-04 23:06:41 +0200258 @AutoValue.Builder
259 public abstract static class Builder {
260
261 // <== Add new options here in alphabetic order ==>
Googler137019f2019-04-23 02:23:37 -0700262 public abstract Builder experimentalAllowIncrementalRepositoryUpdates(boolean value);
263
juliexxia1f332e02018-10-31 14:20:55 -0700264 public abstract Builder experimentalBuildSettingApi(boolean value);
265
plf7e41f9b2018-08-03 01:47:22 -0700266 public abstract Builder experimentalCcSkylarkApiEnabledPackages(List<String> value);
267
Googlerc2cd9572018-10-02 14:38:15 -0700268 public abstract Builder experimentalEnableAndroidMigrationApis(boolean value);
269
cparsonsed6bfbe2019-04-19 10:17:03 -0700270 public abstract Builder experimentalGoogleLegacyApi(boolean value);
271
elenairinae679d022019-01-07 07:49:27 -0800272 public abstract Builder experimentalJavaCommonCreateProviderEnabledPackages(List<String> value);
273
cparsons140c0762018-10-05 14:07:19 -0700274 public abstract Builder experimentalPlatformsApi(boolean value);
275
cparsonse0efc142018-10-17 09:39:10 -0700276 public abstract Builder experimentalStarlarkConfigTransitions(boolean value);
277
brandjon60be5312017-10-04 23:06:41 +0200278 public abstract Builder incompatibleBzlDisallowLoadAfterStatement(boolean value);
laurentlb1cbce0f2018-03-27 12:43:22 -0700279
brandjon60be5312017-10-04 23:06:41 +0200280 public abstract Builder incompatibleDepsetIsNotIterable(boolean value);
laurentlb1cbce0f2018-03-27 12:43:22 -0700281
laurentlb2bbda4a2017-12-07 10:38:46 -0800282 public abstract Builder incompatibleDepsetUnion(boolean value);
laurentlb1cbce0f2018-03-27 12:43:22 -0700283
gregce4aa059a2019-02-26 13:20:47 -0800284 public abstract Builder incompatibleDisableThirdPartyLicenseChecking(boolean value);
285
cparsonse5068582018-07-16 13:33:33 -0700286 public abstract Builder incompatibleDisableDeprecatedAttrParams(boolean value);
287
cparsons99be8b42018-03-01 15:16:46 -0800288 public abstract Builder incompatibleDisableObjcProviderResources(boolean value);
laurentlb1cbce0f2018-03-27 12:43:22 -0700289
brandjon60be5312017-10-04 23:06:41 +0200290 public abstract Builder incompatibleDisallowDictPlus(boolean value);
laurentlb1cbce0f2018-03-27 12:43:22 -0700291
laurentlb707acfe2018-04-13 06:09:30 -0700292 public abstract Builder incompatibleDisallowFileType(boolean value);
293
elenairina2fe38c12019-01-10 00:49:13 -0800294 public abstract Builder incompatibleDisallowLegacyJavaProvider(boolean value);
295
tomlue3749702018-05-02 09:38:00 -0700296 public abstract Builder incompatibleDisallowLegacyJavaInfo(boolean value);
297
nharmatad86b5092018-10-16 15:50:21 -0700298 public abstract Builder incompatibleDisallowLoadLabelsToCrossPackageBoundaries(boolean value);
299
tomlubeafd7e2018-04-05 15:03:19 -0700300 public abstract Builder incompatibleDisallowOldStyleArgsAdd(boolean value);
301
laurentlb64e833c2019-02-22 09:50:34 -0800302 public abstract Builder incompatibleDisallowNativeInBuildFile(boolean value);
303
John Cater56887932019-04-26 05:27:07 -0700304 public abstract Builder incompatibleDisallowRuleExecutionPlatformConstraintsAllowed(
305 boolean value);
306
cparsons5d531712019-02-05 13:31:03 -0800307 public abstract Builder incompatibleDisallowStructProviderSyntax(boolean value);
308
tomlu774bfe02018-08-24 14:15:44 -0700309 public abstract Builder incompatibleExpandDirectories(boolean value);
310
brandjon60be5312017-10-04 23:06:41 +0200311 public abstract Builder incompatibleNewActionsApi(boolean value);
laurentlb1cbce0f2018-03-27 12:43:22 -0700312
laurentlbde41cf82019-04-12 13:47:58 -0700313 public abstract Builder incompatibleNoKwargsInBuildFiles(boolean value);
314
laurentlbd8d37762018-10-26 14:08:33 -0700315 public abstract Builder incompatibleNoAttrLicense(boolean value);
316
cparsonsfbc828b2018-10-04 14:38:50 -0700317 public abstract Builder incompatibleNoOutputAttrDefault(boolean value);
318
tomluaaf11e92018-06-02 10:20:16 -0700319 public abstract Builder incompatibleNoSupportToolsInActionInputs(boolean value);
320
cparsons3cb3a5d2018-10-01 10:36:08 -0700321 public abstract Builder incompatibleNoTargetOutputGroup(boolean value);
322
laurentlb9d179e12018-09-27 08:15:42 -0700323 public abstract Builder incompatibleNoTransitiveLoads(boolean value);
324
Googlerf8e87fb2019-04-12 19:13:28 -0700325 public abstract Builder incompatibleObjcFrameworkCleanup(boolean value);
326
dannarked874632019-01-17 14:01:15 -0800327 public abstract Builder incompatibleRemapMainRepo(boolean value);
328
Danna Kelmer21f4bd32018-11-29 11:04:48 -0800329 public abstract Builder incompatibleRemoveNativeMavenJar(boolean value);
330
cparsons6b3724f2019-04-26 08:53:32 -0700331 public abstract Builder incompatibleRestrictNamedParams(boolean value);
332
laurentlb18ef7a52019-03-28 08:07:25 -0700333 public abstract Builder incompatibleStringJoinRequiresStrings(boolean value);
334
laurentlbed633332019-04-12 16:34:08 -0700335 public abstract Builder incompatibleStaticNameResolutionInBuildFiles(boolean value);
cushon4a6f7082019-01-28 00:31:29 -0800336
brandjon60be5312017-10-04 23:06:41 +0200337 public abstract Builder internalSkylarkFlagTestCanary(boolean value);
338
plf3010e572019-03-11 07:02:28 -0700339 public abstract Builder incompatibleDoNotSplitLinkingCmdline(boolean value);
340
plf0d40b7f2019-04-29 08:09:11 -0700341 public abstract Builder incompatibleDepsetForLibrariesToLinkGetter(boolean value);
342
laurentlb6659b4c2019-02-18 07:23:36 -0800343 public abstract StarlarkSemantics build();
brandjon60be5312017-10-04 23:06:41 +0200344 }
345}