Skip to content
  • Jeff Lewis's avatar
    [project @ 2001-04-23 19:34:57 by lewie] · b5f00004
    Jeff Lewis authored
    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!
    b5f00004