@@ -477,7 +477,7 @@ def __init_subclass__(cls, mixin: bool = False, **kwargs):
477477 cls ._check_overridden_methods ()
478478
479479 # Computed vars should not shadow builtin state props.
480- cls ._check_overriden_basevars ()
480+ cls ._check_overridden_basevars ()
481481
482482 # Reset subclass tracking for this class.
483483 cls .class_subclasses = set ()
@@ -505,6 +505,7 @@ def __init_subclass__(cls, mixin: bool = False, **kwargs):
505505
506506 # Get computed vars.
507507 computed_vars = cls ._get_computed_vars ()
508+ cls ._check_overridden_computed_vars ()
508509
509510 new_backend_vars = {
510511 name : value
@@ -718,7 +719,7 @@ def _check_overridden_methods(cls):
718719 )
719720
720721 @classmethod
721- def _check_overriden_basevars (cls ):
722+ def _check_overridden_basevars (cls ):
722723 """Check for shadow base vars and raise error if any.
723724
724725 Raises:
@@ -730,6 +731,22 @@ def _check_overriden_basevars(cls):
730731 f"The computed var name `{ computed_var_ ._var_name } ` shadows a base var in { cls .__module__ } .{ cls .__name__ } ; use a different name instead"
731732 )
732733
734+ @classmethod
735+ def _check_overridden_computed_vars (cls ) -> None :
736+ """Check for shadow computed vars and raise error if any.
737+
738+ Raises:
739+ NameError: When a computed var shadows another.
740+ """
741+ for name , cv in cls .__dict__ .items ():
742+ if not isinstance (cv , (ComputedVar , ImmutableComputedVar )):
743+ continue
744+ name = cv ._var_name
745+ if name in cls .inherited_vars or name in cls .inherited_backend_vars :
746+ raise NameError (
747+ f"The computed var name `{ cv ._var_name } ` shadows a var in { cls .__module__ } .{ cls .__name__ } ; use a different name instead"
748+ )
749+
733750 @classmethod
734751 def get_skip_vars (cls ) -> set [str ]:
735752 """Get the vars to skip when serializing.
0 commit comments