[jboss-cvs] javassist/src/main/javassist/convert ...

Shigeru Chiba chiba at is.titech.ac.jp
Thu Oct 5 11:43:49 EDT 2006


  User: chiba   
  Date: 06/10/05 11:43:49

  Modified:    src/main/javassist/convert  TransformReadField.java
  Log:
  fixed a bug in CodeConverter#replaceFieldRead/Write() on field shadowing
  
  Revision  Changes    Path
  1.8       +13 -1     javassist/src/main/javassist/convert/TransformReadField.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: TransformReadField.java
  ===================================================================
  RCS file: /cvsroot/jboss/javassist/src/main/javassist/convert/TransformReadField.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- TransformReadField.java	11 Jan 2006 06:45:55 -0000	1.7
  +++ TransformReadField.java	5 Oct 2006 15:43:49 -0000	1.8
  @@ -46,13 +46,25 @@
   
           try {
               CtClass c = pool.get(cp.getFieldrefClassName(index));
  -            if (is_private ? c == fclass : c.subclassOf(fclass))
  +            if (c == fclass || (!is_private && isFieldInSuper(c, fclass, fname)))
                   return cp.getFieldrefType(index);
           }
           catch (NotFoundException e) {}
           return null;
       }
   
  +    static boolean isFieldInSuper(CtClass clazz, CtClass fclass, String fname) {
  +        if (!clazz.subclassOf(fclass))
  +            return false;
  +
  +        try {
  +            CtField f = clazz.getField(fname);
  +            return f.getDeclaringClass() == fclass;
  +        }
  +        catch (NotFoundException e) {}
  +        return false;
  +    }
  +
       public int transform(CtClass tclazz, int pos, CodeIterator iterator,
                            ConstPool cp) throws BadBytecode
       {
  
  
  



More information about the jboss-cvs-commits mailing list