MCPcopy Create free account
hub / github.com/GraphLite-AI/GraphLite / validate_expression

Function validate_expression

graphlite/src/ast/validator.rs:1107–1215  ·  view source on GitHub ↗

Validate a single expression

(
    expr: &Expression,
    ctx: &mut ValidationContext,
    errors: &mut Vec<ValidationError>,
)

Source from the content-addressed store, hash-verified

1105
1106/// Validate a single expression
1107fn 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 }

Calls 13

validate_unary_operationFunction · 0.85
validate_function_callFunction · 0.85
validate_property_accessFunction · 0.85
validate_variable_usageFunction · 0.85
validate_literalFunction · 0.85
validate_case_expressionFunction · 0.85
validate_cast_expressionFunction · 0.85
validate_subqueryFunction · 0.85
validate_path_patternFunction · 0.85
cloneMethod · 0.80

Tested by

no test coverage detected