diff --git a/src/main/java/org/codehaus/groovy/classgen/ReturnAdder.java b/src/main/java/org/codehaus/groovy/classgen/ReturnAdder.java
index <HASH>..<HASH> 100644
--- a/src/main/java/org/codehaus/groovy/classgen/ReturnAdder.java
+++ b/src/main/java/org/codehaus/groovy/classgen/ReturnAdder.java
@@ -114,7 +114,7 @@ public class ReturnAdder {
             Expression expression = ((ExpressionStatement) statement).getExpression();
             ReturnStatement returnStatement = new ReturnStatement(expression);
             returnStatement.copyStatementLabels(statement);
-            returnStatement.setSourcePosition(statement);
+            returnStatement.setSourcePosition(statement.getLineNumber() < 0 ? expression : statement);
             listener.returnStatementAdded(returnStatement);
             return returnStatement;
         }
GROOVY-<I>: Line number information for automatically inserted return statements slightly different for <I> vs <I> (provide fallback)

If the approach now taken in <I> (which we believe is the preferred approach) would yield no line number info, fall back to the approach used for <I>