Skip to content

Commit 0845bc5

Browse files
l46kokcopybara-github
authored andcommitted
Remove StringConversion, StringConcatenation, ListConcatenation CelOptions in favor of subsetting
PiperOrigin-RevId: 868333529
1 parent daf9969 commit 0845bc5

File tree

6 files changed

+1
-130
lines changed

6 files changed

+1
-130
lines changed

bundle/src/test/java/dev/cel/bundle/CelImplTest.java

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,59 +1991,6 @@ public void program_nativeTypeUnknownsEnabled_asCallArguments() throws Exception
19911991
assertThat(result.attributes()).isEmpty();
19921992
}
19931993

1994-
@Test
1995-
@TestParameters("{expression: 'string(123)'}")
1996-
@TestParameters("{expression: 'string(123u)'}")
1997-
@TestParameters("{expression: 'string(1.5)'}")
1998-
@TestParameters("{expression: 'string(\"foo\")'}")
1999-
@TestParameters("{expression: 'string(b\"foo\")'}")
2000-
@TestParameters("{expression: 'string(timestamp(100))'}")
2001-
@TestParameters("{expression: 'string(duration(\"1h\"))'}")
2002-
public void program_stringConversionDisabled_throws(String expression) throws Exception {
2003-
Cel cel =
2004-
CelFactory.standardCelBuilder()
2005-
.setOptions(
2006-
CelOptions.current()
2007-
.enableTimestampEpoch(true)
2008-
.enableStringConversion(false)
2009-
.build())
2010-
.build();
2011-
CelAbstractSyntaxTree ast = cel.compile(expression).getAst();
2012-
2013-
CelEvaluationException e =
2014-
assertThrows(CelEvaluationException.class, () -> cel.createProgram(ast).eval());
2015-
assertThat(e).hasMessageThat().contains("No matching overload for function 'string'");
2016-
assertThat(e.getErrorCode()).isEqualTo(CelErrorCode.OVERLOAD_NOT_FOUND);
2017-
}
2018-
2019-
@Test
2020-
public void program_stringConcatenationDisabled_throws() throws Exception {
2021-
Cel cel =
2022-
CelFactory.standardCelBuilder()
2023-
.setOptions(CelOptions.current().enableStringConcatenation(false).build())
2024-
.build();
2025-
CelAbstractSyntaxTree ast = cel.compile("'foo' + 'bar'").getAst();
2026-
2027-
CelEvaluationException e =
2028-
assertThrows(CelEvaluationException.class, () -> cel.createProgram(ast).eval());
2029-
assertThat(e).hasMessageThat().contains("No matching overload for function '_+_'");
2030-
assertThat(e.getErrorCode()).isEqualTo(CelErrorCode.OVERLOAD_NOT_FOUND);
2031-
}
2032-
2033-
@Test
2034-
public void program_listConcatenationDisabled_throws() throws Exception {
2035-
Cel cel =
2036-
CelFactory.standardCelBuilder()
2037-
.setOptions(CelOptions.current().enableListConcatenation(false).build())
2038-
.build();
2039-
CelAbstractSyntaxTree ast = cel.compile("[1] + [2]").getAst();
2040-
2041-
CelEvaluationException e =
2042-
assertThrows(CelEvaluationException.class, () -> cel.createProgram(ast).eval());
2043-
assertThat(e).hasMessageThat().contains("No matching overload for function '_+_'");
2044-
assertThat(e.getErrorCode()).isEqualTo(CelErrorCode.OVERLOAD_NOT_FOUND);
2045-
}
2046-
20471994
@Test
20481995
public void program_comprehensionDisabled_throws() throws Exception {
20491996
Cel cel =

common/src/main/java/dev/cel/common/CelOptions.java

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,6 @@ public enum ProtoUnsetFieldOptions {
117117

118118
public abstract ProtoUnsetFieldOptions fromProtoUnsetFieldOption();
119119

120-
public abstract boolean enableStringConversion();
121-
122-
public abstract boolean enableStringConcatenation();
123-
124-
public abstract boolean enableListConcatenation();
125-
126120
public abstract boolean enableComprehension();
127121

128122
public abstract int maxRegexProgramSize();
@@ -169,9 +163,6 @@ public static Builder newBuilder() {
169163
.comprehensionMaxIterations(-1)
170164
.unwrapWellKnownTypesOnFunctionDispatch(true)
171165
.fromProtoUnsetFieldOption(ProtoUnsetFieldOptions.BIND_DEFAULT)
172-
.enableStringConversion(true)
173-
.enableStringConcatenation(true)
174-
.enableListConcatenation(true)
175166
.enableComprehension(true)
176167
.maxRegexProgramSize(-1);
177168
}
@@ -494,24 +485,6 @@ public abstract static class Builder {
494485
*/
495486
public abstract Builder fromProtoUnsetFieldOption(ProtoUnsetFieldOptions value);
496487

497-
/**
498-
* Enables string() overloads for the runtime. This option exists to maintain parity with
499-
* cel-cpp interpreter options.
500-
*/
501-
public abstract Builder enableStringConversion(boolean value);
502-
503-
/**
504-
* Enables string concatenation overload for the runtime. This option exists to maintain parity
505-
* with cel-cpp interpreter options.
506-
*/
507-
public abstract Builder enableStringConcatenation(boolean value);
508-
509-
/**
510-
* Enables list concatenation overload for the runtime. This option exists to maintain parity
511-
* with cel-cpp interpreter options.
512-
*/
513-
public abstract Builder enableListConcatenation(boolean value);
514-
515488
/**
516489
* Enables comprehension (macros) for the runtime. Setting false has the same effect with
517490
* assigning 0 for {@link #comprehensionMaxIterations()}. This option exists to maintain parity

runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -338,20 +338,6 @@ private static void assertAllowedCelOptions(CelOptions celOptions) {
338338

339339
// Disallowed options in favor of subsetting
340340
String subsettingError = "Subset the environment instead using setStandardFunctions method.";
341-
if (!celOptions.enableStringConcatenation()) {
342-
throw new IllegalArgumentException(
343-
prefix + "enableStringConcatenation cannot be disabled. " + subsettingError);
344-
}
345-
346-
if (!celOptions.enableStringConversion()) {
347-
throw new IllegalArgumentException(
348-
prefix + "enableStringConversion cannot be disabled. " + subsettingError);
349-
}
350-
351-
if (!celOptions.enableListConcatenation()) {
352-
throw new IllegalArgumentException(
353-
prefix + "enableListConcatenation cannot be disabled. " + subsettingError);
354-
}
355341

356342
if (!celOptions.enableTimestampEpoch()) {
357343
throw new IllegalArgumentException(

runtime/src/main/java/dev/cel/runtime/CelRuntimeLegacyImpl.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import dev.cel.common.types.CelTypes;
4646
import dev.cel.common.values.CelValueProvider;
4747
import dev.cel.common.values.ProtoMessageValueProvider;
48-
import dev.cel.runtime.standard.AddOperator.AddOverload;
4948
import dev.cel.runtime.standard.IntFunction.IntOverload;
5049
import dev.cel.runtime.standard.TimestampFunction.TimestampOverload;
5150
import java.util.Arrays;
@@ -381,16 +380,6 @@ private ImmutableSet<CelFunctionBinding> newStandardFunctionBindings(
381380
return options.enableTimestampEpoch();
382381
}
383382
break;
384-
case STRING:
385-
return options.enableStringConversion();
386-
case ADD:
387-
if (standardOverload.equals(AddOverload.ADD_STRING)) {
388-
return options.enableStringConcatenation();
389-
}
390-
if (standardOverload.equals(AddOverload.ADD_LIST)) {
391-
return options.enableListConcatenation();
392-
}
393-
break;
394383
default:
395384
if (!options.enableHeterogeneousNumericComparisons()) {
396385
return !CelStandardFunctions.isHeterogeneousComparison(

runtime/src/main/java/dev/cel/runtime/LiteRuntimeImpl.java

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -132,24 +132,6 @@ private static void assertAllowedCelOptions(CelOptions celOptions) {
132132
throw new IllegalArgumentException(
133133
prefix + "unwrapWellKnownTypesOnFunctionDispatch cannot be disabled.");
134134
}
135-
if (!celOptions.enableStringConcatenation()) {
136-
throw new IllegalArgumentException(
137-
prefix
138-
+ "enableStringConcatenation cannot be disabled. Subset the environment instead"
139-
+ " using setStandardFunctions method.");
140-
}
141-
if (!celOptions.enableStringConversion()) {
142-
throw new IllegalArgumentException(
143-
prefix
144-
+ "enableStringConversion cannot be disabled. Subset the environment instead using"
145-
+ " setStandardFunctions method.");
146-
}
147-
if (!celOptions.enableListConcatenation()) {
148-
throw new IllegalArgumentException(
149-
prefix
150-
+ "enableListConcatenation cannot be disabled. Subset the environment instead using"
151-
+ " setStandardFunctions method.");
152-
}
153135
}
154136

155137
@Override
@@ -201,10 +183,7 @@ public CelLiteRuntime build() {
201183
}
202184

203185
private Builder() {
204-
this.celOptions =
205-
CelOptions.current()
206-
.enableCelValue(true)
207-
.build();
186+
this.celOptions = CelOptions.current().enableCelValue(true).build();
208187
this.celValueProvider = (structType, fields) -> Optional.empty();
209188
this.customFunctionBindings = new HashMap<>();
210189
this.standardFunctionBuilder = ImmutableSet.builder();

runtime/src/test/java/dev/cel/runtime/CelLiteRuntimeAndroidTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -715,9 +715,6 @@ private enum CelOptionsTestCase {
715715
CEL_VALUE_DISABLED(newBaseTestOptions().enableCelValue(false).build()),
716716
UNSIGNED_LONG_DISABLED(newBaseTestOptions().enableUnsignedLongs(false).build()),
717717
UNWRAP_WKT_DISABLED(newBaseTestOptions().unwrapWellKnownTypesOnFunctionDispatch(false).build()),
718-
STRING_CONCAT_DISABLED(newBaseTestOptions().enableStringConcatenation(false).build()),
719-
STRING_CONVERSION_DISABLED(newBaseTestOptions().enableStringConversion(false).build()),
720-
LIST_CONCATENATION_DISABLED(newBaseTestOptions().enableListConcatenation(false).build()),
721718
;
722719

723720
private final CelOptions celOptions;

0 commit comments

Comments
 (0)