diff --git a/testsuite/tests/th/T7092.hs b/testsuite/tests/th/T7092.hs new file mode 100644 index 0000000000000000000000000000000000000000..78c4a78a577aab526278a0cde28b1fdd66019292 --- /dev/null +++ b/testsuite/tests/th/T7092.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE TemplateHaskell #-} +{-# OPTIONS_GHC -fwarn-name-shadowing #-} + +-- Should not produce a name-shadowing warning (GHC 7.4 did) + +module T7092 where + +import T7092a + +blah = $(code) diff --git a/testsuite/tests/th/T7092a.hs b/testsuite/tests/th/T7092a.hs new file mode 100644 index 0000000000000000000000000000000000000000..abe7931b51d51aaf1f7603c76365388c9dc19277 --- /dev/null +++ b/testsuite/tests/th/T7092a.hs @@ -0,0 +1,12 @@ +{-# LANGUAGE TemplateHaskell #-} +module T7092a where + +import Language.Haskell.TH + +code :: Q Exp +code = do + n1 <- newName "foo" + n2 <- newName "foo" + letE [valD (varP n1) (normalB [| (1 :: Int) |]) []] + $ letE [valD (varP n2) (normalB [| (2 :: Int) |]) []] + $ appE (appE [| ((+) :: Int -> Int -> Int)|] (varE n1)) (varE n2) diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T index 1f0dee0069a9d535756d9331d95f5f0db05dde9f..46cdc598d85cff012cfff1b2a67932197eef6c7e 100644 --- a/testsuite/tests/th/all.T +++ b/testsuite/tests/th/all.T @@ -250,3 +250,5 @@ test('T7064', extra_clean(['T7064a.hi', 'T7064a.o']), multimod_compile_and_run, ['T7064.hs', '-v0']) +test('T7092', extra_clean(['T7092a.hi','T7092a.o']), + multimod_compile, ['T7092','-v0'])