diff --git a/Cabal/Distribution/FieldGrammar/Class.hs b/Cabal/Distribution/FieldGrammar/Class.hs
index e6965125d337f782746a20aadad0c0ad5ebaffe0..ea78db49108be9c467a3070adfca7c3e67f70059 100644
--- a/Cabal/Distribution/FieldGrammar/Class.hs
+++ b/Cabal/Distribution/FieldGrammar/Class.hs
@@ -146,6 +146,19 @@ class
         -> g s a
         -> g s a
 
+    -- | Annotate field with since spec-version.
+    -- This is used to recognise, but warn about the field.
+    -- It is used to process @other-extensions@ field.
+    --
+    -- Default implementation is to not warn.
+    --
+    -- @since 3.4.0.0
+    availableSinceWarn
+        :: CabalSpecVersion  -- ^ spec version
+        -> g s a
+        -> g s a
+    availableSinceWarn _ = id
+
 -- | Field which can be defined at most once.
 uniqueField
     :: (FieldGrammar c g, c (Identity a))
diff --git a/Cabal/Distribution/FieldGrammar/Parsec.hs b/Cabal/Distribution/FieldGrammar/Parsec.hs
index d0a64eb7f5918191defef596cd8eb33de0b54302..085378f0c61c454af978d792e4ecc744685f8139 100644
--- a/Cabal/Distribution/FieldGrammar/Parsec.hs
+++ b/Cabal/Distribution/FieldGrammar/Parsec.hs
@@ -287,6 +287,20 @@ instance FieldGrammar Parsec ParsecFieldGrammar where
 
                 pure def
 
+    availableSinceWarn vs (ParsecFG names prefixes parser) = ParsecFG names prefixes parser'
+      where
+        parser' v values
+            | v >= vs = parser v values
+            | otherwise = do
+                let unknownFields = Map.intersection values $ Map.fromSet (const ()) names
+                for_ (Map.toList unknownFields) $ \(name, fields) ->
+                    for_ fields $ \(MkNamelessField pos _) ->
+                        parseWarning pos PWTUnknownField $
+                            "The field " <> show name <> " is available only since the Cabal specification version " ++ showCabalSpecVersion vs ++ "."
+
+                parser v values
+
+
     -- todo we know about this field
     deprecatedSince vs msg (ParsecFG names prefixes parser) = ParsecFG names prefixes parser'
       where
diff --git a/Cabal/Distribution/PackageDescription/FieldGrammar.hs b/Cabal/Distribution/PackageDescription/FieldGrammar.hs
index 65985bca4071925280bc24c28af4c94a007ffc1a..c2efd6d2b7043c2f3aab742b1e824a81c416dda6 100644
--- a/Cabal/Distribution/PackageDescription/FieldGrammar.hs
+++ b/Cabal/Distribution/PackageDescription/FieldGrammar.hs
@@ -538,7 +538,7 @@ buildInfoFieldGrammar = BuildInfo
     <*> monoidalFieldAla "default-extensions"   (alaList' FSep MQuoted)       L.defaultExtensions
         ^^^ availableSince CabalSpecV1_10 []
     <*> monoidalFieldAla "other-extensions"     formatOtherExtensions         L.otherExtensions
-        ^^^ availableSince CabalSpecV1_10 []
+        ^^^ availableSinceWarn CabalSpecV1_10
     <*> monoidalFieldAla "extensions"           (alaList' FSep MQuoted)       L.oldExtensions
         ^^^ deprecatedSince CabalSpecV1_12
             "Please use 'default-extensions' or 'other-extensions' fields."
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Fail/M.hs b/cabal-testsuite/PackageTests/Regression/T7234/Fail/M.hs
new file mode 100644
index 0000000000000000000000000000000000000000..ef2ad8bb3fc59231804deee3df6b6a6f5c01b528
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Fail/M.hs
@@ -0,0 +1 @@
+module M where
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.out b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.out
new file mode 100644
index 0000000000000000000000000000000000000000..6dfd0a150db26898bf4389a0936502b926d50b29
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.out
@@ -0,0 +1,7 @@
+# cabal v2-build
+Resolving dependencies...
+cabal: Could not resolve dependencies:
+[__0] next goal: issue7234 (user goal)
+[__0] rejecting: issue7234-0 (conflict: requires HopefullyThisExtensionWontOccur)
+[__0] fail (backjumping, conflict set: issue7234)
+After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: issue7234 (2)
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.project b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.project
new file mode 100644
index 0000000000000000000000000000000000000000..e6fdbadb4398bc0e333947b5fb8021778310d943
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.project
@@ -0,0 +1 @@
+packages: .
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.test.hs b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..6a83874e8661fb8bfe9d727046f73befa6af2fef
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+main = cabalTest $
+  -- this should fail,
+  -- none of GHC have extension declared in other-extensions
+  fails $ cabal "v2-build" ["all"]
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Fail/issue7234.cabal b/cabal-testsuite/PackageTests/Regression/T7234/Fail/issue7234.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..7f94105dd011155ee6820737114576000bf0861b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Fail/issue7234.cabal
@@ -0,0 +1,14 @@
+cabal-version: >=1.8
+name:          issue7234
+version:       0
+synopsis:      Old cabal-version package
+description:   But we have other-extensions to guide solver
+author:        Oleg Grenrus
+category:      Tests
+maintainer:    oleg.grenrus@iki.fi
+build-type:    Simple
+
+library
+  build-depends:    base <5
+  other-extensions: HopefullyThisExtensionWontOccur
+  exposed-modules:  M
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Success/M.hs b/cabal-testsuite/PackageTests/Regression/T7234/Success/M.hs
new file mode 100644
index 0000000000000000000000000000000000000000..ef2ad8bb3fc59231804deee3df6b6a6f5c01b528
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Success/M.hs
@@ -0,0 +1 @@
+module M where
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.out b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.out
new file mode 100644
index 0000000000000000000000000000000000000000..347976aa80750b8701aad841829b223ebe27eb4c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.out
@@ -0,0 +1,9 @@
+# cabal v2-build
+Resolving dependencies...
+Build profile: -w ghc-<GHCVER> -O1
+In order, the following will be built:
+ - issue7234-0 (lib) (first run)
+Warning: issue7234.cabal:14:3: The field "other-extensions" is available only since the Cabal specification version 1.10.
+Configuring library for issue7234-0..
+Preprocessing library for issue7234-0..
+Building library for issue7234-0..
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.project b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.project
new file mode 100644
index 0000000000000000000000000000000000000000..e6fdbadb4398bc0e333947b5fb8021778310d943
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.project
@@ -0,0 +1 @@
+packages: .
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.test.hs b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..caaeb22728d699b14b6875bb0b0b8a72fe4326e5
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.test.hs
@@ -0,0 +1,4 @@
+import Test.Cabal.Prelude
+main = cabalTest $
+  -- this should not fail, just warn.
+   cabal "v2-build" ["all"]
diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Success/issue7234.cabal b/cabal-testsuite/PackageTests/Regression/T7234/Success/issue7234.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..dad34460df84769de7ced05b95679be464c55e4e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Regression/T7234/Success/issue7234.cabal
@@ -0,0 +1,15 @@
+cabal-version: >=1.8
+name:          issue7234
+version:       0
+synopsis:      Old cabal-version package
+description:   But we have other-extensions to guide solver
+author:        Oleg Grenrus
+category:      Tests
+maintainer:    oleg.grenrus@iki.fi
+build-type:    Simple
+
+library
+  build-depends:    base <5
+  -- this extension is in virtually all GHCs, but there should be a warning
+  other-extensions: GADTs
+  exposed-modules:  M