effectiveRequires property

Set<Role<Object>> get effectiveRequires

The roles the module requires, including those its kind implies, the role of its variants, and those the roles it provides require.

It goes one level deep: the roles a required role requires in turn are the pipeline's concern, not the module's, so the module gets no access to them.

Implementation

Set<Role> get effectiveRequires => {
      ...requires,
      ...kind.impliedRequires,
      if (variants != null) variants!.role,
      for (final role in provides) ...role.requires,
    }..removeAll(provides);