Open knutwannheden opened 1 month ago
This bug has been observed, but so far we haven't had any time to reproduce it yet. It appears that the MaybeUsesImport visitor can get caught in an endless loop on some Kotlin sources. The loop in question is this one: https://github.com/openrewrite/rewrite/blob/19c73502d29abe475cb4360f293fbe2e7b3d0027/rewrite-java/src/main/java/org/openrewrite/java/search/MaybeUsesImport.java#L57-L76
MaybeUsesImport
for (Expression expr = i.getQualid(); expr != prior; ) { if (expr instanceof J.Identifier) { // this can only be the first segment prior = expr; if (!((J.Identifier) expr).getSimpleName().equals(segment)) { return false; } } else if (expr instanceof J.FieldAccess) { J.FieldAccess fa = (J.FieldAccess) expr; if (fa.getTarget() == prior) { String simpleName = fa.getSimpleName(); if (!"*".equals(segment) && !simpleName.equals(segment) && !"*".equals(simpleName)) { return false; } prior = fa; continue; } expr = fa.getTarget(); } }
This bug has been observed, but so far we haven't had any time to reproduce it yet. It appears that the
MaybeUsesImport
visitor can get caught in an endless loop on some Kotlin sources. The loop in question is this one: https://github.com/openrewrite/rewrite/blob/19c73502d29abe475cb4360f293fbe2e7b3d0027/rewrite-java/src/main/java/org/openrewrite/java/search/MaybeUsesImport.java#L57-L76