| // Copyright 2018 The Bazel Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package com.google.devtools.build.lib.skylarkbuildapi.test; |
| |
| import com.google.devtools.build.lib.collect.nestedset.NestedSet; |
| import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi; |
| import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; |
| import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; |
| import com.google.devtools.build.lib.skylarkinterface.SkylarkValue; |
| |
| /** |
| * Encapsulates information about an analysis-phase error which would have occurred during a build. |
| */ |
| @SkylarkModule( |
| name = "AnalysisFailureInfo", |
| doc = "<b>Experimental. This API is experimental and subject to change at any time</b><p> " |
| + "Encapsulates information about an analysis-phase error which would have occurred during " |
| + "a build. In most builds, an analysis-phase error would result in a build failure " |
| + "and the error description would be output to the console. However, if " |
| + "<code>--allow_analysis_failure</code> is set, targets which would otherwise fail in " |
| + "analysis will instead propagate an instance of this object (and no other provider " |
| + "instances). " |
| + "" |
| + "<p>Under <code>--allow_analysis_failure</code>, <code>AnalysisFailureInfo</code> " |
| + "objects are automatically re-propagated up a dependency tree using the following " |
| + "logic:<ul>" |
| + "" |
| + "<li>If a target fails but none of its direct dependencies propagated " |
| + "<code>AnalysisFailureInfo</code>, then propagate an instance of this " |
| + "provider containing an <code>AnalysisFailure</code> object describing the " |
| + "failure.</li> " |
| + "" |
| + "<li>If one or more of a target's dependencies propagated " |
| + "<code>AnalysisFailureInfo</code>, then propagate a provider with " |
| + "<code>causes</code> equal to the union of the <code>causes</code> of the " |
| + "dependencies.</li></ul>", |
| documented = false) |
| public interface AnalysisFailureInfoApi<AnalysisFailureApiT extends AnalysisFailureApi> |
| extends SkylarkValue { |
| |
| @SkylarkCallable( |
| name = "causes", |
| doc = |
| "A depset of <code>AnalysisFailure</code> objects describing the failures that " |
| + "occurred in this target or its dependencies.", |
| documented = false, |
| structField = true) |
| public NestedSet<AnalysisFailureApiT> getCauses(); |
| |
| /** Provider class for {@link AnalysisFailureInfoApi} objects. */ |
| @SkylarkModule(name = "Provider", documented = false, doc = "") |
| public interface AnalysisFailureInfoProviderApi extends ProviderApi {} |
| } |