From 99a30431af485adb4df2f8aa29d344813a31100e Mon Sep 17 00:00:00 2001
From: Scott Murphy <scott@alwaysvip.com>
Date: Wed, 18 Sep 2024 11:39:11 -0700
Subject: [PATCH] Revert "Working on #13486"

---
 .../compiler/web/ControllerActionTransformer.java | 15 ++++++++++-----
 .../web/commandobjects/CommandObjectsSpec.groovy  |  7 -------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java
index 096547ad9e6..3cbc4ecd8a7 100644
--- a/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java
+++ b/grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java
@@ -29,6 +29,7 @@
 import grails.web.controllers.ControllerMethod;
 import groovy.lang.Closure;
 import groovy.transform.CompilationUnitAware;
+import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
 import org.apache.groovy.ast.tools.ClassNodeUtils;
 import org.codehaus.groovy.ast.ASTNode;
 import org.codehaus.groovy.ast.AnnotationNode;
@@ -97,7 +98,6 @@
 import java.util.Map;
 import java.util.regex.Pattern;
 
-import static org.codehaus.groovy.ast.tools.GeneralUtils.*;
 import static org.grails.compiler.injection.GrailsASTUtils.applyDefaultMethodTarget;
 import static org.grails.compiler.injection.GrailsASTUtils.applyMethodTarget;
 import static org.grails.compiler.injection.GrailsASTUtils.buildGetMapExpression;
@@ -843,11 +843,16 @@ protected void initializeAndValidateCommandObjectParameter(final BlockStatement
 
     protected void initializeCommandObjectParameter(final BlockStatement wrapper,
             final ClassNode commandObjectNode, final String paramName, SourceUnit source) {
-        final ArgumentListExpression initializeCommandObjectArguments = args(classX(commandObjectNode), constX(paramName));
-        final MethodCallExpression initializeCommandObjectMethodCall = callThisX("initializeCommandObject", initializeCommandObjectArguments);
+
+        final ArgumentListExpression initializeCommandObjectArguments = new ArgumentListExpression();
+        initializeCommandObjectArguments.addExpression(new ClassExpression(commandObjectNode));
+        initializeCommandObjectArguments.addExpression(new ConstantExpression(paramName));
+        final MethodCallExpression initializeCommandObjectMethodCall = new MethodCallExpression(new VariableExpression("this"), "initializeCommandObject", initializeCommandObjectArguments);
         applyDefaultMethodTarget(initializeCommandObjectMethodCall, commandObjectNode);
-        final Expression assignCommandObjectToParameter = declX(localVarX(paramName), initializeCommandObjectMethodCall);
-        wrapper.addStatement(stmt(assignCommandObjectToParameter));
+        
+        final Expression assignCommandObjectToParameter = new BinaryExpression(new VariableExpression(paramName), Token.newSymbol(Types.EQUALS, 0, 0), initializeCommandObjectMethodCall);
+        
+        wrapper.addStatement(new ExpressionStatement(assignCommandObjectToParameter));
     }
 
     /**
diff --git a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy
index f65f884d599..a7c14fe59c7 100644
--- a/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy
+++ b/grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy
@@ -316,13 +316,6 @@ class TestController {
         [command: co]
     }
 
-    private seeIssue13486() {
-        // the presence of this local variable could break
-        // the compile-time generated no-arg methodActionWithDate()
-        // see https://github.com/grails/grails-core/issues/13486
-        String co
-    }
-
     def methodActionWithArtist(Artist a) {
         [artist: a]
     }