mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[java-dfa] Fix hardcoded contract for three-arg Arrays.binarySearch method (IDEA-359546)
(cherry picked from commit a4ff22126f7d6fc1b4a7d99ee47c3caf1b144c4c) GitOrigin-RevId: 74f0bae69219b650eb170bc517e5c1bc0b1d9ad2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
dc174fbf44
commit
88e99a58b4
@@ -141,8 +141,10 @@ public final class HardcodedContracts {
|
||||
ContractValue.zero(), fail())))
|
||||
// All these methods take array as 1st parameter, from index as 2nd and to index as 3rd
|
||||
// thus ARRAY_RANGE_CONTRACTS are applicable to them
|
||||
.register(staticCall(JAVA_UTIL_ARRAYS, "binarySearch", "fill", "parallelPrefix", "parallelSort", "sort", "spliterator", "stream"),
|
||||
.register(staticCall(JAVA_UTIL_ARRAYS, "fill", "parallelPrefix", "parallelSort", "sort", "spliterator", "stream"),
|
||||
(call, cnt) -> cnt >= 3 ? ARRAY_RANGE_CONTRACTS : null)
|
||||
.register(staticCall(JAVA_UTIL_ARRAYS, "binarySearch"),
|
||||
(call, cnt) -> cnt >= 4 ? ARRAY_RANGE_CONTRACTS : null)
|
||||
.register(staticCall("org.mockito.ArgumentMatchers", "argThat", "assertArg").parameterCount(1),
|
||||
ContractProvider.of(StandardMethodContract.fromText("_->_")))
|
||||
.register(anyOf(
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import java.util.*;
|
||||
|
||||
class Main {
|
||||
public static void main(String[] args) {
|
||||
Integer[] arr = new Integer[]{568, 659, 685, 235, 258, 657, 159, 357, 756, 958, 657};
|
||||
|
||||
Arrays.sort(arr, Collections.reverseOrder());
|
||||
|
||||
int index1 = Arrays.binarySearch(arr, 756, Comparator.reverseOrder());
|
||||
int index2 = Arrays.binarySearch(arr, 657, Comparator.reverseOrder());
|
||||
|
||||
Integer[] newArr = Arrays.copyOf(arr, 15);
|
||||
Arrays.fill(newArr, arr.length, newArr.length, 999);
|
||||
|
||||
System.out.println(Arrays.toString(arr));
|
||||
System.out.println(index1);
|
||||
System.out.println(index2);
|
||||
System.out.println(Arrays.toString(newArr));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,8 @@ public class DataFlowRangeAnalysisTest extends DataFlowInspectionTestCase {
|
||||
public void testTwoFlagsMixed() { doTest(); }
|
||||
public void testArrayInitializersWithMethodCall() { doTest(); }
|
||||
public void testLongMinValue() { doTest(); }
|
||||
|
||||
public void testArrayBinarySearchNoWarningAtNeedle() { doTest(); }
|
||||
|
||||
public void testJmhParamRange() {
|
||||
myFixture.addClass("package org.openjdk.jmh.annotations;public @interface Param {String[] value();}");
|
||||
doTest();
|
||||
|
||||
Reference in New Issue
Block a user