[ ghc-Bugs-886199 ] LINE pragma syntax and happy

SourceForge.net noreply at sourceforge.net
Mon Feb 2 05:52:41 EST 2004


Bugs item #886199, was opened at 2004-01-28 13:20
Message generated for change (Comment added) made by simonmar
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=886199&group_id=8032

Category: Compiler (Parser)
Group: 6.2
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
>Assigned to: Simon Marlow (simonmar)
Summary: LINE pragma syntax and happy

Initial Comment:
From: kh at dcs.st-and.ac.uk

The LINE pragma syntax seems to have changed with ghc 6
-- happy-generated code now fails with an incomprehensible
error.

Upgrading happy may not be an option (system balance
is very delicate)!

Kevin


System: MacOS X.3 (Panther)
Machine: Apple Powerbook G4, 15.2", 1.25GHz, 512MB
GHC: 6.2
happy: 1.9

(but apparently other OSes and happy versions).

$ ghc -c foo.hs
GenericTemplate.hs:0: lexical error
$ cat foo.hs
module HumeParse where
{-# LINE 1 "GenericTemplate.hs" -}
$ ghc -c -v foo.hs
Glasgow Haskell Compiler, Version 6.2, for Haskell 98, 
compiled by GHC version 6.2
Using package config file: /usr/local/lib/ghc-6.2/
package.conf
==================== Packages 
====================
Package
   {name = "data",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
data"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSdata"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["haskell98", "lang", "util"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "rts",
    auto = False,
    import_dirs = [],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSrts"],
    extra_libraries = ["m"],
    include_dirs = ["/usr/local/lib/ghc-6.2/include"],
    c_includes = ["Stg.h"],
    package_deps = [],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts =
      ["-u",
       "_GHCziBase_Izh_static_info",
       "-u",
       "_GHCziBase_Czh_static_info",
       "-u",
       "_GHCziFloat_Fzh_static_info",
       "-u",
       "_GHCziFloat_Dzh_static_info",
       "-u",
       "_GHCziPtr_Ptr_static_info",
       "-u",
       "_GHCziWord_Wzh_static_info",
       "-u",
       "_GHCziInt_I8zh_static_info",
       "-u",
       "_GHCziInt_I16zh_static_info",
       "-u",
       "_GHCziInt_I32zh_static_info",
       "-u",
       "_GHCziInt_I64zh_static_info",
       "-u",
       "_GHCziWord_W8zh_static_info",
       "-u",
       "_GHCziWord_W16zh_static_info",
       "-u",
       "_GHCziWord_W32zh_static_info",
       "-u",
       "_GHCziWord_W64zh_static_info",
       "-u",
       "_GHCziStable_StablePtr_static_info",
       "-u",
       "_GHCziBase_Izh_con_info",
       "-u",
       "_GHCziBase_Czh_con_info",
       "-u",
       "_GHCziFloat_Fzh_con_info",
       "-u",
       "_GHCziFloat_Dzh_con_info",
       "-u",
       "_GHCziPtr_Ptr_con_info",
       "-u",
       "_GHCziPtr_FunPtr_con_info",
       "-u",
       "_GHCziStable_StablePtr_con_info",
       "-u",
       "_GHCziBase_False_closure",
       "-u",
       "_GHCziBase_True_closure",
       "-u",
       "_GHCziPack_unpackCString_closure",
       "-u",
       "_GHCziIOBase_stackOverflow_closure",
       "-u",
       "_GHCziIOBase_heapOverflow_closure",
       "-u",
       "_GHCziIOBase_NonTermination_closure",
       "-u",
       "_GHCziIOBase_BlockedOnDeadMVar_closure",
       "-u",
       "_GHCziIOBase_Deadlock_closure",
       "-u",
       "_GHCziWeak_runFinalizzerBatch_closure",
       "-u",
       "___stginit_Prelude"],
    framework_dirs = [],
    extra_frameworks = ["HaskellSupport"]}
Package
   {name = "base",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSbase"],
    extra_libraries = ["HSbase_cbits"],
    include_dirs = [],
    c_includes = ["HsBase.h"],
    package_deps = ["rts"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "haskell98",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HShaskell98"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "haskell-src",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HShaskell-src"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["base", "haskell98"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "network",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSnetwork"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = ["HsNet.h"],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "parsec",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSparsec"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "QuickCheck",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSQuickCheck"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "readline",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSreadline"],
    extra_libraries = ["readline", "ncurses"],
    include_dirs = [],
    c_includes = ["HsReadline.h"],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "OpenGL",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSOpenGL"],
    extra_libraries = ["HSOpenGL_cbits"],
    include_dirs = [],
    c_includes = ["HsOpenGL.h"],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = ["OpenGL"]}
Package
   {name = "GLUT",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSGLUT"],
    extra_libraries = ["HSGLUT_cbits", "objc"],
    include_dirs = [],
    c_includes = ["HsGLUT.h"],
    package_deps = ["base", "OpenGL"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = ["GLUT"]}
Package
   {name = "unix",
    auto = True,
    import_dirs = ["/usr/local/lib/ghc-6.2/imports"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSunix"],
    extra_libraries = ["HSunix_cbits"],
    include_dirs = [],
    c_includes = ["HsUnix.h"],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "lang",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
lang"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSlang"],
    extra_libraries = ["HSlang_cbits"],
    include_dirs = [],
    c_includes = ["HsLang.h"],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "concurrent",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
concurrent"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSconcurrent"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["base"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "posix",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
posix"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSposix"],
    extra_libraries = ["HSposix_cbits"],
    include_dirs = [],
    c_includes = ["HsPosix.h"],
    package_deps = ["lang", "unix"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "util",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
util"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSutil"],
    extra_libraries = ["HSutil_cbits"],
    include_dirs = [],
    c_includes = ["HsUtil.h"],
    package_deps =
      ["lang", "concurrent", "QuickCheck", "readline", 
"posix"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "text",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
text"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HStext"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["lang", "parsec"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "net",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
net"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HSnet"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["network"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}
Package
   {name = "hssource",
    auto = False,
    import_dirs = ["/usr/local/lib/ghc-6.2/hslibs-imports/
hssource"],
    source_dirs = [],
    library_dirs = ["/usr/local/lib/ghc-6.2"],
    hs_libraries = ["HShssource"],
    extra_libraries = [],
    include_dirs = [],
    c_includes = [],
    package_deps = ["haskell-src"],
    extra_ghc_opts = [],
    extra_cc_opts = [],
    extra_ld_opts = [],
    framework_dirs = [],
    extra_frameworks = []}


Hsc static flags: -static
*** Checking old interface for HumeParse:
*** Parser:
GenericTemplate.hs:0: lexical error
*** Deleting temp files
Deleting: /tmp/ghc18750.s
Warning: deleting non-existent /tmp/ghc18750.s



----------------------------------------------------------------------

>Comment By: Simon Marlow (simonmar)
Date: 2004-02-02 10:52

Message:
Logged In: YES 
user_id=48280

GHC <= 4.08 generated LINE pragmas of the form

  {-# LINE "foo.hs" 43 -}

(note the missing # in the closing sequence).  Happy
versions compiled with an old GHC might have pre-processed
templates containing LINE pragmas like this, leading to
difficulties because recent GHCs don't accept these LINE
pragmas.

I've changed GHC so that it'll accept these in the future,
but for now the workaround is either (1) compile up a recent
Happy, or (2) just go and edit the templates in your Happy
installation to add the missing '#'.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=886199&group_id=8032


More information about the Glasgow-haskell-bugs mailing list