diff --git a/Cabal-syntax/src/Language/Haskell/Extension.hs b/Cabal-syntax/src/Language/Haskell/Extension.hs
index 448b1d777c722da2ac7b76ceb388988617be907b..22082d6d0b3b8c663595eb3dbc292ec22f61c030 100644
--- a/Cabal-syntax/src/Language/Haskell/Extension.hs
+++ b/Cabal-syntax/src/Language/Haskell/Extension.hs
@@ -303,6 +303,9 @@ data KnownExtension
   | -- | Allow default instantiation of polymorphic types in more
     -- situations.
     ExtendedDefaultRules
+  | -- | Allow @default@ declarations to explicitly name the class and
+    -- be exported.
+    NamedDefaults
   | -- | Enable unboxed tuples.
     UnboxedTuples
   | -- | Enable @deriving@ for classes 'Data.Typeable.Typeable' and
diff --git a/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs b/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs
index 71653353f9fc8d2070fa90dd6b68a65dcb0f3443..2bc8e206666914b55ca91f79ea15ad0097879b5a 100644
--- a/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs
+++ b/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs
@@ -33,15 +33,15 @@ md5Check proxy md5Int = structureHash proxy @?= md5FromInteger md5Int
 md5CheckGenericPackageDescription :: Proxy GenericPackageDescription -> Assertion
 md5CheckGenericPackageDescription proxy = md5Check proxy
 #if MIN_VERSION_base(4,19,0)
-    0x5a48c6570cbcf96af4c51f38962e37b5
+    0x6639f65b143830a97e9c4f448b9cabb0
 #else
-    0xc5c0e54b95e651216e92db04c9cd4ecf
+    0x855933700dccfbcc1d642e3470c3702c
 #endif
 
 md5CheckLocalBuildInfo :: Proxy LocalBuildInfo -> Assertion
 md5CheckLocalBuildInfo proxy = md5Check proxy
 #if MIN_VERSION_base(4,19,0)
-    0x6d668de33d7b4d5df3830e65e6941373
+    0x2ae73730f60c7c947e2cb63c4aac1e54
 #else
-    0xcdf740970a7d37e5e7ca48ea5f4f25eb7
+    0x906cbfdef0bcdfe5734499cfabc615f5
 #endif
diff --git a/changelog.d/pr-9740 b/changelog.d/pr-9740
new file mode 100644
index 0000000000000000000000000000000000000000..c5a3b9a173ed761d87a5c01b8b0f0920f7dd14fa
--- /dev/null
+++ b/changelog.d/pr-9740
@@ -0,0 +1,9 @@
+synopsis: Add language extension NamedDefaults
+packages: Cabal-syntax
+prs: #9740
+
+description: {
+
+- adds support for the `NamedDefaults` language extension (GHC proposal #409)
+
+}
diff --git a/editors/vim/syntax/cabal.vim b/editors/vim/syntax/cabal.vim
index 2e6361ba9ccd2d2eff4c0daccb0fb072c5f18f58..119a5ccb76725f6d4569c7942490b34d58222642 100644
--- a/editors/vim/syntax/cabal.vim
+++ b/editors/vim/syntax/cabal.vim
@@ -221,6 +221,7 @@ syn keyword cabalExtension contained
   \ MultiParamTypeClasses
   \ MultiWayIf
   \ NPlusKPatterns
+  \ NamedDefaults
   \ NamedFieldPuns
   \ NamedWildCards
   \ NegativeLiterals
@@ -362,6 +363,7 @@ syn keyword cabalExtension contained
   \ NoMultiParamTypeClasses
   \ NoMultiWayIf
   \ NoNPlusKPatterns
+  \ NoNamedDefaults
   \ NoNamedFieldPuns
   \ NoNamedWildCards
   \ NoNegativeLiterals