Fix reserveMethodNames to reserve each supplied name

GeneratedClass.reserveMethodNames(String...) passed the entire varargs
array to MethodName.of() inside the per-name loop instead of the current
element. Since MethodName.of(String...) joins all parts into a single
camel-case name, reserving two or more names (for example "apply" and
"test") produced "applyTest", and the per-element check
Assert.state(generatedName.equals(reservedMethodName)) failed with an
IllegalStateException. Single-name calls worked only by accident.

Reserve each supplied name individually by passing the loop variable.

Signed-off-by: junhyeong9812 <pickjog@gmail.com>
This commit is contained in:
junhyeong9812
2026-09-04 17:14:25 +02:00
committed by Brian Clozel
parent 85c8bb674c
commit 2b5229ff8f
2 changed files with 9 additions and 1 deletions
@@ -81,7 +81,7 @@ public final class GeneratedClass {
*/
public void reserveMethodNames(String... reservedMethodNames) {
for (String reservedMethodName : reservedMethodNames) {
String generatedName = generateSequencedMethodName(MethodName.of(reservedMethodNames));
String generatedName = generateSequencedMethodName(MethodName.of(reservedMethodName));
Assert.state(generatedName.equals(reservedMethodName),
() -> String.format("Unable to reserve method name '%s'", reservedMethodName));
}
@@ -78,6 +78,14 @@ class GeneratedClassTests {
assertThat(generatedMethod.getName()).isEqualTo("apply1");
}
@Test
void reserveMethodNamesWhenMultipleNamesReservesEachName() {
GeneratedClass generatedClass = createGeneratedClass(TEST_CLASS_NAME);
generatedClass.reserveMethodNames("apply", "test");
assertThat(generatedClass.getMethods().add("apply", emptyMethodCustomizer).getName()).isEqualTo("apply1");
assertThat(generatedClass.getMethods().add("test", emptyMethodCustomizer).getName()).isEqualTo("test1");
}
@Test
void generateMethodNameWhenAllEmptyPartsGeneratesSetName() {
GeneratedClass generatedClass = createGeneratedClass(TEST_CLASS_NAME);