Use SkylarkSemantics in place of options class in the interpreter

Mainly this just means using getters instead of fields to access option values.

RELNOTES: None
PiperOrigin-RevId: 171101597
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
index 110e323..3488dfd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
@@ -60,7 +60,7 @@
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkMutable;
 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.SkylarkSignatureProcessor;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.nio.charset.StandardCharsets;
@@ -81,17 +81,17 @@
 
 public class SkylarkActionFactory implements SkylarkValue {
   private final SkylarkRuleContext context;
-  private final SkylarkSemanticsOptions skylarkSemanticsOptions;
+  private final SkylarkSemantics skylarkSemantics;
   private RuleContext ruleContext;
   /** Counter for actions.run_shell helper scripts. Every script must have a unique name. */
   private int runShellOutputCounter = 0;
 
   public SkylarkActionFactory(
       SkylarkRuleContext context,
-      SkylarkSemanticsOptions skylarkSemanticsOptions,
+      SkylarkSemantics skylarkSemantics,
       RuleContext ruleContext) {
     this.context = context;
-    this.skylarkSemanticsOptions = skylarkSemanticsOptions;
+    this.skylarkSemantics = skylarkSemantics;
     this.ruleContext = ruleContext;
   }
 
@@ -1106,7 +1106,7 @@
 
     private Args(
         @Nullable Mutability mutability,
-        SkylarkSemanticsOptions skylarkSemantics,
+        SkylarkSemantics skylarkSemantics,
         EventHandler eventHandler) {
       this.mutability = mutability != null ? mutability : Mutability.IMMUTABLE;
       this.commandLine = new SkylarkCustomCommandLine.Builder(skylarkSemantics, eventHandler);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
index 166713e..7c9d5e2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
@@ -32,7 +32,7 @@
 import com.google.devtools.build.lib.syntax.Mutability;
 import com.google.devtools.build.lib.syntax.Printer;
 import com.google.devtools.build.lib.syntax.SkylarkList;
-import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions;
+import com.google.devtools.build.lib.syntax.SkylarkSemantics;
 import java.util.ArrayList;
 import java.util.IllegalFormatException;
 import java.util.List;
@@ -40,7 +40,7 @@
 
 /** Supports ctx.actions.args() from Skylark. */
 class SkylarkCustomCommandLine extends CommandLine {
-  private final SkylarkSemanticsOptions skylarkSemantics;
+  private final SkylarkSemantics skylarkSemantics;
   private final EventHandler eventHandler;
   private final ImmutableList<Object> arguments;
 
@@ -116,7 +116,7 @@
         List<Object> arguments,
         int argi,
         ImmutableList.Builder<String> builder,
-        SkylarkSemanticsOptions skylarkSemantics,
+        SkylarkSemantics skylarkSemantics,
         EventHandler eventHandler)
         throws CommandLineExpansionException {
       final List<Object> mutatedValues;
@@ -282,7 +282,7 @@
         List<Object> arguments,
         int argi,
         ImmutableList.Builder<String> builder,
-        SkylarkSemanticsOptions skylarkSemantics,
+        SkylarkSemantics skylarkSemantics,
         EventHandler eventHandler)
         throws CommandLineExpansionException {
       Object object = arguments.get(argi++);
@@ -348,11 +348,11 @@
   }
 
   static class Builder {
-    private final SkylarkSemanticsOptions skylarkSemantics;
+    private final SkylarkSemantics skylarkSemantics;
     private final ImmutableList.Builder<Object> arguments = ImmutableList.builder();
     private final EventHandler eventHandler;
 
-    public Builder(SkylarkSemanticsOptions skylarkSemantics, EventHandler eventHandler) {
+    public Builder(SkylarkSemantics skylarkSemantics, EventHandler eventHandler) {
       this.skylarkSemantics = skylarkSemantics;
       this.eventHandler = eventHandler;
     }
@@ -430,7 +430,7 @@
       BaseFunction mapFn,
       Object arg,
       Location location,
-      SkylarkSemanticsOptions skylarkSemantics,
+      SkylarkSemantics skylarkSemantics,
       EventHandler eventHandler)
       throws CommandLineExpansionException {
     ImmutableList<Object> args = ImmutableList.of(arg);
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 fc82668..e242d46 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
@@ -68,6 +68,7 @@
 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;
@@ -181,7 +182,7 @@
   private FragmentCollection fragments;
   private FragmentCollection hostFragments;
   private AspectDescriptor aspectDescriptor;
-  private final SkylarkSemanticsOptions skylarkSemantics;
+  private final SkylarkSemantics skylarkSemantics;
 
   private SkylarkDict<String, String> makeVariables;
   private SkylarkRuleAttributesCollection attributesCollection;
@@ -198,17 +199,19 @@
    *        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)
       throws EvalException, InterruptedException {
-    this.actionFactory = new SkylarkActionFactory(this, skylarkSemantics, ruleContext);
+    this.actionFactory = new SkylarkActionFactory(
+        this, skylarkSemantics.toSkylarkSemantics(), 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;
+    this.skylarkSemantics = skylarkSemantics.toSkylarkSemantics();
 
     if (aspectDescriptor == null) {
       this.isForAspect = false;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleImplementationFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleImplementationFunctions.java
index 81e0ea5..6d1e738 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleImplementationFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleImplementationFunctions.java
@@ -41,7 +41,7 @@
 import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
 import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
 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.SkylarkSignatureProcessor;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.syntax.Type.ConversionException;
@@ -268,9 +268,9 @@
       };
 
   static void checkDeprecated(
-      String newApi, String oldApi, Location loc, SkylarkSemanticsOptions semantics)
+      String newApi, String oldApi, Location loc, SkylarkSemantics semantics)
       throws EvalException {
-    if (semantics.incompatibleNewActionsApi) {
+    if (semantics.incompatibleNewActionsApi()) {
       throw new EvalException(
           loc,
           "Use " + newApi + " instead of " + oldApi + ". \n"
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/AbstractComprehension.java b/src/main/java/com/google/devtools/build/lib/syntax/AbstractComprehension.java
index 9c0b495..7bdac4d 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/AbstractComprehension.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/AbstractComprehension.java
@@ -279,7 +279,7 @@
     evalStep(env, collector, 0);
     Object result = collector.getResult(env);
 
-    if (!env.getSemantics().incompatibleComprehensionVariablesDoNotLeak) {
+    if (!env.getSemantics().incompatibleComprehensionVariablesDoNotLeak()) {
       return result;
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java
index 5c493ff..cef1d1d 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java
@@ -129,7 +129,8 @@
             throws EvalException {
           Order order;
           try {
-            order = Order.parse(orderString, env.getSemantics().incompatibleDisallowSetConstructor);
+            order = Order.parse(
+                orderString, env.getSemantics().incompatibleDisallowSetConstructor());
           } catch (IllegalArgumentException ex) {
             throw new EvalException(loc, ex);
           }
@@ -204,7 +205,7 @@
       new BuiltinFunction("set") {
         public SkylarkNestedSet invoke(Object items, String order, Location loc, Environment env)
             throws EvalException {
-          if (env.getSemantics().incompatibleDisallowSetConstructor) {
+          if (env.getSemantics().incompatibleDisallowSetConstructor()) {
             throw new EvalException(
                 loc,
                 "The `set` constructor for depsets is deprecated and will be removed. Please use "
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java
index bd416a7..920ef9a5 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java
@@ -85,7 +85,7 @@
   /** Implements the "in" operator. */
   private static boolean in(Object lval, Object rval, Environment env, Location location)
       throws EvalException {
-    if (env.getSemantics().incompatibleDepsetIsNotIterable && rval instanceof SkylarkNestedSet) {
+    if (env.getSemantics().incompatibleDepsetIsNotIterable() && rval instanceof SkylarkNestedSet) {
       throw new EvalException(
           location,
           "argument of type '"
@@ -270,7 +270,7 @@
       throws EvalException {
     // int + int
     if (lval instanceof Integer && rval instanceof Integer) {
-      if (env.getSemantics().incompatibleCheckedArithmetic) {
+      if (env.getSemantics().incompatibleCheckedArithmetic()) {
         return Math.addExact((Integer) lval, (Integer) rval);
       } else {
         return ((Integer) lval).intValue() + ((Integer) rval).intValue();
@@ -293,7 +293,7 @@
     }
 
     if ((lval instanceof MutableList) && (rval instanceof MutableList)) {
-      if (isAugmented && env.getSemantics().incompatibleListPlusEqualsInplace) {
+      if (isAugmented && env.getSemantics().incompatibleListPlusEqualsInplace()) {
         @SuppressWarnings("unchecked")
         MutableList<Object> list = (MutableList) lval;
         list.addAll((MutableList<?>) rval, location, env.mutability());
@@ -304,7 +304,7 @@
     }
 
     if (lval instanceof SkylarkDict && rval instanceof SkylarkDict) {
-      if (env.getSemantics().incompatibleDisallowDictPlus) {
+      if (env.getSemantics().incompatibleDisallowDictPlus()) {
         throw new EvalException(
             location,
             "The `+` operator for dicts is deprecated and no longer supported. Please use the "
@@ -344,7 +344,7 @@
   private static Object minus(Object lval, Object rval, Environment env, Location location)
       throws EvalException {
     if (lval instanceof Integer && rval instanceof Integer) {
-      if (env.getSemantics().incompatibleCheckedArithmetic) {
+      if (env.getSemantics().incompatibleCheckedArithmetic()) {
         return Math.subtractExact((Integer) lval, (Integer) rval);
       } else {
         return ((Integer) lval).intValue() - ((Integer) rval).intValue();
@@ -369,7 +369,7 @@
 
     if (number != null) {
       if (otherFactor instanceof Integer) {
-        if (env.getSemantics().incompatibleCheckedArithmetic) {
+        if (env.getSemantics().incompatibleCheckedArithmetic()) {
           return Math.multiplyExact(number, (Integer) otherFactor);
         } else {
           return number * ((Integer) otherFactor);
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/DictionaryLiteral.java b/src/main/java/com/google/devtools/build/lib/syntax/DictionaryLiteral.java
index 2cecb11..815c7bd 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/DictionaryLiteral.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/DictionaryLiteral.java
@@ -73,7 +73,7 @@
     for (DictionaryEntryLiteral entry : entries) {
       Object key = entry.key.eval(env);
       Object val = entry.value.eval(env);
-      if (env.getSemantics().incompatibleDictLiteralHasNoDuplicates && dict.containsKey(key)) {
+      if (env.getSemantics().incompatibleDictLiteralHasNoDuplicates() && dict.containsKey(key)) {
         throw new EvalException(
             loc, "Duplicated key " + Printer.repr(key) + " when creating dictionary");
       }
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 8abf942..967f4b5 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
@@ -28,7 +28,6 @@
 import com.google.devtools.build.lib.util.Pair;
 import com.google.devtools.build.lib.util.Preconditions;
 import com.google.devtools.build.lib.util.SpellChecker;
-import com.google.devtools.common.options.Options;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -421,7 +420,7 @@
   /**
    * The semantics options that affect how Skylark code is evaluated.
    */
-  private final SkylarkSemanticsOptions semantics;
+  private final SkylarkSemantics semantics;
 
   /**
    * An EventHandler for errors and warnings. This is not used in the BUILD language,
@@ -593,7 +592,7 @@
   private Environment(
       Frame globalFrame,
       Frame dynamicFrame,
-      SkylarkSemanticsOptions semantics,
+      SkylarkSemantics semantics,
       EventHandler eventHandler,
       Map<String, Extension> importedExtensions,
       @Nullable String fileContentHashCode,
@@ -619,7 +618,7 @@
     private final Mutability mutability;
     private Phase phase = Phase.ANALYSIS;
     @Nullable private Frame parent;
-    @Nullable private SkylarkSemanticsOptions semantics;
+    @Nullable private SkylarkSemantics semantics;
     @Nullable private EventHandler eventHandler;
     @Nullable private Map<String, Extension> importedExtensions;
     @Nullable private String fileContentHashCode;
@@ -651,7 +650,13 @@
       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;
     }
@@ -685,7 +690,7 @@
       Frame globalFrame = new Frame(mutability, parent);
       Frame dynamicFrame = new Frame(mutability, null);
       if (semantics == null) {
-        semantics = Options.getDefaults(SkylarkSemanticsOptions.class);
+        semantics = SkylarkSemantics.DEFAULT_SEMANTICS;
       }
       if (importedExtensions == null) {
         importedExtensions = ImmutableMap.of();
@@ -864,7 +869,7 @@
     return knownGlobalVariables != null && knownGlobalVariables.contains(varname);
   }
 
-  public SkylarkSemanticsOptions getSemantics() {
+  public SkylarkSemantics getSemantics() {
     return semantics;
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
index 6fd1f28..e0fdbff 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
@@ -98,7 +98,7 @@
     }
 
     FunctionSignature sig = node.getSignature().getSignature();
-    if (env.getSemantics().incompatibleDisallowKeywordOnlyArgs
+    if (env.getSemantics().incompatibleDisallowKeywordOnlyArgs()
         && sig.getShape().getMandatoryNamedOnly() > 0) {
       throw new EvalException(
           node.getLocation(),
@@ -129,7 +129,7 @@
   }
 
   void execLoad(LoadStatement node) throws EvalException, InterruptedException {
-    if (env.getSemantics().incompatibleLoadArgumentIsLabel) {
+    if (env.getSemantics().incompatibleLoadArgumentIsLabel()) {
       String s = node.getImport().getValue();
       if (!s.startsWith("//") && !s.startsWith(":") && !s.startsWith("@")) {
         throw new EvalException(
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
index 0e8a49f..8dfe097 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
@@ -334,7 +334,7 @@
 
   private static Collection<?> nestedSetToCollection(
       SkylarkNestedSet set, Location loc, @Nullable Environment env) throws EvalException {
-    if (env != null && env.getSemantics().incompatibleDepsetIsNotIterable) {
+    if (env != null && env.getSemantics().incompatibleDepsetIsNotIterable()) {
       throw new EvalException(
           loc,
           "type 'depset' is not iterable. Use the `to_list()` method to get a list. Use "
@@ -403,7 +403,7 @@
 
   private static ImmutableList<String> split(String value, Location loc, @Nullable Environment env)
       throws EvalException {
-    if (env != null && env.getSemantics().incompatibleStringIsNotIterable) {
+    if (env != null && env.getSemantics().incompatibleStringIsNotIterable()) {
       throw new EvalException(
           loc,
           "type 'string' is not iterable. You may still use `len` and string indexing. Use "
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index 162cd2b..ffe7026 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -1616,7 +1616,8 @@
   private static final BuiltinFunction len =
       new BuiltinFunction("len") {
         public Integer invoke(Object x, Location loc, Environment env) throws EvalException {
-          if (env.getSemantics().incompatibleDepsetIsNotIterable && x instanceof SkylarkNestedSet) {
+          if (env.getSemantics().incompatibleDepsetIsNotIterable()
+              && x instanceof SkylarkNestedSet) {
             throw new EvalException(
                 loc,
                 EvalUtils.getDataTypeName(x)
@@ -2154,7 +2155,7 @@
           // As part of the integration test "skylark_flag_test.sh", if the
           // "--internal_skylark_flag_test_canary" flag is enabled, append an extra marker string to
           // the output.
-          if (env.getSemantics().internalSkylarkFlagTestCanary) {
+          if (env.getSemantics().internalSkylarkFlagTestCanary()) {
             msg += "<== skylark flag test ==>";
           }
           env.handleEvent(Event.debug(loc, msg));
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
index 1c902a6..69d929e 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
@@ -77,7 +77,7 @@
    * @return new BasePrinter
    */
   static BasePrinter getPrinter(Environment env, Appendable buffer) {
-    if (env.getSemantics().incompatibleDescriptiveStringRepresentations) {
+    if (env.getSemantics().incompatibleDescriptiveStringRepresentations()) {
       return new BasePrinter(buffer);
     } else {
       return new LegacyPrinter(buffer);
@@ -91,7 +91,7 @@
    * @return new BasePrinter
    */
   static BasePrinter getPrinter(Environment env) {
-    if (env.getSemantics().incompatibleDescriptiveStringRepresentations) {
+    if (env.getSemantics().incompatibleDescriptiveStringRepresentations()) {
       return new BasePrinter();
     } else {
       return new LegacyPrinter();
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/UnaryOperatorExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/UnaryOperatorExpression.java
index 6ca614b..f676434 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/UnaryOperatorExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/UnaryOperatorExpression.java
@@ -74,7 +74,7 @@
               String.format(
                   "unsupported operand type for -: '%s'", EvalUtils.getDataTypeName(value)));
         }
-        if (env.getSemantics().incompatibleCheckedArithmetic) {
+        if (env.getSemantics().incompatibleCheckedArithmetic()) {
           try {
             return Math.negateExact((Integer) value);
           } catch (ArithmeticException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java b/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java
index 95a1c84..07e3e3b 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java
@@ -56,7 +56,7 @@
     }
   }
 
-  private final SkylarkSemanticsOptions semantics;
+  private final SkylarkSemantics semantics;
   private Block block;
   private int loopCount;
 
@@ -137,7 +137,7 @@
 
   @Override
   public void visit(AbstractComprehension node) {
-    if (semantics.incompatibleComprehensionVariablesDoNotLeak) {
+    if (semantics.incompatibleComprehensionVariablesDoNotLeak()) {
       openBlock();
       super.visit(node);
       closeBlock();
@@ -165,7 +165,7 @@
 
   @Override
   public void visit(IfStatement node) {
-    if (semantics.incompatibleDisallowToplevelIfStatement && isTopLevel()) {
+    if (semantics.incompatibleDisallowToplevelIfStatement() && isTopLevel()) {
       throw new ValidationException(
           node.getLocation(),
           "if statements are not allowed at the top level. You may move it inside a function "
@@ -257,7 +257,7 @@
   /** Validates the AST and runs static checks. */
   private void validateAst(List<Statement> statements) {
     // Check that load() statements are on top.
-    if (semantics.incompatibleBzlDisallowLoadAfterStatement) {
+    if (semantics.incompatibleBzlDisallowLoadAfterStatement()) {
       checkLoadAfterStatement(statements);
     }