TerminalOperation: check arguments count for "collectingAndThen" collector.

Fixes EA-127467 - AIOOBE: TerminalOperation.fromCollector
This commit is contained in:
Tagir Valeev
2018-09-17 09:30:59 +07:00
parent 97cb65b8ff
commit b7688efea7
3 changed files with 13 additions and 0 deletions
@@ -193,6 +193,7 @@ abstract class TerminalOperation extends Operation {
fn = FunctionHelper.create(collectorArgs[0], 0);
return fn == null ? null : new ToCollectionTerminalOperation(resultType, fn, null);
case "collectingAndThen": {
if (collectorArgs.length != 2) return null;
PsiExpression collectorCall = collectorArgs[0];
PsiType downstreamResultType = PsiUtil.substituteTypeParameter(collectorCall.getType(), "java.util.stream.Collector", 2, false);
if (downstreamResultType == null) return null;
@@ -56,4 +56,10 @@ public class Main {
}
Map<Integer, List<String>> map = Collections.unmodifiableMap(result);
}
void incomplete(List<String> people) {
List<String> list1 = people.stream().collect( // comment
Collectors.collectingAndThen(Collectors.toList()));
}
}
@@ -36,4 +36,10 @@ public class Main {
Collectors.collectingAndThen(Collectors.groupingBy(String::length),
m -> Collections.unmodifiableMap(m)));
}
void incomplete(List<String> people) {
List<String> list1 = people.stream().collect( // comment
Collectors.collectingAndThen(Collectors.toList()));
}
}