summaryrefslogtreecommitdiff
path: root/compiler/specialise/Specialise.hs
diff options
context:
space:
mode:
authorVladislav Zavialov <vlad.z.4096@gmail.com>2020-02-16 13:19:51 +0300
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-02-21 20:45:59 -0500
commitbe7068a6130f394dcefbcb5d09c2944deca2270d (patch)
tree7cebbd7dfa58087696b23335bce466104e97c317 /compiler/specialise/Specialise.hs
parent0482f58ab0490b2394ad60946dde3214a0ca1810 (diff)
downloadhaskell-be7068a6130f394dcefbcb5d09c2944deca2270d.tar.gz
Parser API annotations: RealSrcLoc
During parsing, GHC collects lexical information about AST nodes and stores it in a map. It is needed to faithfully restore original source code, e.g. compare these expressions: a = b a = b The position of the equality sign is not recorded in the AST, so it must be stored elsewhere. This system is described in Note [Api annotations]. Before this patch, the mapping was represented by: Map (SrcSpan, AnnKeywordId) SrcSpan After this patch, the mapping is represented by: Map (RealSrcSpan, AnnKeywordId) RealSrcSpan The motivation behind this change is to avoid using the Ord SrcSpan instance (required by Map here), as it interferes with #17632 (see the discussion there). SrcSpan is isomorphic to Either String RealSrcSpan, but we shouldn't use those strings as Map keys. Those strings are intended as hints to the user, e.g. "<interactive>" or "<compiler-generated code>", so they are not a valid way to identify nodes in the source code.
Diffstat (limited to 'compiler/specialise/Specialise.hs')
0 files changed, 0 insertions, 0 deletions