[project @ 1998-02-10 13:47:44 by simonm]
authorsimonm <unknown>
Tue, 10 Feb 1998 13:47:44 +0000 (13:47 +0000)
committersimonm <unknown>
Tue, 10 Feb 1998 13:47:44 +0000 (13:47 +0000)
Don't do layout processing inside {-# ... #-}.

The fix is horrible, and should probably be redone in a cleaner way at
some point.

ghc/compiler/parser/hslexer.flex

index 432625a..ef02cfd 100644 (file)
@@ -315,28 +315,34 @@ NL                        [\n\r]
 
 <Code,GlaExt>"{-#"{WS}*"INTERFACE" {
                              PUSH_STATE(UserPragma);
+                             forgetindent = TRUE;
                              RETURN(INTERFACE_UPRAGMA);
                            }
 <Code,GlaExt>"{-#"{WS}*"SPECIALI"[SZ]E {
                              PUSH_STATE(UserPragma);
+                             forgetindent = TRUE;
                              RETURN(SPECIALISE_UPRAGMA);
                            }
 <Code,GlaExt>"{-#"{WS}*"INLINE" {
                              PUSH_STATE(UserPragma);
+                             forgetindent = TRUE;
                              RETURN(INLINE_UPRAGMA);
                            }
 <Code,GlaExt>"{-#"{WS}*"MAGIC_UNFOLDING" {
                              PUSH_STATE(UserPragma);
+                             forgetindent = TRUE;
                              RETURN(MAGIC_UNFOLDING_UPRAGMA);
                            }
 <Code,GlaExt>"{-#"{WS}*"GENERATE_SPECS" {
                              /* these are handled by hscpp */
                              nested_comments =1;
+                             forgetindent = TRUE;
                               PUSH_STATE(Comment);
                            }
 <Code,GlaExt>"{-#"{WS}*"OPTIONS" {
                              /* these are for the driver! */
                              nested_comments =1;
+                             forgetindent = TRUE;
                               PUSH_STATE(Comment);
                            }
 <Code,GlaExt>"{-#"{WS}*"SOURCE"{WS}*"#"?"-}" {
@@ -355,7 +361,15 @@ NL                         [\n\r]
                              nested_comments = 1;
                              PUSH_STATE(Comment);
                            }
-<UserPragma>"#-}"          { POP_STATE; RETURN(END_UPRAGMA); }
+<UserPragma>"#-}"          { POP_STATE; 
+                             forgetindent=FALSE; 
+                             /* don't want any layout processing here,
+                              * so just use 'return' instead of 'RETURN',
+                              * remembering to set hssttok.
+                              */
+                             hssttok = -1;
+                             return(END_UPRAGMA); 
+                           }
 
 %{
     /*