MCPcopy Create free account
hub / github.com/colbymchenry/codegraph / synthesize_lombok_members

Method synthesize_lombok_members

codegraph-kernel/src/java.rs:1357–1547  ·  view source on GitHub ↗
(&mut self, class_node: Node<'t>, class_row: u32)

Source from the content-addressed store, hash-verified

1355 }
1356
1357 fn synthesize_lombok_members(&mut self, class_node: Node<'t>, class_row: u32) {
1358 let class_anns = self.lombok_annotation_names(class_node);
1359 let class_getter = class_anns.contains("Getter");
1360 let class_setter = class_anns.contains("Setter");
1361 let is_data = class_anns.contains("Data");
1362 let is_value = class_anns.contains("Value");
1363 let has_builder = class_anns.contains("Builder") || class_anns.contains("SuperBuilder");
1364 let has_to_string = is_data || is_value || class_anns.contains("ToString");
1365 let has_equals = is_data || is_value || class_anns.contains("EqualsAndHashCode");
1366 let log_ann = class_anns.iter().find(|a| is_lombok_log_annotation(a)).cloned();
1367
1368 let Some(body) = class_node.child_by_field_name("body") else { return };
1369 let fields: Vec<Node> = (0..body.named_child_count())
1370 .filter_map(|i| body.named_child(i))
1371 .filter(|c| c.kind() == "field_declaration")
1372 .collect();
1373
1374 let class_has_lombok = class_getter
1375 || class_setter
1376 || is_data
1377 || is_value
1378 || has_builder
1379 || has_to_string
1380 || has_equals
1381 || log_ann.is_some();
1382 if !class_has_lombok && !fields.iter().any(|f| !self.lombok_annotation_names(*f).is_empty()) {
1383 return;
1384 }
1385
1386 // Members the source already declares (exact `classQN::name` matches).
1387 let class_qn = self.nodes_meta[class_row as usize].qualified_name.clone();
1388 let class_name = self.nodes_meta[class_row as usize].name.clone();
1389 let mut taken_methods: HashSet<String> = HashSet::new();
1390 let mut taken_fields: HashSet<String> = HashSet::new();
1391 for m in &self.nodes_meta {
1392 if m.qualified_name == format!("{class_qn}::{}", m.name) {
1393 match m.kind {
1394 "method" | "function" => {
1395 taken_methods.insert(m.name.clone());
1396 }
1397 "field" | "variable" | "constant" | "property" => {
1398 taken_fields.insert(m.name.clone());
1399 }
1400 _ => {}
1401 }
1402 }
1403 }
1404
1405 let class_name_node = class_node.child_by_field_name("name").unwrap_or(class_node);
1406
1407 macro_rules! emit_method {
1408 ($name:expr, $anchor:expr, $sig:expr, $from:expr, $is_static:expr, $ret:expr) => {{
1409 let name: String = $name;
1410 if !name.is_empty() && !taken_methods.contains(&name) {
1411 taken_methods.insert(name.clone());
1412 self.create_node(
1413 "method",
1414 &name,

Callers 1

extract_classMethod · 0.80

Calls 9

is_lombok_log_annotationFunction · 0.85
word_reFunction · 0.85
is_prefix_reFunction · 0.85
modifiers_childMethod · 0.80
normalize_java_typeMethod · 0.80
collectMethod · 0.45
textMethod · 0.45
create_nodeMethod · 0.45

Tested by

no test coverage detected