Skip to content
  • Vladislav Zavialov's avatar
    Monotonic locations (#17632) · 0e697d54
    Vladislav Zavialov authored
    When GHC is parsing a file generated by a tool, e.g. by the C preprocessor, the
    tool may insert #line pragmas to adjust the locations reported to the user.
    
    As the result, the locations recorded in RealSrcLoc are not monotonic. Elements
    that appear later in the StringBuffer are not guaranteed to have a higher
    line/column number.
    
    In fact, there are no guarantees whatsoever, as #line pragmas can arbitrarily
    modify locations. This lack of guarantees makes ideas such as #17544
    infeasible.
    
    This patch adds an additional bit of information to every SrcLoc:
    
    	newtype BufPos = BufPos { bufPos :: Int }
    
    A BufPos represents the location in the StringBuffer, unaffected by any
    pragmas.
    
    Updates haddock submodule.
    
    Metric Increase:
        haddock.Cabal
        haddock.base
        haddock.compiler
        MultiLayerModules
        Naperian
        parsing001
        T12150
    0e697d54