• Robert Griesemer's avatar
    cmd/compile, cmd/compile/internal/syntax: print relative column info · 0c884d08
    Robert Griesemer authored
    This change enables printing of relative column information if a
    prior line directive specified a valid column. If there was no
    line directive, or the line directive didn't specify a column
    (or the -C flag is specified), no column information is shown in
    file positions.
    
    Implementation: Column values (and line values, for that matter)
    that are zero are interpreted as "unknown". A line directive that
    doesn't specify a column records that as a zero column in the
    respective PosBase data structure. When computing relative columns,
    a relative value is zero of the base's column value is zero.
    When formatting a position, a zero column value is not printed.
    
    To make this work without special cases, the PosBase for a file
    is given a concrete (non-0:0) position 1:1 with the PosBase's
    line and column also being 1:1. In other words, at the position
    1:1 of a file, it's relative positions are starting with 1:1 as
    one would expect.
    
    In the package syntax, this requires self-recursive PosBases for
    file bases, matching what cmd/internal/src.PosBase was already
    doing. In src.PosBase, file and inlining bases also need to be
    based at 1:1 to indicate "known" positions.
    
    This change completes the cmd/compiler part of the issue below.
    
    Fixes #22662.
    
    Change-Id: I6c3d2dee26709581fba0d0261b1d12e93f1cba1a
    Reviewed-on: https://go-review.googlesource.com/97375Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
    0c884d08
issue22662b.go 1.85 KB