You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Ability to provide type hints to non-identifier keys #871
Problem: It's not possible to provide type-hints for with-hyphen and $startsWithDolalrSign
CEL can get type information well if we can express an object as protobuf, or use StructType. However, there are times when we have objects that have non-identifier keys.
Right now, it's not possible to provide typesafety for non-identifier keys.
It would be amazing if we could.
Alternatives considered
To solve this for ourselves, we considered to hacks:
Use aliases: walk the CEL tree, and rename all non-identifer keys to some known identifer-style key.
Run our own compile step validation: walk the cel tree, and do the type checking ourselves.
Right now we are going with 2., but if there was some built-in way to specify types for keys from index access, it would be amazing.
More generally, we considered adding first-party support for JsonSchema and Open API schema. That would address this use case. I'll keep this open until we add that in.
Activity
[-]Ability[/-][+]Ability to provide type hints to non-identifier keys[/+]l46kok commentedon Nov 21, 2025
As an alternative: you could toggle the following option to allow backticks as an escape mechanism to allow field accesses outside normal identifiers for structs/protobufs: https://github.com/google/cel-java/blob/main/common/src/main/java/dev/cel/common/CelOptions.java#L272
Though at the moment, "$" isn't supported, but this is something we could add:
https://github.com/google/cel-java/blob/d7ad94d02c982fd465fcf472802a5be87766ff18/parser/src/main/java/dev/cel/parser/gen/CEL.g4#L207
More generally, we considered adding first-party support for JsonSchema and Open API schema. That would address this use case. I'll keep this open until we add that in.