1. 10 Dec, 2003 3 commits
    • simonmar's avatar
      [project @ 2003-12-10 14:15:16 by simonmar] · 55042138
      simonmar authored
      Add accurate source location annotations to HsSyn
      -------------------------------------------------
      
      Every syntactic entity in HsSyn is now annotated with a SrcSpan, which
      details the exact beginning and end points of that entity in the
      original source file.  All honest compilers should do this, and it was
      about time GHC did the right thing.
      
      The most obvious benefit is that we now have much more accurate error
      messages; when running GHC inside emacs for example, the cursor will
      jump to the exact location of an error, not just a line somewhere
      nearby.  We haven't put a huge amount of effort into making sure all
      the error messages are accurate yet, so there could be some tweaking
      still needed, although the majority of messages I've seen have been
      spot-on.
      
      Error messages now contain a column number in addition to the line
      number, eg.
      
         read001.hs:25:10: Variable not in scope: `+#'
      
      To get the full text span info, use the new option -ferror-spans.  eg.
      
         read001.hs:25:10-11: Variable not in scope: `+#'
      
      I'm not sure whether we should do this by default.  Emacs won't
      understand the new error format, for one thing.
      
      In a more elaborate editor setting (eg. Visual Studio), we can arrange
      to actually highlight the subexpression containing an error.  Eventually
      this information will be used so we can find elements in the abstract
      syntax corresponding to text locations, for performing high-level editor
      functions (eg. "tell me the type of this expression I just highlighted").
      
      Performance of the compiler doesn't seem to be adversely affected.
      Parsing is still quicker than in 6.0.1, for example.
      
      Implementation:
      
      This was an excrutiatingly painful change to make: both Simon P.J. and
      myself have been working on it for the last three weeks or so.  The
      basic changes are:
      
       - a new datatype SrcSpan, which represents a beginning and end position
         in a source file.
      
       - To reduce the pain as much as possible, we also defined:
      
            data Located e = L SrcSpan e
      
       - Every datatype in HsSyn has an equivalent Located version.  eg.
      
            type LHsExpr id = Located (HsExpr id)
      
         and pretty much everywhere we used to use HsExpr we now use
         LHsExpr.  Believe me, we thought about this long and hard, and
         all the other options were worse :-)
      
      
      Additional changes/cleanups we made at the same time:
      
        - The abstract syntax for bindings is now less arcane.  MonoBinds
          and HsBinds with their built-in list constructors have gone away,
          replaced by HsBindGroup and HsBind (see HsSyn/HsBinds.lhs).
      
        - The various HsSyn type synonyms have now gone away (eg. RdrNameHsExpr,
          RenamedHsExpr, and TypecheckedHsExpr are now HsExpr RdrName,
          HsExpr Name, and HsExpr Id respectively).
      
        - Utilities over HsSyn are now collected in a new module HsUtils.
          More stuff still needs to be moved in here.
      
        - MachChar now has a real Char instead of an Int.  All GHC versions that
          can compile GHC now support 32-bit Chars, so this was a simplification.
      55042138
    • wolfgang's avatar
      [project @ 2003-12-10 11:35:24 by wolfgang] · 60ea58ab
      wolfgang authored
      PowerPC Linux support for registerised compilation and native code
      generation. (object splitting and GHCi are still unsupported).
      
      Code for other platforms is not affected, so MERGE TO STABLE.
      60ea58ab
    • wolfgang's avatar
      [project @ 2003-12-10 10:12:13 by wolfgang] · f8026808
      wolfgang authored
      PowerPC NCG bugfix: 2-byte data objects should be .short, not .byte
      
      MERGE TO STABLE
      f8026808
  2. 09 Dec, 2003 1 commit
  3. 06 Dec, 2003 2 commits
    • panne's avatar
      [project @ 2003-12-06 18:27:37 by panne] · 71284101
      panne authored
      Fixed typo in OpenAL handling.
      71284101
    • panne's avatar
      [project @ 2003-12-06 18:24:05 by panne] · b38fc90a
      panne authored
      Completely overhauled OpenGL/GLUT detection magic, making things more
      modular. Removed support for Mesa and non-HW-accelerated support on
      Windoze. Added initial support for handling missing glut.h header on
      MinGW/MSYS (to be completed). Tested on Cygwin (plain, -mno-cygwin,
      --without-x), MSYS/MinGW and SuSE 8.2 x86 Linux.
      b38fc90a
  4. 05 Dec, 2003 1 commit
  5. 02 Dec, 2003 1 commit
    • panne's avatar
      [project @ 2003-12-02 19:16:41 by panne] · e3dc3922
      panne authored
      Added the first pieces of an OpenAL binding which has been of my disk for quite
      a while. Note that it is built by default when a usable OpenAL library is found,
      but this could be disabled via --disable-openal on the configure commandline.
      Similar behaviour should probably be the default for all optional libraries.
      Note that I have created a new hierarchy rooted at "Sound", the existing
      hierarchies didn't fit.
      e3dc3922
  6. 28 Nov, 2003 2 commits
  7. 27 Nov, 2003 5 commits
  8. 26 Nov, 2003 2 commits
  9. 21 Nov, 2003 1 commit
  10. 18 Nov, 2003 3 commits
  11. 17 Nov, 2003 13 commits
  12. 16 Nov, 2003 1 commit
  13. 15 Nov, 2003 3 commits
  14. 14 Nov, 2003 2 commits