View | Details | Raw Unified | Return to bug 264817 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/compiler/regression/UtilTest.java (+13 lines)
Lines 182-187 Link Here
182
	assertTrue("Pattern matching failure",
182
	assertTrue("Pattern matching failure",
183
		CharOperation.match("*rr*".toCharArray(), "ARRAY".toCharArray(), false));
183
		CharOperation.match("*rr*".toCharArray(), "ARRAY".toCharArray(), false));
184
}
184
}
185
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=264817
186
public void test19b() {
187
	assertTrue("Pattern matching failure",
188
		CharOperation.match("*RR*".toCharArray(), "array".toCharArray(), false));
189
}
190
public void test19c() {
191
	assertTrue("Pattern matching failure",
192
		CharOperation.match("a*".toCharArray(), "Array".toCharArray(), false));
193
}
194
public void test19d() {
195
	assertTrue("Pattern matching failure",
196
		CharOperation.match("A*".toCharArray(), "array".toCharArray(), false));
197
}
185
198
186
public void test20() {
199
public void test20() {
187
200
(-)search/org/eclipse/jdt/internal/core/search/StringOperation.java (-2 / +7 lines)
Lines 351-357 Link Here
351
					break;
351
					break;
352
			}
352
			}
353
		} else {
353
		} else {
354
			if (patternChar != (isCaseSensitive ? name.charAt(iName) : ScannerHelper.toLowerCase(name.charAt(iName)))) {
354
			if (isCaseSensitive) {
355
				if (patternChar != name.charAt(iName)) {
356
					return null;
357
				}
358
			} else if (ScannerHelper.toLowerCase(patternChar) != ScannerHelper.toLowerCase(name.charAt(iName))) {
355
				return null;
359
				return null;
356
			}
360
			}
357
			switch (previous) {
361
			switch (previous) {
Lines 436-442 Link Here
436
					break;
440
					break;
437
			}
441
			}
438
		} else {
442
		} else {
439
			if ((isCaseSensitive ? name.charAt(iName) : ScannerHelper.toLowerCase(name.charAt(iName))) != patternChar) {
443
			if ((isCaseSensitive && name.charAt(iName) != patternChar) ||
444
					(ScannerHelper.toLowerCase(name.charAt(iName)) != ScannerHelper.toLowerCase(patternChar))) {
440
				iPattern = segmentStart; // mismatch - restart current segment
445
				iPattern = segmentStart; // mismatch - restart current segment
441
				iName = ++prefixStart;
446
				iName = ++prefixStart;
442
				start = prefixStart;
447
				start = prefixStart;
(-)compiler/org/eclipse/jdt/core/compiler/CharOperation.java (-8 / +18 lines)
Lines 2518-2528 Link Here
2518
		&& (patternChar = pattern[iPattern]) != '*') {
2518
		&& (patternChar = pattern[iPattern]) != '*') {
2519
		if (iName == nameEnd)
2519
		if (iName == nameEnd)
2520
			return false;
2520
			return false;
2521
		if (patternChar
2521
		if (patternChar != '?') {
2522
			!= (isCaseSensitive
2522
			if (isCaseSensitive) {
2523
				? name[iName]
2523
				if (ScannerHelper.toLowerCase(patternChar) != 
2524
				: ScannerHelper.toLowerCase(name[iName]))
2524
					ScannerHelper.toLowerCase(name[iName])) {
2525
			&& patternChar != '?') {
2525
					return false;
2526
				}
2527
			}
2528
		} else if (patternChar != name[iName]) {
2526
			return false;
2529
			return false;
2527
		}
2530
		}
2528
		iName++;
2531
		iName++;
Lines 2552-2560 Link Here
2552
			continue checkSegment;
2555
			continue checkSegment;
2553
		}
2556
		}
2554
		/* check current name character */
2557
		/* check current name character */
2555
		if ((isCaseSensitive ? name[iName] : ScannerHelper.toLowerCase(name[iName]))
2558
		if (patternChar != '?') {
2556
					!= patternChar
2559
			if (isCaseSensitive) {
2557
				&& patternChar != '?') {
2560
				if (ScannerHelper.toLowerCase(patternChar) != 
2561
						ScannerHelper.toLowerCase(name[iName])) {
2562
					iPattern = segmentStart; // mismatch - restart current segment
2563
					iName = ++prefixStart;
2564
					continue checkSegment;
2565
				}
2566
			}
2567
		} else if (patternChar != name[iName]) {
2558
			iPattern = segmentStart; // mismatch - restart current segment
2568
			iPattern = segmentStart; // mismatch - restart current segment
2559
			iName = ++prefixStart;
2569
			iName = ++prefixStart;
2560
			continue checkSegment;
2570
			continue checkSegment;

Return to bug 264817