Skip to content

name shadowing warnings by record pattern synonyms + RecordWildCards or NamedFieldPuns

When I use PatternSynonyms + RecordWildCards/NamedFieldPuns, I get name shadowing warnings. I am hoping that these warnings don't trigger in the below case.

{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE NamedFieldPuns  #-}

module TestPatternSynonyms where

pattern Tuple :: a -> b -> (a, b)
pattern Tuple{x, y} = (x, y)

{-# COMPLETE Tuple #-}

f :: (a, b) -> a
f Tuple{x} = x
{- warning: [-Wname-shadowing]
    This binding for ‘x’ shadows the existing binding
-}

g :: (Int, Int) -> Int
g Tuple{..} = x + y
{- warning: [-Wname-shadowing]
    This binding for ‘x’ shadows the existing binding 
    This binding for ‘y’ shadows the existing binding
-}
Trac metadata
Trac field Value
Version 8.2.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information