Declaration names in DeclSpec had only their start set to a valid
location, so when the type specifier was missing, only the carret would
be shown at the first character of the name of a member declaration. Now
the whole identifier is underlined, which is useful for IDEs using
libclang.
Also, when the lookup for an identifier-expression failed, the end
location for that identifier was invalid.
Fixes PR25374.
This doesn't look right: this is a source range containing exactly one token. If we don't have *any* decl-specifiers (such as for a constructor, destructor, or conversion function), this is the wrong range.
How about instead setting the start location to be invalid in DeclSpec::Finish if the end location is invalid?