From 44bce422fa008e0d5f8a3d8364e617f19eb8ec3a Mon Sep 17 00:00:00 2001 From: Damien Date: Fri, 10 Jan 2014 11:31:54 +0100 Subject: [PATCH] Fix @Trace crash in onCreate() --- .../helper/APTCodeModelHelper.java | 15 ++++++++++++++- .../androidannotations/test15/TracedActivity.java | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java index c99c7abc5f..5ba8983f86 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java @@ -205,7 +205,20 @@ public JBlock removeBody(JMethod method) { JBlock clonedBody = new JBlock(false, false); for (Object statement : body.getContents()) { - clonedBody.add((JStatement) statement); + if (statement instanceof JVar) { + JVar var = (JVar) statement; + try { + Field varInitField = JVar.class.getDeclaredField("init"); + varInitField.setAccessible(true); + JExpression varInit = (JExpression) varInitField.get(var); + + clonedBody.decl(var.type(), var.name(), varInit); + } catch (Exception e) { + throw new RuntimeException(e); + } + } else { + clonedBody.add((JStatement) statement); + } } return clonedBody; diff --git a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/TracedActivity.java b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/TracedActivity.java index 9c39b01305..04dc0fbc3f 100644 --- a/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/TracedActivity.java +++ b/AndroidAnnotations/functional-test-1-5/src/main/java/org/androidannotations/test15/TracedActivity.java @@ -45,6 +45,7 @@ public class TracedActivity extends Activity { public boolean overloadedMethodInt = false; public boolean overloadedMethodIntFLoat = false; + @Trace @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);