@@ -796,6 +796,8 @@ def feed(self, pkg):
796796 if eclass := self .get_eclass (name , pkg ):
797797 assigned_vars [name ] = eclass
798798
799+ # eclasses which might be used indirectly, so we won't trigger UnusedInherits
800+ weak_used_eclasses = set ()
799801 # match captured commands with eclasses
800802 used = defaultdict (list )
801803 for node , _ in bash .cmd_query .captures (pkg .tree .root_node ):
@@ -806,13 +808,19 @@ def feed(self, pkg):
806808 eclasses = call .split ()[1 :]
807809 if not pkg .inherited .intersection (eclasses ):
808810 conditional .update (eclasses )
811+ continue
809812 # Also ignore vars since any used in arithmetic expansions, i.e.
810813 # $((...)), are captured as commands.
811814 elif name not in self .eapi_funcs [pkg .eapi ] | assigned_vars .keys () | defined_funcs :
812815 lineno , _colno = node .start_point
813816 if eclass := self .get_eclass (name , pkg ):
814817 used [eclass ].append ((lineno + 1 , name , call .split ("\n " , 1 )[0 ]))
815818
819+ for arg in node .children [1 :]:
820+ arg_name = pkg .node_str (arg ).strip ("'\" " )
821+ if eclass := self .get_eclass (arg_name , pkg ):
822+ weak_used_eclasses .add (eclass )
823+
816824 # match captured variables with eclasses
817825 for node , _ in bash .var_query .captures (pkg .tree .root_node ):
818826 name = pkg .node_str (node )
@@ -828,7 +836,7 @@ def feed(self, pkg):
828836 # missing inherits
829837 missing = used .keys () - pkg .inherit - indirect_allowed - conditional
830838
831- unused = set (pkg .inherit ) - used .keys () - set (assigned_vars .values ())
839+ unused = set (pkg .inherit ) - used .keys () - set (assigned_vars .values ()) - weak_used_eclasses
832840 # remove eclasses that use implicit phase functions
833841 if unused and pkg .defined_phases :
834842 phases = [pkg .eapi .phases [x ] for x in pkg .defined_phases ]
0 commit comments