-
-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Description
For admittedly uncommon filenames & degenerate ranges there is ambiguity in the implementation of show :: SourceRange -> String
. Consider the following two examples:
λ> import Text.Parsec.Pos
λ> show $ SourceRange [(newPos "asdf" 0 0, newPos "asdf" 0 0), (newPos "asdf" 0 0, newPos "" 0 0)]
"asdf@0:0-0:0;0:0-@0:0"
λ> show $ SourceRange [(newPos "asdf" 0 0, newPos "0:0;0:0-" 0 0)]
"asdf@0:0-0:0;0:0-@0:0"
I discovered this while writing a parser for such ranges. This is probably sufficiently degenerate that it doesn't necessarily need to be fixed, but it should be possible to escape the filename without complicating the implementation or impacting performance too much.
I would suggest simply enforcing that filenames containing :
or -
are printed escaped as show
normally does. That is the second range here would instead be shown as the string: "asdf@0:0-\"0:0;0:0-\"@0:0"
. The first case would remain unchanged.
Metadata
Metadata
Assignees
Labels
No labels