projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
28b45c5
)
Produce an error message, not a crash, for HsOpApp with non-var operator
author
simonpj@microsoft.com
<unknown>
Wed, 12 Jan 2011 17:07:19 +0000
(17:07 +0000)
committer
simonpj@microsoft.com
<unknown>
Wed, 12 Jan 2011 17:07:19 +0000
(17:07 +0000)
Fixes Trac #4877.
compiler/rename/RnExpr.lhs
patch
|
blob
|
history
diff --git
a/compiler/rename/RnExpr.lhs
b/compiler/rename/RnExpr.lhs
index
4b5071f
..
6d425d0
100644
(file)
--- a/
compiler/rename/RnExpr.lhs
+++ b/
compiler/rename/RnExpr.lhs
@@
-131,8
+131,8
@@
rnExpr (HsApp fun arg)
rnLExpr arg `thenM` \ (arg',fvArg) ->
return (HsApp fun' arg', fvFun `plusFV` fvArg)
rnLExpr arg `thenM` \ (arg',fvArg) ->
return (HsApp fun' arg', fvFun `plusFV` fvArg)
-rnExpr (OpApp e1 (L op_loc (HsVar op_rdr)) _ e2)
- = do { (e1', fv_e1) <- rnLExpr e1
+rnExpr (OpApp e1 (L op_loc (HsVar op_rdr)) _ e2)
+ = do { (e1', fv_e1) <- rnLExpr e1
; (e2', fv_e2) <- rnLExpr e2
; op_name <- setSrcSpan op_loc (lookupOccRn op_rdr)
; (op', fv_op) <- finishHsVar op_name
; (e2', fv_e2) <- rnLExpr e2
; op_name <- setSrcSpan op_loc (lookupOccRn op_rdr)
; (op', fv_op) <- finishHsVar op_name
@@
-146,6
+146,10
@@
rnExpr (OpApp e1 (L op_loc (HsVar op_rdr)) _ e2)
; fixity <- lookupFixityRn op_name
; final_e <- mkOpAppRn e1' (L op_loc op') fixity e2'
; return (final_e, fv_e1 `plusFV` fv_op `plusFV` fv_e2) }
; fixity <- lookupFixityRn op_name
; final_e <- mkOpAppRn e1' (L op_loc op') fixity e2'
; return (final_e, fv_e1 `plusFV` fv_op `plusFV` fv_e2) }
+rnExpr (OpApp _ other_op _ _)
+ = failWith (vcat [ hang (ptext (sLit "Operator application with a non-variable operator:"))
+ 2 (ppr other_op)
+ , ptext (sLit "(Probably resulting from a Template Haskell splice)") ])
rnExpr (NegApp e _)
= rnLExpr e `thenM` \ (e', fv_e) ->
rnExpr (NegApp e _)
= rnLExpr e `thenM` \ (e', fv_e) ->