@@ -504,7 +504,7 @@ class CheckerFrontend {
504
504
assert (!Name && " Checker part registered twice!" );
505
505
Name = Mgr.getCurrentCheckerName ();
506
506
}
507
- bool isEnabled () const { return static_cast < bool >( Name); }
507
+ bool isEnabled () const { return Name. has_value ( ); }
508
508
CheckerNameRef getName () const { return *Name; }
509
509
};
510
510
@@ -529,17 +529,6 @@ class CheckerBase : public CheckerFrontend, public CheckerBackend {
529
529
StringRef getTagDescription () const override ;
530
530
};
531
531
532
- // Template magic to implement the static method `_register()` which registers
533
- // the `Checker` or `CheckerFamily` for all the implemented callbacks.
534
- template <typename CHECKER, typename CHECK1, typename ... CHECKs>
535
- static void registerImpl (CHECKER *Chk, CheckerManager &Mgr) {
536
- CHECK1::_register (Chk, Mgr);
537
- registerImpl<CHECKER, CHECKs...>(Chk, Mgr);
538
- }
539
-
540
- template <typename CHECKER>
541
- static void registerImpl (CHECKER *Chk, CheckerManager &Mgr) {}
542
-
543
532
// / Simple checker classes that implement one frontend (i.e. checker name)
544
533
// / should derive from this template and specify all the implemented callbacks
545
534
// / (i.e. classes like `check::PreStmt` or `eval::Call`) as template arguments
@@ -549,7 +538,7 @@ class Checker : public CheckerBase, public CHECKs... {
549
538
public:
550
539
template <typename CHECKER>
551
540
static void _register (CHECKER *Chk, CheckerManager &Mgr) {
552
- registerImpl<CHECKER, CHECKs...> (Chk, Mgr);
541
+ ( CHECKs::_register (Chk, Mgr), ... );
553
542
}
554
543
};
555
544
@@ -564,7 +553,7 @@ class CheckerFamily : public CheckerBackend, public CHECKs... {
564
553
public:
565
554
template <typename CHECKER>
566
555
static void _register (CHECKER *Chk, CheckerManager &Mgr) {
567
- registerImpl<CHECKER, CHECKs...> (Chk, Mgr);
556
+ ( CHECKs::_register (Chk, Mgr), ... );
568
557
}
569
558
};
570
559
0 commit comments