From: Ilya Biryukov Date: Wed, 10 Jul 2019 08:24:42 +0000 (+0000) Subject: [Syntax] Add assertion to catch invalid tokens early. NFC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=155b44067bc12f88817a8994278b4ffa51eff53c;p=clang [Syntax] Add assertion to catch invalid tokens early. NFC To help with identifiying root cause of a crash we are seeing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@365599 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Tooling/Syntax/Tokens.h b/include/clang/Tooling/Syntax/Tokens.h index a89ff3680d..4640ccb2d3 100644 --- a/include/clang/Tooling/Syntax/Tokens.h +++ b/include/clang/Tooling/Syntax/Tokens.h @@ -99,8 +99,7 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const FileRange &R); /// Can represent both expanded and spelled tokens. class Token { public: - Token(SourceLocation Location, unsigned Length, tok::TokenKind Kind) - : Location(Location), Length(Length), Kind(Kind) {} + Token(SourceLocation Location, unsigned Length, tok::TokenKind Kind); /// EXPECTS: clang::Token is not an annotation token. explicit Token(const clang::Token &T); diff --git a/lib/Tooling/Syntax/Tokens.cpp b/lib/Tooling/Syntax/Tokens.cpp index b42d5a2ca6..d82dc1f35c 100644 --- a/lib/Tooling/Syntax/Tokens.cpp +++ b/lib/Tooling/Syntax/Tokens.cpp @@ -35,6 +35,12 @@ using namespace clang; using namespace clang::syntax; +syntax::Token::Token(SourceLocation Location, unsigned Length, + tok::TokenKind Kind) + : Location(Location), Length(Length), Kind(Kind) { + assert(Location.isValid()); +} + syntax::Token::Token(const clang::Token &T) : Token(T.getLocation(), T.getLength(), T.getKind()) { assert(!T.isAnnotation());