diff --git a/java/java-impl/src/com/intellij/slicer/SliceUtil.java b/java/java-impl/src/com/intellij/slicer/SliceUtil.java index e918c3c5f7f1..0cb29f54bed6 100644 --- a/java/java-impl/src/com/intellij/slicer/SliceUtil.java +++ b/java/java-impl/src/com/intellij/slicer/SliceUtil.java @@ -174,12 +174,13 @@ final class SliceUtil { } } } - if (method != null && builder.hasNesting()) { + if (method != null) { PsiParameter[] parameters = method.getParameterList().getParameters(); boolean hasFlownParameter = false; for (int i = 0; i < parameters.length; i++) { Flow paramAnno = isParamFlowAnnotated(method, i); if (paramAnno != null && !parameters[i].isVarArgs()) { + if (!builder.hasNesting() && !paramAnno.sourceIsContainer()) continue; PsiExpression[] args = call.getArgumentList().getExpressions(); if (args.length > i) { JavaSliceBuilder argBuilder = builder.updateNesting(paramAnno); diff --git a/java/java-tests/testData/codeInsight/slice/backward/UnmodifiableList.java b/java/java-tests/testData/codeInsight/slice/backward/UnmodifiableList.java new file mode 100644 index 000000000000..768e114b7daa --- /dev/null +++ b/java/java-tests/testData/codeInsight/slice/backward/UnmodifiableList.java @@ -0,0 +1,11 @@ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +class MainTest { + public static void main(String[] args) { + List list = new ArrayList<>(); + List unmodifiable = Collections.unmodifiableList(list); + System.out.println(unmodifiable); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/slicer/SliceBackwardTest.java b/java/java-tests/testSrc/com/intellij/java/slicer/SliceBackwardTest.java index bffa82008522..055e7bcab642 100644 --- a/java/java-tests/testSrc/com/intellij/java/slicer/SliceBackwardTest.java +++ b/java/java-tests/testSrc/com/intellij/java/slicer/SliceBackwardTest.java @@ -147,4 +147,5 @@ public class SliceBackwardTest extends SliceTestCase { public void testRecordComponent2() throws Exception { doTest();} public void testRecordComponent3() throws Exception { doTest();} public void testOptionalAsContainer() throws Exception { doTest();} + public void testUnmodifiableList() throws Exception { doTest();} } diff --git a/java/jdkAnnotations/java/util/annotations.xml b/java/jdkAnnotations/java/util/annotations.xml index 41187cdb6857..d43067080b4f 100644 --- a/java/jdkAnnotations/java/util/annotations.xml +++ b/java/jdkAnnotations/java/util/annotations.xml @@ -2099,6 +2099,10 @@ + + + + @@ -2111,6 +2115,10 @@ + + + + @@ -2118,6 +2126,10 @@ + + + + @@ -2164,6 +2176,10 @@ + + + + @@ -2183,6 +2199,11 @@ + + + + + @@ -2191,6 +2212,11 @@ + + + + + @@ -2199,6 +2225,10 @@ + + + + @@ -2206,6 +2236,10 @@ + + + + @@ -2303,6 +2337,10 @@ + + + + @@ -2315,6 +2353,10 @@ + + + + @@ -2324,6 +2366,10 @@ + + + + @@ -2352,6 +2398,11 @@ + + + + + @@ -2360,6 +2411,10 @@ + + + + @@ -2367,6 +2422,10 @@ + + + + @@ -2413,6 +2472,10 @@ + + + + @@ -2432,6 +2495,10 @@ + + + + @@ -2439,6 +2506,10 @@ + + + +