cvs commit: fptools/ghc/compiler/parser ParseUtil.lhs
Mon, 23 Apr 2001 12:34:57 -0700
lewie 2001/04/23 12:34:57 PDT
Fix for infix decl w/ infix data constructor.
GHC was rejecting this:
infix 2 |-
ps |- q:qs = undefined
It parses the def as ((ps |- q) : qs), and doesn't have the fixity info
around at the point where it decides what is being defined. Lacking
anything else to go on, it decides that `:' is being defined.
Fortunately, we don't really need fixity info to parse this correctly,
as a data constructor is always the wrong choice ;-) The fix is to
dive into the left-hand-side until we find a non-data constructor.
This is naive - consider the case where `|-' has a high precedence.
Fortunately, someone clever put in a static check later on, presumably
at the point where we have all the fixity info, that rejects the definition
as bogus. Yeah!
Revision Changes Path
1.30 +5 -0 fptools/ghc/compiler/parser/ParseUtil.lhs