-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 6.8
-
Fix Version/s: 6.9
-
Component/s: Symbolic Execution
The following code causes a NPE in our symbolic execution engine, when dealing with a switch expression:
public class A { int foo(MyEnum s) { return switch (s) { case SOME_TYPE -> 123; case ANOTHER_TYPE -> 456; }; } public enum MyEnum { SOME_TYPE, ANOTHER_TYPE; } }
Stack trace:
java.lang.NullPointerException at java.base/java.util.Objects.requireNonNull(Objects.java:221) at org.sonar.java.collections.AVLTree.get(AVLTree.java:76) at org.sonar.java.se.ProgramState.removeConstraintsOnDomain(ProgramState.java:320) at org.sonar.java.se.checks.StreamConsumedCheck.checkPostStatement(StreamConsumedCheck.java:212) at org.sonar.java.se.CheckerDispatcher.executePost(CheckerDispatcher.java:106)
The absence of default block is unexpected by the engine, and causes an extra transition, without anything on the stack.
- relates to
-
SONARJAVA-3047 Handle Java 12 new switch expression
-
- Closed
-
-
RSPEC-3959 Consumed Stream pipelines should not be reused
- Active
- links to