@@ -984,33 +984,33 @@ impl PythonArchEvalHooks {
984984 let mut contexts_to_add = HashMap :: new ( ) ;
985985 if relational {
986986 if let Some ( first_param) = parameters. args . get ( 0 ) {
987- contexts_to_add. insert ( "comodel_name" , ( first_param, first_param. range ( ) ) ) ;
987+ contexts_to_add. insert ( "comodel_name" , ( first_param, first_param. range ( ) , true ) ) ;
988988 }
989989 }
990990
991991 // Keyword Arguments for fields that we would like to keep in the context
992992 let context_arguments = [
993- "comodel_name" ,
994- "related" ,
995- "compute" ,
996- "delegate" ,
997- "required" ,
998- "default" ,
993+ ( "comodel_name" , true ) ,
994+ ( "related" , true ) ,
995+ ( "compute" , true ) ,
996+ ( "delegate" , false ) ,
997+ ( "required" , false ) ,
998+ ( "default" , false ) ,
999999 ] ;
10001000 contexts_to_add. extend (
10011001 context_arguments. into_iter ( )
1002- . filter_map ( |arg_name|
1002+ . filter_map ( |( arg_name, only_str ) |
10031003 PythonArchEvalHooks :: find_special_arguments ( & parameters, arg_name)
1004- . map ( |( field_name_expr, arg_range) | ( arg_name, ( field_name_expr, arg_range) ) )
1004+ . map ( |( field_name_expr, arg_range) | ( arg_name, ( field_name_expr, arg_range, only_str ) ) )
10051005 )
10061006 ) ;
10071007
1008- for ( arg_name, ( field_name_expr, arg_range) ) in contexts_to_add {
1008+ for ( arg_name, ( field_name_expr, arg_range, only_str ) ) in contexts_to_add {
10091009 let maybe_related_string = Evaluation :: expr_to_str ( session, field_name_expr, parent. clone ( ) , & parameters. range . start ( ) , false , & mut vec ! [ ] ) . 0 ;
10101010 if let Some ( related_string) = maybe_related_string {
10111011 context. insert ( S ! ( arg_name) , ContextValue :: STRING ( related_string. to_string ( ) ) ) ;
10121012 context. insert ( format ! ( "{arg_name}_arg_range" ) , ContextValue :: RANGE ( arg_range. clone ( ) ) ) ;
1013- } else {
1013+ } else if !only_str {
10141014 let maybe_boolean = Evaluation :: expr_to_bool ( session, field_name_expr, parent. clone ( ) , & parameters. range . start ( ) , false , & mut vec ! [ ] ) . 0 ;
10151015 if let Some ( boolean) = maybe_boolean {
10161016 context. insert ( S ! ( arg_name) , ContextValue :: BOOLEAN ( boolean) ) ;
0 commit comments