r338301 - Avoid returning an invalid end source loc
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 7 15:18:26 PDT 2018
If it never comes up, maybe an assertion would suffice? (& if the assertion
ever does fire - hey, we've found a test case to use)
How'd you find this/what motivated you to make the change?
On Tue, Aug 7, 2018 at 3:11 PM Stephen Kelly <steveire at gmail.com> wrote:
>
> Hi David,
>
> I'm happy to add a test case, but I don't know how to catch this case.
> It's not obvious to me if any code path intentionally creates a
> DeclarationNameInfo with a valid start loc and an invalid end loc. Can you
> suggest a test case?
>
> Thanks,
>
> Stephen.
>
>
> On 07/08/18 03:23, David Blaikie wrote:
>
> test case?
>
> On Mon, Jul 30, 2018 at 1:39 PM Stephen Kelly via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: steveire
>> Date: Mon Jul 30 13:39:14 2018
>> New Revision: 338301
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=338301&view=rev
>> Log:
>> Avoid returning an invalid end source loc
>>
>> Modified:
>> cfe/trunk/include/clang/AST/DeclarationName.h
>> cfe/trunk/lib/AST/DeclarationName.cpp
>>
>> Modified: cfe/trunk/include/clang/AST/DeclarationName.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclarationName.h?rev=338301&r1=338300&r2=338301&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/AST/DeclarationName.h (original)
>> +++ cfe/trunk/include/clang/AST/DeclarationName.h Mon Jul 30 13:39:14 2018
>> @@ -558,7 +558,7 @@ public:
>> SourceLocation getBeginLoc() const { return NameLoc; }
>>
>> /// getEndLoc - Retrieve the location of the last token.
>> - SourceLocation getEndLoc() const;
>> + SourceLocation getEndLoc() const { return getLocEnd(); }
>>
>> /// getSourceRange - The range of the declaration name.
>> SourceRange getSourceRange() const LLVM_READONLY {
>> @@ -570,9 +570,11 @@ public:
>> }
>>
>> SourceLocation getLocEnd() const LLVM_READONLY {
>> - SourceLocation EndLoc = getEndLoc();
>> + SourceLocation EndLoc = getEndLocPrivate();
>> return EndLoc.isValid() ? EndLoc : getLocStart();
>> }
>> +private:
>> + SourceLocation getEndLocPrivate() const;
>> };
>>
>> /// Insertion operator for diagnostics. This allows sending
>> DeclarationName's
>>
>> Modified: cfe/trunk/lib/AST/DeclarationName.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclarationName.cpp?rev=338301&r1=338300&r2=338301&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/AST/DeclarationName.cpp (original)
>> +++ cfe/trunk/lib/AST/DeclarationName.cpp Mon Jul 30 13:39:14 2018
>> @@ -689,7 +689,7 @@ void DeclarationNameInfo::printName(raw_
>> llvm_unreachable("Unexpected declaration name kind");
>> }
>>
>> -SourceLocation DeclarationNameInfo::getEndLoc() const {
>> +SourceLocation DeclarationNameInfo::getEndLocPrivate() const {
>> switch (Name.getNameKind()) {
>> case DeclarationName::Identifier:
>> case DeclarationName::CXXDeductionGuideName:
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180807/1938ae3a/attachment.html>
More information about the cfe-commits
mailing list