From e12e19567024ade8643918a88cc22a74d879afdb Mon Sep 17 00:00:00 2001
From: simonm <unknown>
Date: Thu, 4 Dec 1997 11:02:12 +0000
Subject: [PATCH] [project @ 1997-12-04 11:02:12 by simonm] fix huge bug in
 extractHsTyVars - the list returned wasn't always a set (i.e. it could have
 duplicates).  This screwed up support for universal quantification in a
 couple of places.

---
 ghc/compiler/reader/RdrHsSyn.lhs | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/ghc/compiler/reader/RdrHsSyn.lhs b/ghc/compiler/reader/RdrHsSyn.lhs
index 053915204f13..22827fa4e1d8 100644
--- a/ghc/compiler/reader/RdrHsSyn.lhs
+++ b/ghc/compiler/reader/RdrHsSyn.lhs
@@ -127,16 +127,16 @@ extractHsTyVars ty
 
 	-- In (All a => a -> a) -> Int, there are no free tyvars
 	-- We just assume that we quantify over all type variables mentioned in the context.
-    get (HsPreForAllTy ctxt ty)  acc = filter (`notElem` locals) (get ty [])
-				       ++ acc
-				     where
-				       locals = foldr (get . snd) [] ctxt
+    get (HsPreForAllTy ctxt ty)  acc = 
+		foldr insert acc (filter (`notElem` locals) (get ty []))
+	    where
+		locals = foldr (get . snd) [] ctxt
 
-    get (HsForAllTy tvs ctxt ty) acc = (filter (`notElem` locals) $
+    get (HsForAllTy tvs ctxt ty) acc = 
+		foldr insert acc (filter (`notElem` locals) $
 				        foldr (get . snd) (get ty []) ctxt)
-				       ++ acc
-				     where
-				       locals = map getTyVarName tvs
+	     where
+	       	locals = map getTyVarName tvs
 
     insert (Qual _ _ _)	      acc = acc
     insert (Unqual (TCOcc _)) acc = acc
-- 
GitLab