[GHC] #10498: "if ... then \case -> else ..." causes a "missing else clause" error
GHC
ghc-devs at haskell.org
Fri Jul 31 14:28:31 UTC 2015
#10498: "if ... then \case -> else ..." causes a "missing else clause" error
-------------------------------------+-------------------------------------
Reporter: dramforever | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.10.3
Component: Compiler | Version: 7.10.1
(Parser) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Other | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Revisions:
-------------------------------------+-------------------------------------
Changes (by thomie):
* keywords: newcomer =>
Comment:
I'm inclined to just the delete the parser changes from Phab:D201. They
were supposed to make error messages better, but instead they make them
worse.
Here's an example from the testsuite (parser/should_fail/readFail020):
{{{
f = let x = 42 } in x
-- before:
parse error on input ‘}’
-- after:
parse error in let binding: missing required 'in'
}}}
Here's another:
{{{
f = if module then True else False
-- before:
parse error on input ‘module’
-- after:
parse error in if statement: naked if statement
}}}
For that last one, the parser code looks like this:
{{{
| 'if' error {% hintIf (getLoc $1) "naked if statement" }
| 'if' exp optSemi error {% ... something ...
}
| 'if' exp optSemi 'then' error {% ... something ...
}
| 'if' exp optSemi 'then' exp optSemi error {% ... something ...
}
| 'if' exp optSemi 'then' exp optSemi 'else' error {% ... something ...
}
}}}
What this means is that a lexical error in the condition of an if-
expression, that we don't handle gracefully in the parser, will be
reported as "naked if statement".
The example from the description has the same cause.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10498#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list