Handle StringSwitch in constant propagation

Change-Id: Ic0dea2eb4a6f19a4cc2f76b76e4a95d934447429
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
index 0bb8f21..be72b24 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
@@ -222,9 +222,14 @@
     } else if (jumpInstruction.isStringSwitch()) {
       StringSwitch switchInst = jumpInstruction.asStringSwitch();
       LatticeElement switchElement = getLatticeElement(switchInst.value());
-
-      // There is currently no constant propagation for strings.
-      assert !switchElement.isConst();
+      if (switchElement.isConst()) {
+        // There is currently no constant propagation for strings, so it must be null.
+        assert switchElement.asConst().getConstNumber().isZero();
+        BasicBlock target = switchInst.fallthroughBlock();
+        setExecutableEdge(jumpInstBlockNumber, target.getNumber());
+        flowEdges.add(target);
+        return;
+      }
     } else {
       assert jumpInstruction.isGoto() || jumpInstruction.isReturn() || jumpInstruction.isThrow();
     }