Bridge methods should use the same source info (and param names) as the bridged-to method. Review by: spoon git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7476 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java index f3c4971..c68ee51 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java +++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java
@@ -38,7 +38,7 @@ private final JMethod enclosingMethod; private final boolean isThis; - JParameter(SourceInfo info, String name, JType type, boolean isFinal, + public JParameter(SourceInfo info, String name, JType type, boolean isFinal, boolean isThis, JMethod enclosingMethod) { super(info, name, type, isFinal); this.enclosingMethod = enclosingMethod;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java index 156418b..0b32c72 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -2027,9 +2027,8 @@ */ private void createBridgeMethod(JClassType clazz, SyntheticMethodBinding jdtBridgeMethod, JMethod implmeth) { - SourceInfo info = program.createSourceInfoSynthetic( + SourceInfo info = implmeth.getSourceInfo().makeChild( GenerateJavaAST.class, "bridge method"); - // create the method itself JMethod bridgeMethod = program.createMethod(info, jdtBridgeMethod.selector, clazz, @@ -2037,28 +2036,25 @@ false, true, false, false); bridgeMethod.setSynthetic(); int paramIdx = 0; + List<JParameter> implParams = implmeth.getParams(); for (TypeBinding jdtParamType : jdtBridgeMethod.parameters) { - String paramName = "p" + paramIdx++; + JParameter param = implParams.get(paramIdx++); JType paramType = (JType) typeMap.get(jdtParamType.erasure()); - program.createParameter(program.createSourceInfoSynthetic( - GenerateJavaAST.class, "part of a bridge method"), - paramName.toCharArray(), paramType, true, false, bridgeMethod); + JParameter newParam = new JParameter(param.getSourceInfo().makeChild( + GenerateJavaAST.class, "bridge method"), param.getName(), + paramType, true, false, bridgeMethod); + bridgeMethod.addParam(newParam); } bridgeMethod.freezeParamTypes(); // create a call - JMethodCall call = new JMethodCall(program.createSourceInfoSynthetic( - GenerateJavaAST.class, "call to inherited method"), - program.getExprThisRef(program.createSourceInfoSynthetic( - GenerateJavaAST.class, "part of a bridge method"), clazz), - implmeth); + JMethodCall call = new JMethodCall(info, program.getExprThisRef(info, + clazz), implmeth); for (int i = 0; i < bridgeMethod.getParams().size(); i++) { JParameter param = bridgeMethod.getParams().get(i); - JParameterRef paramRef = new JParameterRef( - program.createSourceInfoSynthetic(GenerateJavaAST.class, - "part of a bridge method"), param); - call.addArg(maybeCast(implmeth.getParams().get(i).getType(), paramRef)); + JParameterRef paramRef = new JParameterRef(info, param); + call.addArg(maybeCast(implParams.get(i).getType(), paramRef)); } // wrap it in a return if necessary @@ -2066,8 +2062,7 @@ if (bridgeMethod.getType() == program.getTypeVoid()) { callOrReturn = call.makeStatement(); } else { - callOrReturn = new JReturnStatement(program.createSourceInfoSynthetic( - GenerateJavaAST.class, "part of a bridge method"), call); + callOrReturn = new JReturnStatement(info, call); } // create a body that is just that call