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