Validate a single expression
(
expr: &Expression,
ctx: &mut ValidationContext,
errors: &mut Vec<ValidationError>,
)
| 1105 | |
| 1106 | /// Validate a single expression |
| 1107 | fn validate_expression( |
| 1108 | expr: &Expression, |
| 1109 | ctx: &mut ValidationContext, |
| 1110 | errors: &mut Vec<ValidationError>, |
| 1111 | ) { |
| 1112 | match expr { |
| 1113 | Expression::Binary(binary) => { |
| 1114 | validate_expression(&binary.left, ctx, errors); |
| 1115 | validate_expression(&binary.right, ctx, errors); |
| 1116 | validate_binary_operation(&binary.operator, &binary.left, &binary.right, ctx, errors); |
| 1117 | } |
| 1118 | Expression::Unary(unary) => { |
| 1119 | validate_expression(&unary.expression, ctx, errors); |
| 1120 | validate_unary_operation(&unary.operator, &unary.expression, ctx, errors); |
| 1121 | } |
| 1122 | Expression::FunctionCall(func_call) => { |
| 1123 | validate_function_call(func_call, ctx, errors); |
| 1124 | } |
| 1125 | Expression::PropertyAccess(prop_access) => { |
| 1126 | validate_property_access(prop_access, ctx, errors); |
| 1127 | } |
| 1128 | Expression::Variable(variable) => { |
| 1129 | validate_variable_usage(variable, ctx, errors); |
| 1130 | } |
| 1131 | Expression::Literal(literal) => { |
| 1132 | validate_literal(literal, errors); |
| 1133 | } |
| 1134 | Expression::Case(case_expr) => { |
| 1135 | validate_case_expression(case_expr, ctx, errors); |
| 1136 | } |
| 1137 | Expression::PathConstructor(path_constructor) => { |
| 1138 | validate_path_constructor(path_constructor, ctx, errors); |
| 1139 | } |
| 1140 | Expression::Cast(cast_expr) => { |
| 1141 | validate_cast_expression(cast_expr, ctx, errors); |
| 1142 | } |
| 1143 | Expression::Subquery(subquery_expr) => { |
| 1144 | // Validate the subquery recursively |
| 1145 | validate_subquery(&subquery_expr.query, ctx, errors); |
| 1146 | } |
| 1147 | Expression::ExistsSubquery(subquery_expr) => { |
| 1148 | // Validate the EXISTS subquery recursively |
| 1149 | validate_subquery(&subquery_expr.query, ctx, errors); |
| 1150 | } |
| 1151 | Expression::NotExistsSubquery(subquery_expr) => { |
| 1152 | // Validate the NOT EXISTS subquery recursively |
| 1153 | validate_subquery(&subquery_expr.query, ctx, errors); |
| 1154 | } |
| 1155 | Expression::InSubquery(subquery_expr) => { |
| 1156 | // Validate the left expression and the subquery |
| 1157 | validate_expression(&subquery_expr.expression, ctx, errors); |
| 1158 | validate_subquery(&subquery_expr.query, ctx, errors); |
| 1159 | } |
| 1160 | Expression::NotInSubquery(subquery_expr) => { |
| 1161 | // Validate the left expression and the subquery |
| 1162 | validate_expression(&subquery_expr.expression, ctx, errors); |
| 1163 | validate_subquery(&subquery_expr.query, ctx, errors); |
| 1164 | } |
no test coverage detected