3737import dev .cel .common .CelFunctionDecl ;
3838import dev .cel .common .CelOptions ;
3939import dev .cel .common .CelOverloadDecl ;
40+ import dev .cel .common .CelProtoDeclConverter ;
4041import dev .cel .common .CelVarDecl ;
4142import dev .cel .common .internal .EnvVisitable ;
4243import dev .cel .common .internal .EnvVisitor ;
4344import dev .cel .common .types .CelKind ;
44- import dev .cel .common .types .CelProtoTypes ;
4545import dev .cel .common .types .CelType ;
4646import dev .cel .compiler .CelCompiler ;
4747import dev .cel .extensions .CelExtensionLibrary ;
@@ -262,13 +262,11 @@ public void visitDecl(String name, List<Decl> decls) {
262262 for (Overload overload : function .getOverloadsList ()) {
263263 inventory .add (
264264 NamedOverload .create (
265- decl .getName (), CelOverloadDecl .overloadToCelOverload (overload )));
265+ decl .getName (),
266+ CelProtoDeclConverter .overloadToCelOverload (overload )));
266267 }
267268 } else if (decl .hasIdent ()) {
268- inventory .add (
269- CelVarDecl .newVarDeclaration (
270- decl .getName (),
271- CelProtoTypes .typeToCelType (decl .getIdent ().getType ())));
269+ inventory .add (CelProtoDeclConverter .declToCelVarDecl (decl ));
272270 }
273271 }
274272 }
@@ -299,7 +297,7 @@ private void addExtensionConfigsAndRemoveFromInventory(
299297
300298 featureSets .sort (
301299 Comparator .comparing (NamedFeatureSet ::name )
302- .thenComparing (nfs -> nfs .featureSet ().version ())
300+ .thenComparingInt (nfs -> nfs .featureSet ().version ())
303301 .reversed ());
304302
305303 Set <String > includedExtensions = new HashSet <>();
@@ -348,8 +346,7 @@ private void addStandardLibrarySubsetAndRemoveFromInventory(
348346 CelEnvironment .Builder envBuilder , Set <Object > inventory ) {
349347 // Claim standard identifiers for the standard library
350348 for (StandardIdentifier value : StandardIdentifier .values ()) {
351- inventory .remove (
352- CelVarDecl .newVarDeclaration (value .identDecl ().name (), value .identDecl ().type ()));
349+ inventory .remove (value .identDecl ());
353350 }
354351
355352 Set <String > excludedFunctions = new HashSet <>();
@@ -431,13 +428,13 @@ private ImmutableSet<FunctionSelector> buildFunctionSelectors(
431428 private void addCustomDecls (CelEnvironment .Builder envBuilder , Set <Object > inventory ) {
432429 // Group "orphaned" function overloads and vars by their names
433430 ListMultimap <String , CelOverloadDecl > extraOverloads = ArrayListMultimap .create ();
434- Map <String , CelType > extraVars = new HashMap <>();
431+ Map <String , CelVarDecl > extraVars = new HashMap <>();
435432 for (Object item : inventory ) {
436433 if (item instanceof NamedOverload ) {
437434 extraOverloads .put (
438435 ((NamedOverload ) item ).functionName (), ((NamedOverload ) item ).overload ());
439436 } else if (item instanceof CelVarDecl ) {
440- extraVars .put (((CelVarDecl ) item ).name (), (( CelVarDecl ) item ). type () );
437+ extraVars .put (((CelVarDecl ) item ).name (), (CelVarDecl ) item );
441438 }
442439 }
443440
@@ -457,9 +454,15 @@ private void addCustomDecls(CelEnvironment.Builder envBuilder, Set<Object> inven
457454
458455 if (!extraVars .isEmpty ()) {
459456 ImmutableSet .Builder <CelEnvironment .VariableDecl > varDeclBuilder = ImmutableSet .builder ();
460- for (String ident : extraVars .keySet ()) {
461- varDeclBuilder .add (
462- CelEnvironment .VariableDecl .create (ident , toCelEnvTypeDecl (extraVars .get (ident ))));
457+ for (CelVarDecl varDecl : extraVars .values ()) {
458+ CelEnvironment .VariableDecl .Builder builder =
459+ CelEnvironment .VariableDecl .newBuilder ()
460+ .setName (varDecl .name ())
461+ .setType (toCelEnvTypeDecl (varDecl .type ()));
462+ if (!varDecl .doc ().isEmpty ()) {
463+ builder .setDescription (varDecl .doc ());
464+ }
465+ varDeclBuilder .add (builder .build ());
463466 }
464467 envBuilder .setVariables (varDeclBuilder .build ());
465468 }
0 commit comments