diff --git a/optimizer/src/main/java/dev/cel/optimizer/BUILD.bazel b/optimizer/src/main/java/dev/cel/optimizer/BUILD.bazel index 22dab14f4..31e410f6a 100644 --- a/optimizer/src/main/java/dev/cel/optimizer/BUILD.bazel +++ b/optimizer/src/main/java/dev/cel/optimizer/BUILD.bazel @@ -32,14 +32,12 @@ java_library( srcs = [ "CelOptimizer.java", "CelOptimizerBuilder.java", - "CelOptimizerOptions.java", ], tags = [ ], deps = [ ":ast_optimizer", ":optimization_exception", - "//:auto_value", "//common:cel_ast", "@maven//:com_google_errorprone_error_prone_annotations", ], diff --git a/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerFactory.java b/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerFactory.java index d82403825..1ebfd293e 100644 --- a/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerFactory.java +++ b/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerFactory.java @@ -25,48 +25,22 @@ /** Factory class for constructing an {@link CelOptimizer} instance. */ public final class CelOptimizerFactory { - private static final CelOptimizerOptions DEFAULT_OPTIMIZER_OPTIONS = - CelOptimizerOptions.newBuilder().build(); - /** Create a new builder for constructing a {@link CelOptimizer} instance. */ public static CelOptimizerBuilder standardCelOptimizerBuilder(Cel cel) { - return standardCelOptimizerBuilder(cel, DEFAULT_OPTIMIZER_OPTIONS); - } - - /** Create a new builder for constructing a {@link CelOptimizer} instance with custom options. */ - public static CelOptimizerBuilder standardCelOptimizerBuilder( - Cel cel, CelOptimizerOptions optimizerOptions) { - return CelOptimizerImpl.newBuilder(cel, optimizerOptions); + return CelOptimizerImpl.newBuilder(cel); } /** Create a new builder for constructing a {@link CelOptimizer} instance. */ public static CelOptimizerBuilder standardCelOptimizerBuilder( CelCompiler celCompiler, CelRuntime celRuntime) { - return standardCelOptimizerBuilder(celCompiler, celRuntime, DEFAULT_OPTIMIZER_OPTIONS); - } - - /** Create a new builder for constructing a {@link CelOptimizer} instance with custom options. */ - public static CelOptimizerBuilder standardCelOptimizerBuilder( - CelCompiler celCompiler, CelRuntime celRuntime, CelOptimizerOptions optimizerOptions) { - return standardCelOptimizerBuilder( - CelFactory.combine(celCompiler, celRuntime), optimizerOptions); + return standardCelOptimizerBuilder(CelFactory.combine(celCompiler, celRuntime)); } /** Create a new builder for constructing a {@link CelOptimizer} instance. */ public static CelOptimizerBuilder standardCelOptimizerBuilder( CelParser celParser, CelChecker celChecker, CelRuntime celRuntime) { return standardCelOptimizerBuilder( - celParser, celChecker, celRuntime, DEFAULT_OPTIMIZER_OPTIONS); - } - - /** Create a new builder for constructing a {@link CelOptimizer} instance with custom options. */ - public static CelOptimizerBuilder standardCelOptimizerBuilder( - CelParser celParser, - CelChecker celChecker, - CelRuntime celRuntime, - CelOptimizerOptions optimizerOptions) { - return standardCelOptimizerBuilder( - CelCompilerFactory.combine(celParser, celChecker), celRuntime, optimizerOptions); + CelCompilerFactory.combine(celParser, celChecker), celRuntime); } private CelOptimizerFactory() {} diff --git a/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerImpl.java b/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerImpl.java index 2911d3d4a..f5e30093a 100644 --- a/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerImpl.java +++ b/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerImpl.java @@ -32,13 +32,10 @@ final class CelOptimizerImpl implements CelOptimizer { private final Cel cel; private final ImmutableSet astOptimizers; - private final CelOptimizerOptions optimizerOptions; - CelOptimizerImpl( - Cel cel, ImmutableSet astOptimizers, CelOptimizerOptions optimizerOptions) { + CelOptimizerImpl(Cel cel, ImmutableSet astOptimizers) { this.cel = cel; this.astOptimizers = astOptimizers; - this.optimizerOptions = optimizerOptions; } @Override @@ -61,9 +58,7 @@ public CelAbstractSyntaxTree optimize(CelAbstractSyntaxTree ast) throws CelOptim .build(); } optimizedAst = celOptimizerEnv.check(result.optimizedAst()).getAst(); - if (optimizerOptions.enableAstValidation()) { - assertAstIdCorrectness(optimizedAst); - } + assertAstIdCorrectness(optimizedAst); } } catch (CelValidationException e) { throw new CelOptimizationException( @@ -130,23 +125,16 @@ private static void assertAstIdCorrectness(CelAbstractSyntaxTree ast) { /** Create a new builder for constructing a {@link CelOptimizer} instance. */ static CelOptimizerImpl.Builder newBuilder(Cel cel) { - return newBuilder(cel, CelOptimizerOptions.newBuilder().build()); - } - - /** Create a new builder for constructing a {@link CelOptimizer} instance with custom options. */ - static CelOptimizerImpl.Builder newBuilder(Cel cel, CelOptimizerOptions optimizerOptions) { - return new CelOptimizerImpl.Builder(cel, optimizerOptions); + return new CelOptimizerImpl.Builder(cel); } /** Builder class for {@link CelOptimizerImpl}. */ static final class Builder implements CelOptimizerBuilder { private final Cel cel; - private final CelOptimizerOptions optimizerOptions; private final ImmutableSet.Builder astOptimizers; - private Builder(Cel cel, CelOptimizerOptions optimizerOptions) { + private Builder(Cel cel) { this.cel = cel; - this.optimizerOptions = checkNotNull(optimizerOptions); this.astOptimizers = ImmutableSet.builder(); } @@ -165,7 +153,7 @@ public CelOptimizerBuilder addAstOptimizers(Iterable astOptimiz @Override public CelOptimizer build() { - return new CelOptimizerImpl(cel, astOptimizers.build(), optimizerOptions); + return new CelOptimizerImpl(cel, astOptimizers.build()); } } } diff --git a/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerOptions.java b/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerOptions.java deleted file mode 100644 index 292f54224..000000000 --- a/optimizer/src/main/java/dev/cel/optimizer/CelOptimizerOptions.java +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2026 Google LLC -// -// 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 -// -// https://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 dev.cel.optimizer; - -import com.google.auto.value.AutoValue; - -/** Options to configure how {@link CelOptimizer} behaves. */ -@AutoValue -public abstract class CelOptimizerOptions { - - /** - * Returns true if AST validation is enabled. When enabled, each optimizer pass verifies AST - * invariants (such as expression ID uniqueness and macro source consistency) after type-checking. - */ - public abstract boolean enableAstValidation(); - - /** Builder for configuring the {@link CelOptimizerOptions}. */ - @AutoValue.Builder - public abstract static class Builder { - - /** - * Enables or disables post-pass AST validation. When enabled, each optimizer pass verifies that - * expression IDs are unique and macro calls in the AST source are consistent with the - * expression nodes. - */ - public abstract Builder enableAstValidation(boolean value); - - public abstract CelOptimizerOptions build(); - - Builder() {} - } - - /** Returns a new options builder with recommended defaults pre-configured. */ - public static Builder newBuilder() { - return new AutoValue_CelOptimizerOptions.Builder().enableAstValidation(true); - } - - CelOptimizerOptions() {} -} diff --git a/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerFactoryTest.java b/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerFactoryTest.java index 146102995..41c7ecd74 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerFactoryTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerFactoryTest.java @@ -39,19 +39,6 @@ public void standardCelOptimizerBuilder_withParserCheckerAndRuntime() { assertThat(builder.build()).isNotNull(); } - @Test - public void standardCelOptimizerBuilder_withParserCheckerRuntimeAndOptions() { - CelOptimizerBuilder builder = - CelOptimizerFactory.standardCelOptimizerBuilder( - CelParserFactory.standardCelParserBuilder().build(), - CelCompilerFactory.standardCelCheckerBuilder().build(), - CelRuntimeFactory.standardCelRuntimeBuilder().build(), - CelOptimizerOptions.newBuilder().enableAstValidation(true).build()); - - assertThat(builder).isNotNull(); - assertThat(builder.build()).isNotNull(); - } - @Test public void standardCelOptimizerBuilder_withCompilerAndRuntime() { CelOptimizerBuilder builder = @@ -63,18 +50,6 @@ public void standardCelOptimizerBuilder_withCompilerAndRuntime() { assertThat(builder.build()).isNotNull(); } - @Test - public void standardCelOptimizerBuilder_withCompilerRuntimeAndOptions() { - CelOptimizerBuilder builder = - CelOptimizerFactory.standardCelOptimizerBuilder( - CelCompilerFactory.standardCelCompilerBuilder().build(), - CelRuntimeFactory.standardCelRuntimeBuilder().build(), - CelOptimizerOptions.newBuilder().enableAstValidation(true).build()); - - assertThat(builder).isNotNull(); - assertThat(builder.build()).isNotNull(); - } - @Test public void standardCelOptimizerBuilder_withCel() { CelOptimizerBuilder builder = @@ -83,15 +58,4 @@ public void standardCelOptimizerBuilder_withCel() { assertThat(builder).isNotNull(); assertThat(builder.build()).isNotNull(); } - - @Test - public void standardCelOptimizerBuilder_withCelAndOptions() { - CelOptimizerBuilder builder = - CelOptimizerFactory.standardCelOptimizerBuilder( - CelFactory.standardCelBuilder().build(), - CelOptimizerOptions.newBuilder().enableAstValidation(true).build()); - - assertThat(builder).isNotNull(); - assertThat(builder.build()).isNotNull(); - } } diff --git a/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerImplTest.java b/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerImplTest.java index 4373e7fe4..9e92814f2 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerImplTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/CelOptimizerImplTest.java @@ -144,8 +144,7 @@ public void optimizedAst_failsToTypeCheck_throwsException() { @Test public void optimize_duplicateExprId_throwsException() { CelOptimizer celOptimizer = - CelOptimizerImpl.newBuilder( - CEL, CelOptimizerOptions.newBuilder().enableAstValidation(true).build()) + CelOptimizerImpl.newBuilder(CEL) .addAstOptimizers( (navigableAst, cel) -> OptimizationResult.create( @@ -174,8 +173,7 @@ public void optimize_duplicateExprId_throwsException() { @Test public void optimize_macroCallRootIdNonZero_throwsException() { CelOptimizer celOptimizer = - CelOptimizerImpl.newBuilder( - CEL, CelOptimizerOptions.newBuilder().enableAstValidation(true).build()) + CelOptimizerImpl.newBuilder(CEL) .addAstOptimizers( (navigableAst, cel) -> OptimizationResult.create( @@ -206,8 +204,7 @@ public void optimize_macroCallRootIdNonZero_throwsException() { @Test public void optimize_macroCallKindMismatch_throwsException() { CelOptimizer celOptimizer = - CelOptimizerImpl.newBuilder( - CEL, CelOptimizerOptions.newBuilder().enableAstValidation(true).build()) + CelOptimizerImpl.newBuilder(CEL) .addAstOptimizers( (navigableAst, cel) -> OptimizationResult.create( @@ -242,8 +239,7 @@ public void optimize_macroCallComprehensionKindNotSetMismatch_throwsException() long compId = astWithComprehension.getExpr().id(); CelOptimizer celOptimizer = - CelOptimizerImpl.newBuilder( - CEL, CelOptimizerOptions.newBuilder().enableAstValidation(true).build()) + CelOptimizerImpl.newBuilder(CEL) .addAstOptimizers( (navigableAst, cel) -> OptimizationResult.create(