on master help sign in
Disallow primes in variable names
84711ecEvan Czaplicki
src/Parse/Helpers.hs+6−1
@@ -90,7 +90,12 @@ rLabel = lowVar
90
90
91innerVarChar :: IParser Char
91innerVarChar :: IParser Char
92innerVarChar =
92innerVarChar =
93+ choice
94+ [ alphaNum
95+ , char '_'
96+ , char '\'' >> fail Syntax.prime
97+ ]
93− alphaNum <|> char '_' <|> char '\'' <?> "more letters in this name"
98+ <?> "more letters in this name"
94
99
95
100
96makeVar :: IParser Char -> IParser String
101makeVar :: IParser Char -> IParser String
src/Reporting/Error/Syntax.hs+14
@@ -328,9 +328,15 @@ keyword kwd =
328 "KEYWORD=" ++ kwd
328 "KEYWORD=" ++ kwd
329
329
330
330
331+prime :: String
332+prime =
333+ "PRIME"
334+
335+
331data SpecialMessage
336data SpecialMessage
332 = MsgKeyword String
337 = MsgKeyword String
333 | MsgTab
338 | MsgTab
339+ | MsgPrime
334
340
335
341
336extractSpecialMessage :: String -> Maybe SpecialMessage
342extractSpecialMessage :: String -> Maybe SpecialMessage
@@ -341,6 +347,9 @@ extractSpecialMessage message =
341 else if tab == message then
347 else if tab == message then
342 Just MsgTab
348 Just MsgTab
343
349
350+ else if prime == message then
351+ Just MsgPrime
352+
344 else
353 else
345 Nothing
354 Nothing
346
355
@@ -393,6 +402,11 @@ parseErrorReport messages =
393 , Just "I am looking for spaces, not tabs."
402 , Just "I am looking for spaces, not tabs."
394 )
403 )
395
404
405+ Just MsgPrime ->
406+ ( "Ran into a single quote in a variable name. This was removed in 0.18!"
407+ , Just "Change it to a number or an underscore: x' => x1"
408+ )
409+
396 Nothing ->
410 Nothing ->
397 ( msg
411 ( msg
398 , Nothing
412 , Nothing