cvs commit: fptools/ghc/compiler/parser ParseUtil.lhs

Jeff Lewis lewie@glass.cse.ogi.edu
Mon, 23 Apr 2001 12:34:57 -0700


lewie       2001/04/23 12:34:57 PDT

  Modified files:
    ghc/compiler/parser  ParseUtil.lhs 
  Log:
  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