@@ -713,6 +713,8 @@ class EffectsHandlingWalker : public ASTWalker {
713
713
}
714
714
} else if (auto TE = dyn_cast<MakeTemporarilyEscapableExpr>(E)) {
715
715
recurse = asImpl ().checkTemporarilyEscapable (TE);
716
+ } else if (auto OSE = dyn_cast<ObjCSelectorExpr>(E)) {
717
+ recurse = asImpl ().checkObjCSelector (OSE);
716
718
}
717
719
718
720
// Error handling validation (via checkTopLevelEffects) happens after
@@ -2269,6 +2271,10 @@ class ApplyClassifier {
2269
2271
return ShouldRecurse;
2270
2272
}
2271
2273
2274
+ ShouldRecurse_t checkObjCSelector (ObjCSelectorExpr *E) {
2275
+ return ShouldNotRecurse;
2276
+ }
2277
+
2272
2278
ConditionalEffectKind checkExhaustiveDoBody (DoCatchStmt *S) {
2273
2279
// All errors thrown by the do body are caught, but any errors thrown
2274
2280
// by the catch bodies are bounded by the throwing kind of the do body.
@@ -2418,6 +2424,10 @@ class ApplyClassifier {
2418
2424
return ShouldRecurse;
2419
2425
}
2420
2426
2427
+ ShouldRecurse_t checkObjCSelector (ObjCSelectorExpr *E) {
2428
+ return ShouldNotRecurse;
2429
+ }
2430
+
2421
2431
void visitExprPre (Expr *expr) { return ; }
2422
2432
};
2423
2433
@@ -2535,6 +2545,10 @@ class ApplyClassifier {
2535
2545
return ShouldRecurse;
2536
2546
}
2537
2547
2548
+ ShouldRecurse_t checkObjCSelector (ObjCSelectorExpr *E) {
2549
+ return ShouldNotRecurse;
2550
+ }
2551
+
2538
2552
void visitExprPre (Expr *expr) { return ; }
2539
2553
};
2540
2554
@@ -4026,6 +4040,10 @@ class CheckEffectsCoverage : public EffectsHandlingWalker<CheckEffectsCoverage>
4026
4040
return ShouldRecurse;
4027
4041
}
4028
4042
4043
+ ShouldRecurse_t checkObjCSelector (ObjCSelectorExpr *E) {
4044
+ return ShouldNotRecurse;
4045
+ }
4046
+
4029
4047
ConditionalEffectKind checkExhaustiveDoBody (DoCatchStmt *S) {
4030
4048
// This is a context where errors are handled.
4031
4049
ContextScope scope (*this , CurContext.withHandlesErrors ());
0 commit comments