Index: model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java,v retrieving revision 1.1.2.7 diff -u -r1.1.2.7 SourceTypeConverter.java --- model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java 25 Jun 2004 11:57:11 -0000 1.1.2.7 +++ model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java 25 Jun 2004 14:34:37 -0000 @@ -393,6 +393,7 @@ int nameFragmentStart = this.namePos, nameFragmentEnd = -1; ArrayList fragments = null; typeLoop: while (this.namePos < length) { + if (nameFragmentStart < 0) nameFragmentStart = this.namePos; char currentChar = typeName[this.namePos]; switch (currentChar) { case '[' : @@ -471,16 +472,18 @@ } } // parameterized qualified type - identCount = 0; + identCount = 0; int argumentCount = 0; for (int i = 0; i < fragmentLength; i ++) { Object element = fragments.get(i); if (element instanceof char[][]) { identCount += ((char[][])element).length; + } else { + argumentCount ++; } } char[][] tokens = new char[identCount][]; - TypeReference[][] arguments = new TypeReference[identCount][]; - int index = 0; + TypeReference[][] arguments = new TypeReference[argumentCount][]; + int index = 0, argumentIndex = 0; for (int i = 0; i < fragmentLength; i ++) { Object element = fragments.get(i); if (element instanceof char[][]) { @@ -489,7 +492,7 @@ System.arraycopy(fragmentTokens, 0, tokens, index, fragmentTokenLength); index += fragmentTokenLength; } else { - arguments[index] = (TypeReference[]) element; + arguments[argumentIndex++] = (TypeReference[]) element; } } long[] positions = new long[identCount];