Skip to content

Commit e9036d7

Browse files
authored
[javaparser] Extract trackClassUsage helper in KtParser (#445)
Deduplicate the four nearly identical class-resolution blocks in visitSimpleNameExpression (inline functions, extension functions, property delegates, componentN functions) into a single trackClassUsage helper method.
1 parent 8e73b1f commit e9036d7

1 file changed

Lines changed: 21 additions & 105 deletions

File tree

  • java/src/com/github/bazel_contrib/contrib_rules_jvm/javaparser/generators

java/src/com/github/bazel_contrib/contrib_rules_jvm/javaparser/generators/KtParser.java

Lines changed: 21 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -433,117 +433,33 @@ public void visitSimpleNameExpression(KtSimpleNameExpression expression) {
433433
expression.getText(),
434434
expression.getReferencedName());
435435

436-
// If we're inside an inline function, track class usage
437-
if (currentInlineFunction != null) {
438-
String referencedName = expression.getReferencedName();
439-
440-
// Check if this is a class reference (constructor call or type reference)
441-
// This includes both PascalCase class names and constructor calls
442-
if (isLikelyClassName(referencedName)) {
443-
// Try to resolve to fully qualified name
444-
if (fqImportByNameOrAlias.containsKey(referencedName)) {
445-
String fqName = fqImportByNameOrAlias.get(referencedName).toString();
446-
currentInlineFunctionDeps.add(fqName);
447-
logger.debug("Inline function " + currentInlineFunction + " uses class: " + fqName);
448-
} else if (referencedName.contains(".")) {
449-
// Already fully qualified
450-
currentInlineFunctionDeps.add(referencedName);
451-
logger.debug(
452-
"Inline function " + currentInlineFunction + " uses class: " + referencedName);
453-
} else {
454-
// For unresolved class names, add them as potential dependencies
455-
// This handles cases where imports might not be fully resolved
456-
logger.debug(
457-
"Inline function "
458-
+ currentInlineFunction
459-
+ " uses unresolved class: "
460-
+ referencedName);
461-
}
436+
String referencedName = expression.getReferencedName();
437+
if (isLikelyClassName(referencedName)) {
438+
trackClassUsage(referencedName, currentInlineFunction, currentInlineFunctionDeps);
439+
trackClassUsage(referencedName, currentExtensionFunction, currentExtensionFunctionDeps);
440+
if (currentlyInPropertyDelegate) {
441+
trackClassUsage(referencedName, "property delegate", currentPropertyDelegateDeps);
462442
}
443+
trackClassUsage(referencedName, currentComponentFunction, currentComponentFunctionDeps);
463444
}
464445

465-
// If we're inside an extension function, track class usage
466-
if (currentExtensionFunction != null) {
467-
String referencedName = expression.getReferencedName();
468-
469-
// Check if this is a class reference (constructor call or type reference)
470-
if (isLikelyClassName(referencedName)) {
471-
// Try to resolve to fully qualified name
472-
if (fqImportByNameOrAlias.containsKey(referencedName)) {
473-
String fqName = fqImportByNameOrAlias.get(referencedName).toString();
474-
currentExtensionFunctionDeps.add(fqName);
475-
logger.debug(
476-
"Extension function " + currentExtensionFunction + " uses class: " + fqName);
477-
} else if (referencedName.contains(".")) {
478-
// Already fully qualified
479-
currentExtensionFunctionDeps.add(referencedName);
480-
logger.debug(
481-
"Extension function "
482-
+ currentExtensionFunction
483-
+ " uses class: "
484-
+ referencedName);
485-
} else {
486-
logger.debug(
487-
"Extension function "
488-
+ currentExtensionFunction
489-
+ " uses unresolved class: "
490-
+ referencedName);
491-
}
492-
}
493-
}
446+
super.visitSimpleNameExpression(expression);
447+
}
494448

495-
// If we're inside a property delegate, track class usage
496-
if (currentlyInPropertyDelegate) {
497-
String referencedName = expression.getReferencedName();
498-
499-
// Check if this is a class reference (constructor call or type reference)
500-
if (isLikelyClassName(referencedName)) {
501-
// Try to resolve to fully qualified name
502-
if (fqImportByNameOrAlias.containsKey(referencedName)) {
503-
String fqName = fqImportByNameOrAlias.get(referencedName).toString();
504-
currentPropertyDelegateDeps.add(fqName);
505-
logger.debug("Property delegate uses class: " + fqName);
506-
} else if (referencedName.contains(".")) {
507-
// Already fully qualified
508-
currentPropertyDelegateDeps.add(referencedName);
509-
logger.debug("Property delegate uses class: " + referencedName);
510-
} else {
511-
logger.debug("Property delegate uses unresolved class: " + referencedName);
512-
}
513-
}
449+
private void trackClassUsage(String referencedName, String context, Set<String> deps) {
450+
if (context == null || deps == null) {
451+
return;
514452
}
515-
516-
// If we're inside a componentN() function, track class usage
517-
if (currentComponentFunction != null) {
518-
String referencedName = expression.getReferencedName();
519-
520-
// Check if this is a class reference (constructor call or type reference)
521-
if (isLikelyClassName(referencedName)) {
522-
// Try to resolve to fully qualified name
523-
if (fqImportByNameOrAlias.containsKey(referencedName)) {
524-
String fqName = fqImportByNameOrAlias.get(referencedName).toString();
525-
currentComponentFunctionDeps.add(fqName);
526-
logger.debug(
527-
"ComponentN function " + currentComponentFunction + " uses class: " + fqName);
528-
} else if (referencedName.contains(".")) {
529-
// Already fully qualified
530-
currentComponentFunctionDeps.add(referencedName);
531-
logger.debug(
532-
"ComponentN function "
533-
+ currentComponentFunction
534-
+ " uses class: "
535-
+ referencedName);
536-
} else {
537-
logger.debug(
538-
"ComponentN function "
539-
+ currentComponentFunction
540-
+ " uses unresolved class: "
541-
+ referencedName);
542-
}
543-
}
453+
if (fqImportByNameOrAlias.containsKey(referencedName)) {
454+
String fqName = fqImportByNameOrAlias.get(referencedName).toString();
455+
deps.add(fqName);
456+
logger.debug(context + " uses class: " + fqName);
457+
} else if (referencedName.contains(".")) {
458+
deps.add(referencedName);
459+
logger.debug(context + " uses class: " + referencedName);
460+
} else {
461+
logger.debug(context + " uses unresolved class: " + referencedName);
544462
}
545-
546-
super.visitSimpleNameExpression(expression);
547463
}
548464

549465
@Override

0 commit comments

Comments
 (0)