1*263dcf45SHaojian Wu //===- TokenBufferTokenManager.cpp ----------------------------------------===// 2*263dcf45SHaojian Wu // 3*263dcf45SHaojian Wu // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*263dcf45SHaojian Wu // See https://llvm.org/LICENSE.txt for license information. 5*263dcf45SHaojian Wu // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*263dcf45SHaojian Wu // 7*263dcf45SHaojian Wu //===----------------------------------------------------------------------===// 8*263dcf45SHaojian Wu 9*263dcf45SHaojian Wu #include "clang/Tooling/Syntax/TokenBufferTokenManager.h" 10*263dcf45SHaojian Wu 11*263dcf45SHaojian Wu namespace clang { 12*263dcf45SHaojian Wu namespace syntax { 13*263dcf45SHaojian Wu constexpr llvm::StringLiteral syntax::TokenBufferTokenManager::Kind; 14*263dcf45SHaojian Wu 15*263dcf45SHaojian Wu std::pair<FileID, ArrayRef<syntax::Token>> lexBuffer(std::unique_ptr<llvm::MemoryBuffer> Input)16*263dcf45SHaojian Wusyntax::TokenBufferTokenManager::lexBuffer( 17*263dcf45SHaojian Wu std::unique_ptr<llvm::MemoryBuffer> Input) { 18*263dcf45SHaojian Wu auto FID = SM.createFileID(std::move(Input)); 19*263dcf45SHaojian Wu auto It = ExtraTokens.try_emplace(FID, tokenize(FID, SM, LangOpts)); 20*263dcf45SHaojian Wu assert(It.second && "duplicate FileID"); 21*263dcf45SHaojian Wu return {FID, It.first->second}; 22*263dcf45SHaojian Wu } 23*263dcf45SHaojian Wu 24*263dcf45SHaojian Wu } // namespace syntax 25*263dcf45SHaojian Wu } // namespace clang 26