Change how unboxed tuples are lexed; fixes #7627
authorIan Lynagh <ian@well-typed.com>
Mon, 25 Feb 2013 19:02:57 +0000 (19:02 +0000)
committerIan Lynagh <ian@well-typed.com>
Mon, 25 Feb 2013 21:42:42 +0000 (21:42 +0000)
(# is now always a lexeme, even if followed by a symbol.

compiler/parser/Lexer.x
docs/users_guide/glasgow_exts.xml

index 2746faa..7e801dd 100644 (file)
@@ -339,7 +339,7 @@ $tab+         { warn Opt_WarnTabs (text "Tab character") }
 }
 
 <0> {
-  "(#" / { ifExtension unboxedTuplesEnabled `alexAndPred` notFollowedBySymbol }
+  "(#" / { ifExtension unboxedTuplesEnabled }
          { token IToubxparen }
   "#)" / { ifExtension unboxedTuplesEnabled }
          { token ITcubxparen }
index c4dd6bb..1357395 100644 (file)
@@ -225,6 +225,14 @@ the same.
 </para>
 
 <para>
+Note that when unboxed tuples are enabled,
+<literal>(#</literal> is a single lexeme, so for example when using
+operators like <literal>#</literal> and <literal>#-</literal> you need
+to write <literal>( # )</literal> and <literal>( #- )</literal> rather than
+<literal>(#)</literal> and <literal>(#-)</literal>.
+</para>
+
+<para>
 Unboxed tuples are used for functions that need to return multiple
 values, but they avoid the heap allocation normally associated with
 using fully-fledged tuples.  When an unboxed tuple is returned, the