diff options
author | Vladimir Moskva <vladmos@google.com> | 2016-09-15 18:22:01 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-09-16 07:59:16 +0000 |
commit | dfad9e312d3a2aae837369cbec6eef40f7bf6b92 (patch) | |
tree | aee4a59d50328ed6ad521b1f667bc268d96fc68f /src/main/java/com/google/devtools/build | |
parent | 827bac6ac97c25e20fcf1f97031e1969b7bcede7 (diff) |
Deprecation warnings for deprecated syntax
RELNOTES: Global varaiables HOST_CFG and DATA_CFG are deprecated in favor of strings "host"
and "data.
Argument `cfg = "host"` or `cfg = "data"` is mandatory if `executable = True` is provided for a label.
--
MOS_MIGRATED_REVID=133285197
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java | 23 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/Environment.java | 2 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java index 634a42fed6..015b0f0421 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet; @@ -153,8 +154,8 @@ public final class SkylarkAttr { } private static Attribute.Builder<?> createAttribute( - Type<?> type, SkylarkDict<String, Object> arguments, FuncallExpression ast, Environment env) - throws EvalException, ConversionException { + Type<?> type, SkylarkDict<String, Object> arguments, FuncallExpression ast, Environment env, + Location loc) throws EvalException, ConversionException { // We use an empty name now so that we can set it later. // This trick makes sense only in the context of Skylark (builtin rules should not use it). Attribute.Builder<?> builder = Attribute.attr("", type); @@ -198,6 +199,11 @@ public final class SkylarkAttr { if (containsNonNoneKey(arguments, EXECUTABLE_ARG) && (Boolean) arguments.get(EXECUTABLE_ARG)) { builder.setPropertyFlag("EXECUTABLE"); + if (!containsNonNoneKey(arguments, CONFIGURATION_ARG)) { + String message = "Argument `cfg = \"host\"` or `cfg = \"data\"` is required if" + + " `executable = True` is provided for a label"; + env.handleEvent(Event.warn(loc, message)); + } } // TODO(laurentlb): Deprecated, remove in August 2016 (use allow_single_file). @@ -262,6 +268,9 @@ public final class SkylarkAttr { Object trans = arguments.get(CONFIGURATION_ARG); if (trans instanceof ConfigurationTransition) { // TODO(laurentlb): Deprecated, to be removed in August 2016. + String message = "Variables HOST_CFG and DATA_CFG are deprecated in favor of strings" + + " \"host\" and \"data\" correspondingly"; + env.handleEvent(Event.warn(loc, message)); builder.cfg((ConfigurationTransition) trans); } else if (trans.equals("data")) { builder.cfg(ConfigurationTransition.DATA); @@ -300,7 +309,7 @@ public final class SkylarkAttr { SkylarkDict<String, Object> kwargs, Type<?> type, FuncallExpression ast, Environment env) throws EvalException { try { - return new Descriptor(createAttribute(type, kwargs, ast, env)); + return new Descriptor(createAttribute(type, kwargs, ast, env, ast.getLocation())); } catch (ConversionException e) { throw new EvalException(ast.getLocation(), e.getMessage()); } @@ -331,7 +340,8 @@ public final class SkylarkAttr { Preconditions.checkNotNull(maybeGetNonConfigurableReason(type), type); try { return new Descriptor( - createAttribute(type, kwargs, ast, env).nonconfigurable(whyNotConfigurableReason)); + createAttribute(type, kwargs, ast, env, ast.getLocation()) + .nonconfigurable(whyNotConfigurableReason)); } catch (ConversionException e) { throw new EvalException(ast.getLocation(), e.getMessage()); } @@ -596,7 +606,8 @@ public final class SkylarkAttr { CONFIGURATION_ARG, cfg), ast, - env); + env, + ast.getLocation()); ImmutableList<SkylarkAspect> skylarkAspects = ImmutableList.copyOf(aspects.getContents(SkylarkAspect.class, "aspects")); return new Descriptor(attribute, skylarkAspects); @@ -875,7 +886,7 @@ public final class SkylarkAttr { cfg); try { Attribute.Builder<?> attribute = - createAttribute(BuildType.LABEL_LIST, kwargs, ast, env); + createAttribute(BuildType.LABEL_LIST, kwargs, ast, env, ast.getLocation()); ImmutableList<SkylarkAspect> skylarkAspects = ImmutableList.copyOf(aspects.getContents(SkylarkAspect.class, "aspects")); return new Descriptor(attribute, skylarkAspects); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java index f7ea9f98ca..177c052c3f 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Environment.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Environment.java @@ -777,7 +777,7 @@ public final class Environment implements Freezable { return knownGlobalVariables != null && knownGlobalVariables.contains(varname); } - void handleEvent(Event event) { + public void handleEvent(Event event) { eventHandler.handle(event); } |