@@ -386,6 +386,13 @@ prop_getLiteralString10 = getLiteralString (T_DollarSingleQuoted (Id 0) "\\1234"
386386prop_getLiteralString11 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ 1" ) == Just " \1"
387387prop_getLiteralString12 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ 12" ) == Just " \o12 "
388388prop_getLiteralString13 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ 123" ) == Just " \o123 "
389+ prop_getLiteralString14 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ e[1mfoo\\ E[0mbar" ) == Just " \ESC [1mfoo\ESC [0mbar"
390+ prop_getLiteralString15 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ ?" ) == Just " ?"
391+ prop_getLiteralString16 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ u2F" ) == Just " /"
392+ prop_getLiteralString17 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ u100" ) == Just " Ā"
393+ prop_getLiteralString18 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ u1d00" ) == Just " ᴀ"
394+ prop_getLiteralString19 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ u1D56C" ) == Just " ᵖC"
395+ prop_getLiteralString20 = getLiteralString (T_DollarSingleQuoted (Id 0 ) " \\ U1D56C" ) == Just " 𝕬"
389396
390397-- Maybe get the literal value of a token, using a custom function
391398-- to map unrecognized Tokens into strings.
@@ -409,18 +416,28 @@ getLiteralStringExt more = g
409416 ' a' -> ' \a ' : rest
410417 ' b' -> ' \b ' : rest
411418 ' e' -> ' \x1B ' : rest
419+ ' E' -> ' \x1B ' : rest
412420 ' f' -> ' \f ' : rest
413421 ' n' -> ' \n ' : rest
414422 ' r' -> ' \r ' : rest
415423 ' t' -> ' \t ' : rest
416424 ' v' -> ' \v ' : rest
425+ ' \\ ' -> ' \\ ' : rest
417426 ' \' ' -> ' \' ' : rest
418427 ' "' -> ' "' : rest
419- ' \\ ' -> ' \\ ' : rest
428+ ' ? ' -> ' ? ' : rest
420429 ' x' ->
421430 case readHex (take 2 cs) of
422431 [(n, s)] -> chr n : s ++ decodeEscapes (drop 2 cs)
423432 _ -> ' \\ ' : ' x' : rest
433+ ' u' ->
434+ case readHex (take 4 cs) of
435+ [(n, s)] -> chr n : s ++ decodeEscapes (drop 4 cs)
436+ _ -> ' \\ ' : ' x' : rest
437+ ' U' ->
438+ case readHex (take 8 cs) of
439+ [(n, s)] -> chr n : s ++ decodeEscapes (drop 8 cs)
440+ _ -> ' \\ ' : ' x' : rest
424441 _ ->
425442 case readOct (c: take 2 cs) of
426443 [(n, s)] -> chr n : s ++ decodeEscapes (drop 2 cs)
0 commit comments