From 155b44067bc12f88817a8994278b4ffa51eff53c Mon Sep 17 00:00:00 2001 From: Ilya Biryukov Date: Wed, 10 Jul 2019 08:24:42 +0000 Subject: [PATCH] [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 --- include/clang/Tooling/Syntax/Tokens.h | 3 +-- lib/Tooling/Syntax/Tokens.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) 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()); -- 2.40.0