View | Details | Raw Unified | Return to bug 265630
Collapse All | Expand All

(-)model/org/eclipse/jdt/internal/core/NameLookup.java (-4 / +5 lines)
Lines 508-526 Link Here
508
	 *		<code>false</code> otherwise.
508
	 *		<code>false</code> otherwise.
509
	 */
509
	 */
510
	public IPackageFragment[] findPackageFragments(String name, boolean partialMatch, boolean patternMatch) {
510
	public IPackageFragment[] findPackageFragments(String name, boolean partialMatch, boolean patternMatch) {
511
		boolean hasPatternChars = patternMatch && (name.indexOf('*') >= 0 || name.indexOf('?') >= 0);
511
		boolean isStarPattern = name.equals("*"); //$NON-NLS-1$
512
		boolean hasPatternChars = isStarPattern || (patternMatch && (name.indexOf('*') >= 0 || name.indexOf('?') >= 0));
512
		if (partialMatch || hasPatternChars) {
513
		if (partialMatch || hasPatternChars) {
513
			String[] splittedName = Util.splitOn('.', name, 0, name.length());
514
			String[] splittedName = Util.splitOn('.', name, 0, name.length());
514
			IPackageFragment[] oneFragment = null;
515
			IPackageFragment[] oneFragment = null;
515
			ArrayList pkgs = null;
516
			ArrayList pkgs = null;
516
			char[] lowercaseName = name.toLowerCase().toCharArray();
517
			char[] lowercaseName = hasPatternChars && !isStarPattern ? name.toLowerCase().toCharArray() : null;
517
			Object[][] keys = this.packageFragments.keyTable;
518
			Object[][] keys = this.packageFragments.keyTable;
518
			for (int i = 0, length = keys.length; i < length; i++) {
519
			for (int i = 0, length = keys.length; i < length; i++) {
519
				String[] pkgName = (String[]) keys[i];
520
				String[] pkgName = (String[]) keys[i];
520
				if (pkgName != null) {
521
				if (pkgName != null) {
521
					boolean match = hasPatternChars
522
					boolean match = isStarPattern || (hasPatternChars
522
						? CharOperation.match(lowercaseName, Util.concatCompoundNameToCharArray(pkgName), false)
523
						? CharOperation.match(lowercaseName, Util.concatCompoundNameToCharArray(pkgName), false)
523
						: Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch);
524
						: Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch));
524
					if (match) {
525
					if (match) {
525
						Object value = this.packageFragments.valueTable[i];
526
						Object value = this.packageFragments.valueTable[i];
526
						if (value instanceof PackageFragmentRoot) {
527
						if (value instanceof PackageFragmentRoot) {

Return to bug 265630