src/share/classes/com/sun/tools/javac/jvm/ClassReader.java

changeset 2001
2bf4c132bf90
parent 1820
6b48ebae2569
child 2007
a76c663a9cac
     1.1 --- a/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Mon Sep 02 22:38:36 2013 +0100
     1.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Mon Sep 02 22:44:06 2013 +0100
     1.3 @@ -727,12 +727,14 @@
     1.4                  ClassSymbol t = enterClass(names.fromUtf(signatureBuffer,
     1.5                                                           startSbp,
     1.6                                                           sbp - startSbp));
     1.7 -                if (outer == Type.noType)
     1.8 -                    outer = t.erasure(types);
     1.9 -                else
    1.10 -                    outer = new ClassType(outer, List.<Type>nil(), t);
    1.11 -                sbp = startSbp;
    1.12 -                return outer;
    1.13 +
    1.14 +                try {
    1.15 +                    return (outer == Type.noType) ?
    1.16 +                            t.erasure(types) :
    1.17 +                            new ClassType(outer, List.<Type>nil(), t);
    1.18 +                } finally {
    1.19 +                    sbp = startSbp;
    1.20 +                }
    1.21              }
    1.22  
    1.23              case '<':           // generic arguments
    1.24 @@ -797,6 +799,13 @@
    1.25                  continue;
    1.26  
    1.27              case '.':
    1.28 +                //we have seen an enclosing non-generic class
    1.29 +                if (outer != Type.noType) {
    1.30 +                    t = enterClass(names.fromUtf(signatureBuffer,
    1.31 +                                                 startSbp,
    1.32 +                                                 sbp - startSbp));
    1.33 +                    outer = new ClassType(outer, List.<Type>nil(), t);
    1.34 +                }
    1.35                  signatureBuffer[sbp++] = (byte)'$';
    1.36                  continue;
    1.37              case '/':

mercurial