Skip to content

-ddump-minimal-imports for record fields is not minimal

Summary

When -ddump-minimal-imports is used for a module that uses a record field but not the corresponding type constructor, it generates an import of the form T(x) when it would suffice to import x.

Note [Overloaded field import] in GHC.Rename.Names addresses a special case of this situation, when DuplicateRecordFields is used. I think this is outdated though because it claims "when DuplicateRecordFields is enabled, field selectors are not in scope without their enclosing datatype" which is no longer true in general.

Steps to reproduce

module M where
  data T = MkT { x :: Int }

module N where
  import M
  foo = x

Now ghc -ddump-minimal-imports N.hs will generate N.imports containing import M (T(foo)).

Expected behavior

The N.imports file should contain import M (foo). Using this import is sufficient to compile the module.

Environment

  • GHC version used: 9.4.1
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information