### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java,v retrieving revision 1.184 diff -u -r1.184 SourceTypeBinding.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java 5 Jan 2011 19:57:26 -0000 1.184 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java 13 Jan 2011 10:19:17 -0000 @@ -639,7 +639,13 @@ start = CharOperation.lastIndexOf('/', uniqueKey) + 1; if (start == 0) start = 1; // start after L - end = CharOperation.indexOf('$', uniqueKey, start); + if (this.isMemberType()) { + end = CharOperation.indexOf('$', uniqueKey, start); + } else { + // '$' is part of the type name + end = -1; + } + //if (CharOperation.indexOf(';', uniqueKey, start) == end2 + 1) if (end == -1) end = CharOperation.indexOf('<', uniqueKey, start); if (end == -1) Index: model/org/eclipse/jdt/internal/core/util/BindingKeyParser.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/BindingKeyParser.java,v retrieving revision 1.41 diff -u -r1.41 BindingKeyParser.java --- model/org/eclipse/jdt/internal/core/util/BindingKeyParser.java 18 Mar 2010 16:18:58 -0000 1.41 +++ model/org/eclipse/jdt/internal/core/util/BindingKeyParser.java 13 Jan 2011 10:19:17 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2010 IBM Corporation and others. + * Copyright (c) 2005, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -731,6 +731,9 @@ if (!this.scanner.isAtMemberTypeStart() || this.scanner.nextToken() != Scanner.TYPE) return; char[] typeName = this.scanner.getTokenSource(); + // Might not actually be an inner type but came here as a consequence of '$' being present in type name + if (typeName.length == 0) + return; if (Character.isDigit(typeName[0])) { // anonymous or local type int nextToken = Scanner.TYPE;