@@ -19,7 +19,7 @@ use super::FromJsonError;
19
19
use crate :: ast:: expr_allows_errors:: AstExprErrorKind ;
20
20
#[ cfg( feature = "tolerant-ast" ) ]
21
21
use crate :: ast:: Infallible ;
22
- use crate :: ast:: { self , BoundedDisplay , EntityUID } ;
22
+ use crate :: ast:: { self , BoundedDisplay , EntityUID , Name } ;
23
23
use crate :: entities:: json:: {
24
24
err:: EscapeKind , err:: JsonDeserializationError , err:: JsonDeserializationErrorContext ,
25
25
CedarValueJson , FnAndArgs ,
@@ -31,6 +31,7 @@ use crate::parser::cst_to_ast;
31
31
use crate :: parser:: err:: ParseErrors ;
32
32
use crate :: parser:: Node ;
33
33
use crate :: parser:: { cst, Loc } ;
34
+ use crate :: FromNormalizedStr ;
34
35
use itertools:: Itertools ;
35
36
use serde:: { de:: Visitor , Deserialize , Serialize } ;
36
37
use serde_with:: serde_as;
@@ -1034,22 +1035,23 @@ impl Expr {
1034
1035
. into_iter ( )
1035
1036
. next ( )
1036
1037
. expect ( "already checked that len was 1" ) ;
1037
- let fn_name: ast :: Name = fn_name . parse ( ) . map_err ( |errs| {
1038
+ let fn_name = Name :: from_normalized_str ( & fn_name ) . map_err ( |errs| {
1038
1039
JsonDeserializationError :: parse_escape (
1039
1040
EscapeKind :: Extension ,
1040
1041
fn_name,
1041
1042
errs,
1042
1043
)
1043
1044
} ) ?;
1044
- if !cst_to_ast:: is_known_extension_func_name ( & fn_name) {
1045
- return Err ( FromJsonError :: UnknownExtensionFunction ( fn_name) ) ;
1045
+ if cst_to_ast:: is_known_extension_func_name ( & fn_name) {
1046
+ Ok ( ast:: Expr :: call_extension_fn (
1047
+ fn_name,
1048
+ args. into_iter ( )
1049
+ . map ( |arg| arg. try_into_ast ( id) )
1050
+ . collect :: < Result < _ , _ > > ( ) ?,
1051
+ ) )
1052
+ } else {
1053
+ Err ( FromJsonError :: UnknownExtensionFunction ( fn_name) )
1046
1054
}
1047
- Ok ( ast:: Expr :: call_extension_fn (
1048
- fn_name,
1049
- args. into_iter ( )
1050
- . map ( |arg| arg. try_into_ast ( id) )
1051
- . collect :: < Result < _ , _ > > ( ) ?,
1052
- ) )
1053
1055
}
1054
1056
_ => Err ( FromJsonError :: MultipleOperators {
1055
1057
ops : call. into_keys ( ) . collect ( ) ,
0 commit comments