Skip to content
  • Simon Peyton Jones's avatar
    Do not filter the type envt after each GHCi stmt · afaceeff
    Simon Peyton Jones authored
    Fixes Trac #925
    
    A new comment in TcRnDriver in tcRnStmt reads thus: 
    
    At one stage I removed any shadowed bindings from the type_env;
    they are inaccessible but might, I suppose, cause a space leak if we leave them there.
    However, with Template Haskell they aren't necessarily inaccessible.  Consider this
    GHCi session
    	 Prelude> let f n = n * 2 :: Int
    	 Prelude> fName <- runQ [| f |]
    	 Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
    	 14
    	 Prelude> let f n = n * 3 :: Int
    	 Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
    In the last line we use 'fName', which resolves to the *first* 'f'
    in scope. If we delete it from the type env, GHCi crashes because
    it doesn't expect that.
    
    afaceeff