
#10993: Bad error message reported when -XBinaryLiterals is not enabled -------------------------------------+------------------------------------- Reporter: osa1 | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.11 (Parser) | Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- When `-XBinaryLiterals` is not enabled, expressions like `0b10101` is causing this horrible error message: `Not in scope: ‘b10101’`. The reason, as far as I understand, is that lexer is not lexing `0b0101` as a single token when `-XBinaryLiterals` is not enabled. Then the parser is parsing this as an application of `0` to `b0101`. (this can be observed with `-ddump-parsed`) My suggestion: Lexer should always generate a single token for `0b0101`. We don't do `ifExtension binaryLiteralsEnabled` checks in the lexer anymore. We somehow mark generated token as "requires extension: BinaryLiterals"(I don't know if we have the infrastructure for this right now). Then, when the parser sees an integer that requires `-XBinaryLiterals`, checks the flag and reports the error etc. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10993 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler