Reviewers: Dan Rice, Bart Guijt,

Description:
This patch for a problem discussed on GWTC, fixes a problem in getting
the real argument names.

The path through resolveMethod that uses the descriptor works fine, but
the one that uses a generic signature does not pass the flag that was
collected about whether we have real argument names or not.

Please review this at http://gwt-code-reviews.appspot.com/100806

Affected files:
   dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java
   dev/core/src/com/google/gwt/dev/javac/asm/ResolveMethodSignature.java
   dev/core/test/com/google/gwt/dev/javac/asm/ResolveGenericsTest.java


Index: dev/core/test/com/google/gwt/dev/javac/asm/ResolveGenericsTest.java
===================================================================
--- dev/core/test/com/google/gwt/dev/javac/asm/ResolveGenericsTest.java  
(revision 6818)
+++ dev/core/test/com/google/gwt/dev/javac/asm/ResolveGenericsTest.java  
(working copy)
@@ -307,7 +307,8 @@
        argTypes[i] = Type.getType(paramTypes[i]);
      }
      ResolveMethodSignature methodResolver = new  
ResolveMethodSignature(resolver,
-        failTreeLogger, method, lookup, true, methodData, argTypes,  
argNames);
+        failTreeLogger, method, lookup, true, methodData, argTypes,  
argNames,
+        false);
      new SignatureReader(signature).accept(methodResolver);
      methodResolver.finish();
    }
Index: dev/core/src/com/google/gwt/dev/javac/asm/ResolveMethodSignature.java
===================================================================
--- dev/core/src/com/google/gwt/dev/javac/asm/ResolveMethodSignature.java       
 
(revision 6818)
+++ dev/core/src/com/google/gwt/dev/javac/asm/ResolveMethodSignature.java       
 
(working copy)
@@ -47,6 +47,7 @@
    private final CollectMethodData methodData;
    private final Type[] argTypes;
    private final String[] argNames;
+  private final boolean argNamesAreReal;

    private JType[] returnType = new JType[1];
    private List<JType[]> params = new ArrayList<JType[]>();
@@ -54,10 +55,23 @@
    private JTypeParameter currentParam = null;
    private ArrayList<JType[]> bounds = null;

+  /**
+   * Resolve a method signature.
+   *
+   * @param resolver
+   * @param logger
+   * @param method
+   * @param typeParamLookup
+   * @param hasReturnType
+   * @param methodData
+   * @param argTypes
+   * @param argNames
+   * @param argNamesAreReal
+   */
    public ResolveMethodSignature(Resolver resolver, TreeLogger logger,
        JAbstractMethod method, TypeParameterLookup typeParamLookup,
        boolean hasReturnType, CollectMethodData methodData, Type[] argTypes,
-      String[] argNames) {
+      String[] argNames, boolean argNamesAreReal) {
      this.resolver = resolver;
      this.logger = logger;
      this.method = method;
@@ -66,6 +80,7 @@
      this.methodData = methodData;
      this.argTypes = argTypes;
      this.argNames = argNames;
+    this.argNamesAreReal = argNamesAreReal;
    }

    /**
@@ -103,7 +118,8 @@
            declaredAnnotations);

        // JParameter adds itself to the method
-      new JParameter(method, argType, argNames[i], declaredAnnotations);
+      new JParameter(method, argType, argNames[i], declaredAnnotations,
+          argNamesAreReal);
      }

      // Handle thrown exceptions
Index: dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java
===================================================================
--- dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java       
(revision  
6818)
+++ dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java       
(working  
copy)
@@ -970,14 +970,13 @@
      }

      String signature = methodData.getSignature();
-    Type[] argTypes = methodData.getArgTypes();
-    String[] argNames = methodData.getArgNames();
      if (signature != null) {
        // If we have a signature, use it for superclass and interfaces
        SignatureReader reader = new SignatureReader(signature);
        ResolveMethodSignature methodResolver = new ResolveMethodSignature(
            resolver, logger, method, typeParamLookup, hasReturnType,  
methodData,
-          argTypes, argNames);
+          methodData.getArgTypes(), methodData.getArgNames(),
+          methodData.hasActualArgNames());
        // TraceSignatureVisitor trace = new TraceSignatureVisitor(
        // methodData.getAccess());
        // reader.accept(trace);



--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to