From 64092206cb35c2b4699666c19dbc85917ff5724d Mon Sep 17 00:00:00 2001 From: lkerford Date: Tue, 22 Oct 2024 11:46:28 -0700 Subject: [PATCH] Add used enums into the list of used variable names Currently, Enums aren't being added to the list of used variable names which can result in collisions when naming new variable. --- .../openrewrite/java/VariableNameUtilsTest.java | 17 +++++++++++++++++ .../org/openrewrite/java/VariableNameUtils.java | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/rewrite-java-test/src/test/java/org/openrewrite/java/VariableNameUtilsTest.java b/rewrite-java-test/src/test/java/org/openrewrite/java/VariableNameUtilsTest.java index 34d99bde524..7d9fcb738bf 100644 --- a/rewrite-java-test/src/test/java/org/openrewrite/java/VariableNameUtilsTest.java +++ b/rewrite-java-test/src/test/java/org/openrewrite/java/VariableNameUtilsTest.java @@ -106,6 +106,23 @@ class Test { ); } + @Test + void enumFieldNames() { + rewriteRun( + baseTest("myType", "myType,TYPES"), + java( + """ + class Test { + TYPES myType; + } + enum TYPES { + VALUE, NUMBER, TEXT + } + """ + ) + ); + } + @Test void allClassFieldsAreFound() { rewriteRun( diff --git a/rewrite-java/src/main/java/org/openrewrite/java/VariableNameUtils.java b/rewrite-java/src/main/java/org/openrewrite/java/VariableNameUtils.java index 90a960ee503..a4444470f75 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/VariableNameUtils.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/VariableNameUtils.java @@ -263,6 +263,15 @@ public J.VariableDeclarations.NamedVariable visitVariable(J.VariableDeclarations return super.visitVariable(variable, strings); } + public J.Identifier visitIdentifier(J.Identifier identifier, Set namesInScope) { + J.Identifier v = super.visitIdentifier(identifier, namesInScope); + if (v.getType() instanceof JavaType.Class && + ((JavaType.Class) v.getType()).getKind() == JavaType.FullyQualified.Kind.Enum) { + namesInScope.add(v.getSimpleName()); + } + return v; + } + private void addImportedStaticFieldNames(@Nullable JavaSourceFile cu, Cursor classCursor) { if (cu != null) { List imports = cu.getImports();