+ needed_rule (id, rule)
+ = not (isBuiltinRule rule)
+ -- We can't print builtin rules in interface files
+ -- Since they are built in, an importing module
+ -- will have access to them anyway
+
+ && not (any internal_id (varSetElems (ruleLhsFreeIds rule)))
+ -- Don't export a rule whose LHS mentions an Id that
+ -- is completely internal (i.e. not visible to an
+ -- importing module)
+
+ internal_id id = isLocalId id && not (id `elemVarEnv` ext_ids)