[project @ 2001-04-23 19:34:57 by lewie]
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!
Showing with 5 additions and 0 deletions