diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
16 files changed, 48 insertions, 62 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java index f97f14afe8..a121e55324 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java @@ -25,7 +25,7 @@ import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.events.ExtendedEventHandler; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyFunction; import java.util.List; @@ -122,7 +122,7 @@ public interface AnalysisEnvironment extends ActionRegistry { * Returns the options that affect the Skylark interpreter used for evaluating Skylark rule * implementation functions. */ - SkylarkSemanticsOptions getSkylarkSemantics() throws InterruptedException; + SkylarkSemantics getSkylarkSemantics() throws InterruptedException; /** * Returns the Artifact that is used to hold the non-volatile workspace status for the current diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java index 4198e0ca45..3fa4c0f1a5 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java @@ -33,7 +33,7 @@ import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.skyframe.BuildInfoCollectionValue; import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.skyframe.WorkspaceStatusValue; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyFunction; @@ -281,7 +281,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { } @Override - public SkylarkSemanticsOptions getSkylarkSemantics() throws InterruptedException { + public SkylarkSemantics getSkylarkSemantics() throws InterruptedException { return PrecomputedValue.SKYLARK_SEMANTICS.get(skyframeEnv); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index ef01005a9c..e8cb1b7543 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java @@ -54,10 +54,9 @@ import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.Environment.Extension; import com.google.devtools.build.lib.syntax.Environment.Phase; import com.google.devtools.build.lib.syntax.Mutability; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.syntax.SkylarkUtils; import com.google.devtools.build.lib.syntax.Type; -import com.google.devtools.common.options.Options; import com.google.devtools.common.options.OptionsClassProvider; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -688,7 +687,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { Environment env = createSkylarkRuleClassEnvironment( mutability, SkylarkModules.getGlobals(modules), - Options.getDefaults(SkylarkSemanticsOptions.class), + SkylarkSemantics.DEFAULT_SEMANTICS, /*eventHandler=*/ null, /*astFileContentHashCode=*/ null, /*importMap=*/ null); @@ -702,7 +701,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { private Environment createSkylarkRuleClassEnvironment( Mutability mutability, Environment.Frame globals, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, EventHandler eventHandler, String astFileContentHashCode, Map<String, Extension> importMap) { @@ -723,7 +722,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { public Environment createSkylarkRuleClassEnvironment( Label extensionLabel, Mutability mutability, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, EventHandler eventHandler, String astFileContentHashCode, Map<String, Extension> importMap) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java index 077b499795..d993620ff8 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java @@ -47,7 +47,7 @@ import com.google.devtools.build.lib.syntax.Mutability; import com.google.devtools.build.lib.syntax.Runtime; import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.syntax.SkylarkType; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileType; @@ -75,7 +75,7 @@ public final class SkylarkRuleConfiguredTargetUtil { public static ConfiguredTarget buildRule( RuleContext ruleContext, BaseFunction ruleImplementation, - SkylarkSemanticsOptions skylarkSemantics) + SkylarkSemantics skylarkSemantics) throws InterruptedException { String expectFailure = ruleContext.attributes().get("expect_failure", Type.STRING); SkylarkRuleContext skylarkRuleContext = null; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java index e242d46b67..13dd231759 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java @@ -69,7 +69,6 @@ import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.syntax.SkylarkIndexable; import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkSemantics; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; import com.google.devtools.build.lib.syntax.SkylarkType; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.syntax.Type.LabelClass; @@ -199,19 +198,17 @@ public final class SkylarkRuleContext implements SkylarkValue { * if it is for a rule. * @throws InterruptedException */ - // TODO(brandjon): Take in SkylarkSemantics instead of SkylarkSemanticsOptions. public SkylarkRuleContext(RuleContext ruleContext, @Nullable AspectDescriptor aspectDescriptor, - SkylarkSemanticsOptions skylarkSemantics) + SkylarkSemantics skylarkSemantics) throws EvalException, InterruptedException { - this.actionFactory = new SkylarkActionFactory( - this, skylarkSemantics.toSkylarkSemantics(), ruleContext); + this.actionFactory = new SkylarkActionFactory(this, skylarkSemantics, ruleContext); this.ruleContext = Preconditions.checkNotNull(ruleContext); this.ruleLabelCanonicalName = ruleContext.getLabel().getCanonicalForm(); this.fragments = new FragmentCollection(ruleContext, ConfigurationTransition.NONE); this.hostFragments = new FragmentCollection(ruleContext, ConfigurationTransition.HOST); this.aspectDescriptor = aspectDescriptor; - this.skylarkSemantics = skylarkSemantics.toSkylarkSemantics(); + this.skylarkSemantics = skylarkSemantics; if (aspectDescriptor == null) { this.isForAspect = false; diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java index ce3e1c0e67..df241d4e56 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java @@ -58,7 +58,7 @@ import com.google.devtools.build.lib.syntax.Runtime; import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkList.MutableList; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor; import com.google.devtools.build.lib.syntax.SkylarkUtils; import com.google.devtools.build.lib.syntax.Statement; @@ -69,7 +69,6 @@ import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.UnixGlob; -import com.google.devtools.common.options.Options; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; @@ -1287,7 +1286,7 @@ public final class PackageFactory { Map<String, Extension> imports, ImmutableList<Label> skylarkFileDependencies, RuleVisibility defaultVisibility, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, Globber globber) throws InterruptedException { StoredEventHandler localReporterForParsing = new StoredEventHandler(); @@ -1329,7 +1328,7 @@ public final class PackageFactory { Map<String, Extension> imports, ImmutableList<Label> skylarkFileDependencies, RuleVisibility defaultVisibility, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, Globber globber) throws InterruptedException { MakeEnvironment.Builder makeEnv = new MakeEnvironment.Builder(); @@ -1421,7 +1420,7 @@ public final class PackageFactory { /*imports=*/ ImmutableMap.<String, Extension>of(), /*skylarkFileDependencies=*/ ImmutableList.<Label>of(), /*defaultVisibility=*/ ConstantRuleVisibility.PUBLIC, - Options.getDefaults(SkylarkSemanticsOptions.class), + SkylarkSemantics.DEFAULT_SEMANTICS, globber) .build(); for (Postable post : result.getPosts()) { @@ -1631,7 +1630,7 @@ public final class PackageFactory { Iterable<Event> pastEvents, Iterable<Postable> pastPosts, RuleVisibility defaultVisibility, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, boolean containsError, MakeEnvironment.Builder pkgMakeEnv, Map<String, Extension> imports, diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClassProvider.java index ba7fb2ff90..5235523d53 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClassProvider.java @@ -19,7 +19,7 @@ import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.syntax.Environment; import com.google.devtools.build.lib.syntax.Environment.Extension; import com.google.devtools.build.lib.syntax.Mutability; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import java.util.Map; import javax.annotation.Nullable; @@ -58,7 +58,7 @@ public interface RuleClassProvider { Environment createSkylarkRuleClassEnvironment( Label label, Mutability mutability, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, EventHandler eventHandler, @Nullable String astFileContentHashCode, @Nullable Map<String, Extension> importMap); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupFunction.java index f6385f2bb4..976b56d914 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupFunction.java @@ -20,7 +20,7 @@ import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.syntax.BuildFileAST; import com.google.devtools.build.lib.syntax.Mutability; import com.google.devtools.build.lib.syntax.Runtime; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; @@ -100,7 +100,7 @@ public class ASTFileLookupFunction implements SkyFunction { if (!fileValue.isFile()) { return ASTFileLookupValue.forBadFile(fileLabel); } - SkylarkSemanticsOptions skylarkSemantics = PrecomputedValue.SKYLARK_SEMANTICS.get(env); + SkylarkSemantics skylarkSemantics = PrecomputedValue.SKYLARK_SEMANTICS.get(env); if (skylarkSemantics == null) { return null; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java index 562b2bfdb7..c5d723293e 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java @@ -53,7 +53,7 @@ import com.google.devtools.build.lib.syntax.Environment.Extension; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.ParserInputSource; import com.google.devtools.build.lib.syntax.SkylarkImport; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.syntax.Statement; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; @@ -532,7 +532,7 @@ public class PackageFunction implements SkyFunction { return null; } - SkylarkSemanticsOptions skylarkSemantics = PrecomputedValue.SKYLARK_SEMANTICS.get(env); + SkylarkSemantics skylarkSemantics = PrecomputedValue.SKYLARK_SEMANTICS.get(env); if (skylarkSemantics == null) { return null; } @@ -1186,7 +1186,7 @@ public class PackageFunction implements SkyFunction { Path buildFilePath, @Nullable FileValue buildFileValue, RuleVisibility defaultVisibility, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, List<Statement> preludeStatements, Path packageRoot, Environment env) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java index 1b7ccc9472..a506485491 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java @@ -24,7 +24,7 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildIn import com.google.devtools.build.lib.packages.RuleVisibility; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.ConflictException; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.Injectable; @@ -85,7 +85,7 @@ public final class PrecomputedValue implements SkyValue { public static final Precomputed<RuleVisibility> DEFAULT_VISIBILITY = new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "default_visibility")); - public static final Precomputed<SkylarkSemanticsOptions> SKYLARK_SEMANTICS = + public static final Precomputed<SkylarkSemantics> SKYLARK_SEMANTICS = new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "skylark_semantics")); static final Precomputed<UUID> BUILD_ID = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index b3159c9134..1ca3360b8a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -713,7 +713,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { } private void setSkylarkSemantics(SkylarkSemanticsOptions skylarkSemanticsOptions) { - PrecomputedValue.SKYLARK_SEMANTICS.set(injectable(), skylarkSemanticsOptions); + PrecomputedValue.SKYLARK_SEMANTICS.set( + injectable(), skylarkSemanticsOptions.toSkylarkSemantics()); } public void injectExtraPrecomputedValues( diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java index e2d2a486cc..36f3a2a87a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java @@ -43,7 +43,7 @@ import com.google.devtools.build.lib.syntax.Identifier; import com.google.devtools.build.lib.syntax.LoadStatement; import com.google.devtools.build.lib.syntax.Mutability; import com.google.devtools.build.lib.syntax.SkylarkImport; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.syntax.Statement; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; @@ -122,7 +122,7 @@ public class SkylarkImportLookupFunction implements SkyFunction { throws InconsistentFilesystemException, SkylarkImportFailedException, InterruptedException { PathFragment filePath = fileLabel.toPathFragment(); - SkylarkSemanticsOptions skylarkSemantics = PrecomputedValue.SKYLARK_SEMANTICS.get(env); + SkylarkSemantics skylarkSemantics = PrecomputedValue.SKYLARK_SEMANTICS.get(env); if (skylarkSemantics == null) { return null; } @@ -369,7 +369,7 @@ public class SkylarkImportLookupFunction implements SkyFunction { BuildFileAST ast, Label extensionLabel, Map<String, Extension> importMap, - SkylarkSemanticsOptions skylarkSemantics, + SkylarkSemantics skylarkSemantics, Environment env, boolean inWorkspace) throws SkylarkImportFailedException, InterruptedException { @@ -385,7 +385,7 @@ public class SkylarkImportLookupFunction implements SkyFunction { .createSkylarkRuleClassEnvironment( extensionLabel, mutability, skylarkSemantics, eventHandler, ast.getContentHashCode(), importMap); - if (!skylarkSemantics.internalDoNotExportBuiltins) { + if (!skylarkSemantics.internalDoNotExportBuiltins()) { extensionEnv.setupOverride("native", packageFactory.getNativeModule(inWorkspace)); } execAndExport(ast, extensionLabel, eventHandler, extensionEnv); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java index f5b0690752..e8a6086fef 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java @@ -65,7 +65,7 @@ import com.google.devtools.build.lib.skyframe.SkylarkImportLookupFunction; import com.google.devtools.build.lib.skyframe.WorkspaceASTFunction; import com.google.devtools.build.lib.skyframe.WorkspaceFileFunction; import com.google.devtools.build.lib.skyframe.WorkspaceNameFunction; -import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; +import com.google.devtools.build.lib.syntax.SkylarkSemantics; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.Path; @@ -86,7 +86,6 @@ import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import com.google.devtools.build.skyframe.Version; import com.google.devtools.build.skyframe.WalkableGraph; -import com.google.devtools.common.options.Options; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -238,9 +237,7 @@ public abstract class AbstractPackageLoader implements PackageLoader { } PrecomputedValue.PATH_PACKAGE_LOCATOR.set(injectable, pkgLocator); PrecomputedValue.DEFAULT_VISIBILITY.set(injectable, ConstantRuleVisibility.PRIVATE); - PrecomputedValue.SKYLARK_SEMANTICS.set( - injectable, - Options.getDefaults(SkylarkSemanticsOptions.class)); + PrecomputedValue.SKYLARK_SEMANTICS.set(injectable, SkylarkSemantics.DEFAULT_SEMANTICS); PrecomputedValue.DEFAULTS_PACKAGE_CONTENTS.set(injectable, defaultsPackageContents); PrecomputedValue.BLACKLISTED_PACKAGE_PREFIXES_FILE.set(injectable, PathFragment.EMPTY_FRAGMENT); return new ImmutableDiff(ImmutableList.<SkyKey>of(), valuesToInject); 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 967f4b52d2..fcd0b23925 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 @@ -650,12 +650,6 @@ public final class Environment implements Freezable { return this; } - // TODO(brandjon): Remove this overload. - public Builder setSemantics(SkylarkSemanticsOptions semantics) { - this.semantics = semantics.toSkylarkSemantics(); - return this; - } - public Builder setSemantics(SkylarkSemantics semantics) { this.semantics = semantics; return this; 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 2273f7e8c7..4041a5bf3e 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 @@ -29,6 +29,15 @@ import com.google.auto.value.AutoValue; @AutoValue public abstract class SkylarkSemantics { + /** + * The AutoValue-generated concrete class implementing this one. + * + * <p>AutoValue implementation classes are usually package-private. We expose it here for the + * benefit of code that relies on reflection. + */ + public static final Class<? extends SkylarkSemantics> IMPL_CLASS = + AutoValue_SkylarkSemantics.class; + // <== Add new options here in alphabetic order ==> public abstract boolean incompatibleBzlDisallowLoadAfterStatement(); public abstract boolean incompatibleCheckedArithmetic(); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java index 74f6db4f63..5da780209a 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java @@ -19,21 +19,15 @@ import com.google.devtools.common.options.OptionDocumentationCategory; import com.google.devtools.common.options.OptionEffectTag; import com.google.devtools.common.options.OptionMetadataTag; import com.google.devtools.common.options.OptionsBase; -import com.google.devtools.common.options.UsesOnlyCoreTypes; import java.io.Serializable; /** * Contains options that affect Skylark's semantics. * - * <p>These are injected into Skyframe when a new build invocation occurs. Changing these options - * between builds will trigger a reevaluation of everything that depends on the Skylark interpreter - * — in particular, processing BUILD and .bzl files. - * - * <p>Because these options are stored in Skyframe, they must be immutable and serializable, and so - * are subject to the restrictions of {@link UsesOnlyCoreTypes}: No {@link Option#allowMultiple} - * options, and no options with types not handled by the default converters. (Technically all - * options classes are mutable because their fields are public and non-final, but we assume no one - * is manipulating these fields by the time parsing is complete.) + * <p>These are injected into Skyframe (as an instance of {@link SkylarkSemantics}) when a new build + * invocation occurs. Changing these options between builds will therefore trigger a reevaluation of + * everything that depends on the Skylark interpreter — in particular, evaluation of all BUILD + * and .bzl files. * * <p><em>To add a new option, update the following:</em> * <ul> @@ -60,10 +54,6 @@ import java.io.Serializable; * must be kept consistent; to make it easy we use alphabetic order. The parts that need updating * are marked with the comment "<== Add new options here in alphabetic order ==>". */ -// TODO(brandjon): Do not store these options in Skyframe. Instead store SkylarkSemantics objects. -// Eliminate use of UsesOnlyCoreTypes, and then we can remove UsesOnlyCoreTypes from the options -// parser entirely. -@UsesOnlyCoreTypes public class SkylarkSemanticsOptions extends OptionsBase implements Serializable { // <== Add new options here in alphabetic order ==> |