Fix Trac #2478
authorsimonpj@microsoft.com <unknown>
Fri, 1 Aug 2008 12:22:23 +0000 (12:22 +0000)
committersimonpj@microsoft.com <unknown>
Fri, 1 Aug 2008 12:22:23 +0000 (12:22 +0000)
A minor glitch that shows up only when a data constructor has *both* a
"stupid theta" in the data type decl, *and* an existential type variable.

compiler/typecheck/TcPat.lhs

index 6a30754..2e86583 100644 (file)
@@ -799,7 +799,9 @@ addDataConStupidTheta data_con inst_tys
        -- The origin should always report "occurrence of C"
        -- even when C occurs in a pattern
     stupid_theta = dataConStupidTheta data_con
-    tenv = zipTopTvSubst (dataConUnivTyVars data_con) inst_tys
+    tenv = mkTopTvSubst (dataConUnivTyVars data_con `zip` inst_tys)
+        -- NB: inst_tys can be longer than the univ tyvars
+        --     because the constructor might have existentials
     inst_theta = substTheta tenv stupid_theta
 \end{code}