diff --git a/cabal-gild.cabal b/cabal-gild.cabal
--- a/cabal-gild.cabal
+++ b/cabal-gild.cabal
@@ -11,7 +11,7 @@
 maintainer: Taylor Fausak
 name: cabal-gild
 synopsis: Formats package descriptions.
-version: 1.0.2.3
+version: 1.0.2.4
 
 source-repository head
   type: git
diff --git a/source/library/CabalGild/Action/EvaluatePragmas.hs b/source/library/CabalGild/Action/EvaluatePragmas.hs
--- a/source/library/CabalGild/Action/EvaluatePragmas.hs
+++ b/source/library/CabalGild/Action/EvaluatePragmas.hs
@@ -1,6 +1,7 @@
 module CabalGild.Action.EvaluatePragmas where
 
 import qualified CabalGild.Class.MonadWalk as MonadWalk
+import qualified CabalGild.Extra.FieldLine as FieldLine
 import qualified CabalGild.Extra.ModuleName as ModuleName
 import qualified CabalGild.Extra.Name as Name
 import qualified CabalGild.Extra.String as String
@@ -12,6 +13,7 @@
 import qualified Data.List.NonEmpty as NonEmpty
 import qualified Data.Maybe as Maybe
 import qualified Data.Set as Set
+import qualified Distribution.Compat.Lens as Lens
 import qualified Distribution.Fields as Fields
 import qualified Distribution.ModuleName as ModuleName
 import qualified Distribution.Parsec as Parsec
@@ -39,7 +41,7 @@
   Fields.Field [Comment.Comment a] ->
   m (Fields.Field [Comment.Comment a])
 field p f = case f of
-  Fields.Field n _ -> fmap (Maybe.fromMaybe f) . MaybeT.runMaybeT $ do
+  Fields.Field n fls -> fmap (Maybe.fromMaybe f) . MaybeT.runMaybeT $ do
     Monad.guard $ Set.member (Name.value n) relevantFieldNames
     comment <- hoistMaybe . Utils.safeLast $ Name.annotation n
     pragma <- hoistMaybe . Parsec.simpleParsecBS $ Comment.value comment
@@ -52,11 +54,17 @@
                 . FilePath.combine root
                 <$> NonEmpty.toList ds
         files <- Trans.lift . fmap mconcat $ traverse MonadWalk.walk directories
-        pure
-          . Fields.Field n
-          . fmap (ModuleName.toFieldLine [])
-          . Maybe.mapMaybe (toModuleName directories)
-          $ Maybe.mapMaybe (stripAnyExtension extensions) files
+        let comments = concatMap FieldLine.annotation fls
+            fieldLines =
+              zipWith ModuleName.toFieldLine (comments : repeat [])
+                . Maybe.mapMaybe (toModuleName directories)
+                $ Maybe.mapMaybe (stripAnyExtension extensions) files
+            -- This isn't great, but the comments have to go /somewhere/.
+            name =
+              if null fieldLines
+                then Lens.over Name.annotationLens (comments <>) n
+                else n
+        pure $ Fields.Field name fieldLines
   Fields.Section n sas fs -> Fields.Section n sas <$> traverse (field p) fs
 
 -- | These are the names of the fields that can have this action applied to
diff --git a/source/library/CabalGild/Extra/Name.hs b/source/library/CabalGild/Extra/Name.hs
--- a/source/library/CabalGild/Extra/Name.hs
+++ b/source/library/CabalGild/Extra/Name.hs
@@ -1,10 +1,15 @@
 module CabalGild.Extra.Name where
 
+import qualified Distribution.Compat.Lens as Lens
 import qualified Distribution.Fields as Fields
 
 -- | Extracts the annotation from the given 'Fields.Name'.
 annotation :: Fields.Name a -> a
 annotation (Fields.Name x _) = x
+
+-- | A lens for the 'annotation'.
+annotationLens :: Lens.Lens' (Fields.Name a) a
+annotationLens f s = fmap (\a -> Fields.Name a $ value s) . f $ annotation s
 
 -- | Extracts the value from the given 'Fields.Name'.
 value :: Fields.Name a -> Fields.FieldName
diff --git a/source/test-suite/Main.hs b/source/test-suite/Main.hs
--- a/source/test-suite/Main.hs
+++ b/source/test-suite/Main.hs
@@ -799,6 +799,12 @@
       "library\n -- cabal-gild: discover .\n exposed-modules:"
       "library\n  -- cabal-gild: discover .\n  exposed-modules:\n    M\n    N\n"
 
+  Hspec.it "discovers no modules" $ do
+    expectDiscover
+      [(".", [])]
+      "library\n -- cabal-gild: discover .\n exposed-modules:"
+      "library\n  -- cabal-gild: discover .\n  exposed-modules:\n"
+
   Hspec.it "discovers a .lhs file" $ do
     expectDiscover
       [(".", ["M.lhs"])]
@@ -885,6 +891,24 @@
       [("d", ["M.hs"]), ("e", ["N.hs"])]
       "library\n -- cabal-gild: discover d e\n exposed-modules:"
       "library\n  -- cabal-gild: discover d e\n  exposed-modules:\n    M\n    N\n"
+
+  Hspec.it "retains comments when discovering" $ do
+    expectDiscover
+      [(".", ["M.hs"])]
+      "library\n -- cabal-gild: discover .\n exposed-modules:\n  -- c\n  N"
+      "library\n  -- cabal-gild: discover .\n  exposed-modules:\n    -- c\n    M\n"
+
+  Hspec.it "concatenates comments when discovering" $ do
+    expectDiscover
+      [(".", ["M.hs"])]
+      "library\n -- cabal-gild: discover .\n exposed-modules:\n  -- c\n  N\n  -- d\n  O"
+      "library\n  -- cabal-gild: discover .\n  exposed-modules:\n    -- c\n    -- d\n    M\n"
+
+  Hspec.it "retains comments even when no modules are discovered" $ do
+    expectDiscover
+      [(".", [])]
+      "library\n -- cabal-gild: discover .\n exposed-modules:\n  -- c\n  N"
+      "library\n  -- c\n  -- cabal-gild: discover .\n  exposed-modules:\n"
 
   Hspec.it "parses an empty brace section" $ do
     expectGilded
