Add non-flow-sensitive support for array types Nullability vector extraction and printing Transfer on array indexing (this doesn't involve array types, apparently!) PiperOrigin-RevId: 528767784
diff --git a/nullability/pointer_nullability_analysis.cc b/nullability/pointer_nullability_analysis.cc index bacba41..93b735b 100644 --- a/nullability/pointer_nullability_analysis.cc +++ b/nullability/pointer_nullability_analysis.cc
@@ -603,6 +603,16 @@ }); } +void transferNonFlowSensitiveArraySubscriptExpr( + const ArraySubscriptExpr* ASE, const MatchFinder::MatchResult& MR, + TransferState<PointerNullabilityLattice>& State) { + computeNullability(ASE, State, [&]() { + auto BaseNullability = getNullabilityForChild(ASE->getBase(), State); + CHECK(ASE->getBase()->getType()->isAnyPointerType()); + return BaseNullability.slice(1).vec(); + }); +} + auto buildNonFlowSensitiveTransferer() { return CFGMatchSwitchBuilder<TransferState<PointerNullabilityLattice>>() .CaseOfCFGStmt<DeclRefExpr>(ast_matchers::declRefExpr(), @@ -622,6 +632,9 @@ transferNonFlowSensitiveUnaryOperator) .CaseOfCFGStmt<CXXNewExpr>(ast_matchers::cxxNewExpr(), transferNonFlowSensitiveNewExpr) + .CaseOfCFGStmt<ArraySubscriptExpr>( + ast_matchers::arraySubscriptExpr(), + transferNonFlowSensitiveArraySubscriptExpr) .Build(); }