clang 19.0.0git
SymbolOccurrences.cpp
Go to the documentation of this file.
1//===--- SymbolOccurrences.cpp - Clang refactoring library ----------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
11#include "llvm/ADT/STLExtras.h"
12
13using namespace clang;
14using namespace tooling;
15
18 : Kind(Kind) {
19 ArrayRef<std::string> NamePieces = Name.getNamePieces();
20 assert(Locations.size() == NamePieces.size() &&
21 "mismatching number of locations and lengths");
22 assert(!Locations.empty() && "no locations");
23 if (Locations.size() == 1) {
25 Locations[0], Locations[0].getLocWithOffset(NamePieces[0].size()));
26 return;
27 }
28 MultipleRanges = std::make_unique<SourceRange[]>(Locations.size());
29 NumRanges = Locations.size();
30 for (const auto &Loc : llvm::enumerate(Locations)) {
31 MultipleRanges[Loc.index()] = SourceRange(
32 Loc.value(),
33 Loc.value().getLocWithOffset(NamePieces[Loc.index()].size()));
34 }
35}
A trivial tuple used to represent a source range.
A name of a symbol.
Definition: SymbolName.h:29
SymbolOccurrence(const SymbolName &Name, OccurrenceKind Kind, ArrayRef< SourceLocation > Locations)
The JSON file list parser is used to communicate input to InstallAPI.