Incorrect Inspect code error in lambda expression method reference
Code is sometimes highlighted as error by Inspector when it is used in lambda expression:
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Map<String, Object> stringObjectHashMap = new HashMap<>();
Map<String, Object> stringObjectHashMap1 = new HashMap<>();
Map<String, Object> stringObjectMap_WithError = Optional.ofNullable(stringObjectHashMap)
.orElseGet(() -> stringObjectHashMap1.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, Entry::getValue))); // problem in this line:
// "Non-static method cannot be
// referenced from a static context" error
// No error
Map<String, Object> stringObjectMap_NoError = Optional.ofNullable(stringObjectHashMap)
.orElseGet(() -> {
Map<String, Object> result = stringObjectHashMap1.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, Entry::getValue)); // code is not marked as error
return result;
} );
Map<String, Object> stringObjectMap_WithError2 = Optional.ofNullable(stringObjectHashMap)
.orElseGet(() -> stringObjectHashMap1.entrySet().stream()
.collect(Collectors.toMap(me -> me.getKey(), me -> me.getValue()))); // problem in this line:
// "Cannot resolve method..." error
// No error
Map<String, Object> stringObjectMap2 = stringObjectHashMap1.entrySet().stream()
.collect(Collectors.toMap(me -> me.getKey(), me -> me.getValue())); // same code is not marked as error
Map<String, Object> stringObjectMap_NoError2 = Optional.ofNullable(stringObjectHashMap)
.orElseGet(() -> stringObjectMap2);
}
}
Project compiles without errors.
Using:
IntelliJ IDEA 2016.3.3
Build #IU-163.11103.6, built on January 16, 2017
JRE: 1.8.0_112-release-408-b6 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Please sign in to leave a comment.
Thanks for reporting. Created a bug, please follow the https://youtrack.jetbrains.com/issue/IDEA-167277