Mercurial > hg > CbC > CbC_llvm
view clang-tools-extra/clangd/CollectMacros.cpp @ 227:21e6aa2e49ef
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 19 Jul 2021 06:57:16 +0900 |
parents | 2e18cbf3894f |
children | c4bab56944e8 |
line wrap: on
line source
//===--- CollectMacros.cpp ---------------------------------------*- C++-*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "CollectMacros.h" #include "clang/Basic/SourceLocation.h" #include "clang/Lex/Lexer.h" namespace clang { namespace clangd { void CollectMainFileMacros::add(const Token &MacroNameTok, const MacroInfo *MI, bool IsDefinition) { if (!InMainFile) return; auto Loc = MacroNameTok.getLocation(); if (Loc.isInvalid() || Loc.isMacroID()) return; auto Name = MacroNameTok.getIdentifierInfo()->getName(); Out.Names.insert(Name); auto Range = halfOpenToRange( SM, CharSourceRange::getCharRange(Loc, MacroNameTok.getEndLoc())); if (auto SID = getSymbolID(Name, MI, SM)) Out.MacroRefs[SID].push_back({Range, IsDefinition}); else Out.UnknownMacros.push_back({Range, IsDefinition}); } } // namespace clangd } // namespace clang