clang::Token GetTokenAfterLocation(clang::SourceLocation loc, const clang::SourceManager &source_manager) { clang::Token token; token.setKind(clang::tok::unknown); clang::LangOptions lang_options; loc = loc.getLocWithOffset(1); while (loc != source_manager.getLocForEndOfFile(source_manager.getFileID(loc))) { if (!clang::Lexer::getRawToken(loc, token, source_manager, lang_options)) { if (!token.is(clang::tok::comment)) { break; } loc = clang::Lexer::getLocForEndOfToken(token.getLocation(), /*Offset=*/0, source_manager, lang_options); } else { loc = loc.getLocWithOffset(1); } } return token; }