codetether_rlm/oracle/tree_sitter_oracle/
verify.rs1use crate::oracle::QueryType;
2
3use super::{TreeSitterOracle, TreeSitterVerification};
4
5impl TreeSitterOracle {
6 pub fn verify(&mut self, answer: &str, query: &str) -> TreeSitterVerification {
8 if Self::classify_query(query) != QueryType::Structural {
9 return TreeSitterVerification::CannotVerify {
10 reason: "Not a structural query".to_string(),
11 };
12 }
13 self.verify_structural(answer, query)
14 }
15
16 fn verify_structural(&mut self, answer: &str, query: &str) -> TreeSitterVerification {
17 let lower = query.to_lowercase();
18 if lower.contains("function") {
19 self.verify_functions(answer)
20 } else if lower.contains("struct") {
21 self.verify_structs(answer)
22 } else if lower.contains("enum") {
23 unimplemented_verification("Enum")
24 } else if lower.contains("impl") {
25 unimplemented_verification("Impl")
26 } else {
27 TreeSitterVerification::CannotVerify {
28 reason: "Unknown structural query type".to_string(),
29 }
30 }
31 }
32}
33
34fn unimplemented_verification(kind: &str) -> TreeSitterVerification {
35 TreeSitterVerification::CannotVerify {
36 reason: format!("{kind} verification not yet implemented"),
37 }
38}