From ced2e7312b692e3f5402e4db6cfec390653a6a06 Mon Sep 17 00:00:00 2001
From: sheaf <sam.derbyshire@gmail.com>
Date: Thu, 25 Jan 2024 16:05:33 +0100
Subject: [PATCH] No shadowing warnings for NoFieldSelector fields

This commit ensures we don't emit shadowing warnings when a user
shadows a field defined with NoFieldSelectors.

Fixes #24381
---
 compiler/GHC/Rename/Utils.hs                               | 2 +-
 testsuite/tests/overloadedrecflds/should_compile/T24381.hs | 6 ++++++
 testsuite/tests/overloadedrecflds/should_compile/all.T     | 1 +
 3 files changed, 8 insertions(+), 1 deletion(-)
 create mode 100644 testsuite/tests/overloadedrecflds/should_compile/T24381.hs

diff --git a/compiler/GHC/Rename/Utils.hs b/compiler/GHC/Rename/Utils.hs
index a2e06cc188da..087f052ac775 100644
--- a/compiler/GHC/Rename/Utils.hs
+++ b/compiler/GHC/Rename/Utils.hs
@@ -182,7 +182,7 @@ checkShadowedOccs (global_env,local_env) get_loc_occ ns
         where
           (loc,occ) = get_loc_occ n
           mb_local  = lookupLocalRdrOcc local_env occ
-          gres      = lookupGRE global_env (LookupRdrName (mkRdrUnqual occ) (RelevantGREsFOS WantBoth))
+          gres      = lookupGRE global_env (LookupRdrName (mkRdrUnqual occ) (RelevantGREsFOS WantNormal))
                 -- Make an Unqualified RdrName and look that up, so that
                 -- we don't find any GREs that are in scope qualified-only
 
diff --git a/testsuite/tests/overloadedrecflds/should_compile/T24381.hs b/testsuite/tests/overloadedrecflds/should_compile/T24381.hs
new file mode 100644
index 000000000000..925d84894951
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_compile/T24381.hs
@@ -0,0 +1,6 @@
+{-# OPTIONS_GHC -Wname-shadowing #-}
+{-# LANGUAGE Haskell2010 #-} -- Necessary to avoid `NamedFieldPuns` from `GHC2021`.
+{-# LANGUAGE NoFieldSelectors #-}
+module M where
+data T = C { x :: () }
+f x = x
diff --git a/testsuite/tests/overloadedrecflds/should_compile/all.T b/testsuite/tests/overloadedrecflds/should_compile/all.T
index 696930ef2a8b..690b39a2b5ba 100644
--- a/testsuite/tests/overloadedrecflds/should_compile/all.T
+++ b/testsuite/tests/overloadedrecflds/should_compile/all.T
@@ -60,3 +60,4 @@ test('T23557', [extra_files(['T23557_aux.hs'])], multimod_compile, ['T23557', '-
 test('T24293', req_th, compile, [''])
 test('T24293b', req_th, compile, [''])
 test('T24293c', req_th, compile_fail, [''])
+test('T24381', normal, compile, [''])
-- 
GitLab