From db8618e5fe7b7c61feb121c21f70445369aaea09 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 18 Feb 2026 22:41:17 -0600 Subject: [PATCH 1/2] Remove dead call_loop override check from has_overridden_loop() Since call_loop() is no longer virtual, the pointer-to-member comparison can never detect an override. Remove the dead code. --- esphome/core/component.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/esphome/core/component.cpp b/esphome/core/component.cpp index 47c4a70c0f..c64131cdbd 100644 --- a/esphome/core/component.cpp +++ b/esphome/core/component.cpp @@ -492,16 +492,14 @@ void Component::set_setup_priority(float priority) { bool Component::has_overridden_loop() const { #if defined(USE_HOST) || defined(CLANG_TIDY) - bool loop_overridden = true; - bool call_loop_overridden = true; + return true; #else #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpmf-conversions" bool loop_overridden = (void *) (this->*(&Component::loop)) != (void *) (&Component::loop); - bool call_loop_overridden = (void *) (this->*(&Component::call_loop)) != (void *) (&Component::call_loop); #pragma GCC diagnostic pop + return loop_overridden; #endif - return loop_overridden || call_loop_overridden; } PollingComponent::PollingComponent(uint32_t update_interval) : update_interval_(update_interval) {} From 168081c0f07e58e027a2a173db93079df5c593d3 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 18 Feb 2026 22:47:27 -0600 Subject: [PATCH 2/2] Rename call_loop() to call_loop_() for naming convention Non-virtual protected methods require trailing underscore per clang-tidy readability-identifier-naming. --- esphome/core/component.cpp | 6 +++--- esphome/core/component.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/esphome/core/component.cpp b/esphome/core/component.cpp index c64131cdbd..1ea34de517 100644 --- a/esphome/core/component.cpp +++ b/esphome/core/component.cpp @@ -204,7 +204,7 @@ bool Component::cancel_retry(uint32_t id) { #pragma GCC diagnostic pop } -void Component::call_loop() { this->loop(); } +void Component::call_loop_() { this->loop(); } void Component::call_setup() { this->setup(); } void Component::call_dump_config() { this->dump_config(); @@ -255,11 +255,11 @@ void Component::call() { case COMPONENT_STATE_SETUP: // State setup: Call first loop and set state to loop this->set_component_state_(COMPONENT_STATE_LOOP); - this->call_loop(); + this->call_loop_(); break; case COMPONENT_STATE_LOOP: // State loop: Call loop - this->call_loop(); + this->call_loop_(); break; case COMPONENT_STATE_FAILED: // State failed: Do nothing diff --git a/esphome/core/component.h b/esphome/core/component.h index 3f9116c75c..bbb4e84c19 100644 --- a/esphome/core/component.h +++ b/esphome/core/component.h @@ -286,7 +286,7 @@ class Component { protected: friend class Application; - void call_loop(); + void call_loop_(); virtual void call_setup(); virtual void call_dump_config();