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

Method synthesize_lombok_members

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

Source from the content-addressed store, hash-verified

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

Tested by

no test coverage detected