Add SAT solver timeout to inference, and correctly report timeouts/errors.

PiperOrigin-RevId: 565385711
Change-Id: I365edc2f5637a488d703f370d12e537acd0ab3ac
diff --git a/nullability/inference/collect_evidence.cc b/nullability/inference/collect_evidence.cc
index d2a6a64..3505d0c 100644
--- a/nullability/inference/collect_evidence.cc
+++ b/nullability/inference/collect_evidence.cc
@@ -296,7 +296,7 @@
   if (!ControlFlowContext) return ControlFlowContext.takeError();
 
   DataflowAnalysisContext AnalysisContext(
-      std::make_unique<dataflow::WatchedLiteralsSolver>());
+      std::make_unique<dataflow::WatchedLiteralsSolver>(100000));
   Environment Environment(AnalysisContext, *Func);
   PointerNullabilityAnalysis Analysis(
       Decl.getDeclContext()->getParentASTContext());
@@ -312,19 +312,15 @@
     }
   }
 
-  std::vector<Evidence> AllEvidence;
-  llvm::Expected<std::vector<std::optional<
-      dataflow::DataflowAnalysisState<PointerNullabilityLattice>>>>
-      BlockToOutputStateOrError = dataflow::runDataflowAnalysis(
-          *ControlFlowContext, Analysis, Environment,
-          [&](const CFGElement &Element,
-              const dataflow::DataflowAnalysisState<PointerNullabilityLattice>
-                  &State) {
-            collectEvidenceFromElement(InferrableSlots, Element, State.Env,
-                                       Emit);
-          });
-
-  return llvm::Error::success();
+  return dataflow::runDataflowAnalysis(
+             *ControlFlowContext, Analysis, Environment,
+             [&](const CFGElement &Element,
+                 const dataflow::DataflowAnalysisState<
+                     PointerNullabilityLattice> &State) {
+               collectEvidenceFromElement(InferrableSlots, Element, State.Env,
+                                          Emit);
+             })
+      .takeError();
 }
 
 void collectEvidenceFromTargetDeclaration(