Objective-C/C++ : Improve '@' keyword locations.
authorIain Sandoe <iain@sandoe.co.uk>
Fri, 30 Oct 2020 19:06:58 +0000 (19:06 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Sun, 1 Nov 2020 20:21:41 +0000 (20:21 +0000)
commit7a2cc1e8438ee853900f20880ca8858c17486b10
tree2785fa67b9e3e07a913c218f55e11e26bc220e27
parente344ea07e4024316e1bc01f18bf7f187ad3aef89
Objective-C/C++ : Improve '@' keyword locations.

When we are lexing tokens for Objective-C, we combine '@' tokens
with a following keyword (when that keyword is a valid Objective-C
one or, for Objective-C, one of the C++ keywords that can appear in
this position).  The responsibility is passed on to the parser to
validate the resulting combination.

The combination of tokens was being done without applying the rule
to their locations - so that we get:

@property
^

instead of what the user might expect:

@property
^~~~~~~~~

This patch combines the source range of the keyword with that of the
'@' sign - which improves diagnostics.

gcc/c-family/ChangeLog:

* c-lex.c (c_lex_with_flags): When combining '@' with a
keyword for Objective-C, combine the location ranges too.
gcc/c-family/c-lex.c