summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2019-05-07 08:56:30 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-05-08 02:01:54 -0400
commit0eeb4cfad732d0b9b278c2274cb6db9633f9d3b5 (patch)
treeb1a99dee78788fe2537f5c82570a4240196845fa
parent786e665b8dac5430c02089b39f7cb7572a5254d8 (diff)
downloadhaskell-0eeb4cfad732d0b9b278c2274cb6db9633f9d3b5.tar.gz
Fix #16632 by using the correct SrcSpan in checkTyClHdr
`checkTyClHdr`'s case for `HsTyVar` was grabbing the wrong `SrcSpan`, which lead to error messages pointing to the wrong location. Easily fixed.
-rw-r--r--compiler/parser/RdrHsSyn.hs4
-rw-r--r--testsuite/tests/indexed-types/should_compile/T16632.hs5
-rw-r--r--testsuite/tests/indexed-types/should_compile/T16632.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_compile/all.T1
4 files changed, 14 insertions, 2 deletions
diff --git a/compiler/parser/RdrHsSyn.hs b/compiler/parser/RdrHsSyn.hs
index 7c457f83d1..156931dc9f 100644
--- a/compiler/parser/RdrHsSyn.hs
+++ b/compiler/parser/RdrHsSyn.hs
@@ -955,8 +955,8 @@ checkTyClHdr is_cls ty
; let name = mkOccName tcClsName (starSym isUni)
; return (cL l (Unqual name), acc, fix, (ann ++ mkParensApiAnn lp)) }
- go l (HsTyVar _ _ (dL->L _ tc)) acc ann fix
- | isRdrTc tc = return (cL l tc, acc, fix, ann)
+ go _ (HsTyVar _ _ ltc@(dL->L _ tc)) acc ann fix
+ | isRdrTc tc = return (ltc, acc, fix, ann)
go _ (HsOpTy _ t1 ltc@(dL->L _ tc) t2) acc ann _fix
| isRdrTc tc = return (ltc, HsValArg t1:HsValArg t2:acc, Infix, ann)
go l (HsParTy _ ty) acc ann fix = goL ty acc (ann ++mkParensApiAnn l) fix
diff --git a/testsuite/tests/indexed-types/should_compile/T16632.hs b/testsuite/tests/indexed-types/should_compile/T16632.hs
new file mode 100644
index 0000000000..ab4f8dc7ed
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T16632.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE TypeFamilies #-}
+module T16632 where
+
+type family F a b c
+type instance F Char b Int = ()
diff --git a/testsuite/tests/indexed-types/should_compile/T16632.stderr b/testsuite/tests/indexed-types/should_compile/T16632.stderr
new file mode 100644
index 0000000000..d2eab5c6b5
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T16632.stderr
@@ -0,0 +1,6 @@
+
+T16632.hs:5:22: warning: [-Wunused-type-patterns]
+ Defined but not used on the right hand side: type variable ‘b’
+ |
+5 | type instance F Char b Int = ()
+ | ^
diff --git a/testsuite/tests/indexed-types/should_compile/all.T b/testsuite/tests/indexed-types/should_compile/all.T
index bc0b509e05..c268f2638d 100644
--- a/testsuite/tests/indexed-types/should_compile/all.T
+++ b/testsuite/tests/indexed-types/should_compile/all.T
@@ -286,3 +286,4 @@ test('T15711', normal, compile, ['-ddump-types'])
test('T15852', normal, compile, ['-ddump-types'])
test('T15764a', normal, compile, [''])
test('T15740a', normal, compile, [''])
+test('T16632', normal, compile, ['-Wunused-type-patterns -fdiagnostics-show-caret'])