本文整理汇总了C++中NestedNameSpecifierLoc::getEndLoc方法的典型用法代码示例。如果您正苦于以下问题:C++ NestedNameSpecifierLoc::getEndLoc方法的具体用法?C++ NestedNameSpecifierLoc::getEndLoc怎么用?C++ NestedNameSpecifierLoc::getEndLoc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NestedNameSpecifierLoc
的用法示例。
在下文中一共展示了NestedNameSpecifierLoc::getEndLoc方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: VisitCallExpr
bool VisitCallExpr(CallExpr *E) {
llvm::errs() << "I see a CallExpr\n";
E->dump();
Expr *callee = E->getCallee();
if (ImplicitCastExpr *ica = llvm::dyn_cast<ImplicitCastExpr>(callee)) {
callee = ica->getSubExpr();
}
if (DeclRefExpr *dref = llvm::dyn_cast<DeclRefExpr>(callee)) {
llvm::errs() << "declref:\n";
dref->dump();
NamedDecl *d = dref->getFoundDecl();
ASTContext &Context = d->getASTContext();
SourceManager &SM = Context.getSourceManager();
if (dref->hasQualifier()) {
llvm::errs() << " has qualifier in name.\n";
NestedNameSpecifierLoc lc = dref->getQualifierLoc();
llvm::errs() << " begin loc: " << lc.getBeginLoc().printToString(SM)
<< "\n";
llvm::errs() << " end loc: " << lc.getEndLoc().printToString(SM)
<< "\n";
}
if (UsingShadowDecl *sh = llvm::dyn_cast<UsingShadowDecl>(d)) {
NamedDecl *td = sh->getTargetDecl();
FoundRealDecl(td);
//d->dump();
} else {
FoundRealDecl(d);
//d->dump();
}
} else if (UnresolvedLookupExpr *ule = dyn_cast<UnresolvedLookupExpr>(callee)) {
llvm::errs() << "unresolved\n";
ASTContext* Context;
SourceManager* SM;
for (const auto *d : ule->decls()) {
FoundRealDecl(d);
Context = &d->getASTContext();
SM = &Context->getSourceManager();
}
llvm::errs() << " begin loc: " << ule->getLocStart().printToString(*SM)
<< "\n";
llvm::errs() << " end loc: " << ule->getLocEnd().printToString(*SM)
<< "\n";
NestedNameSpecifierLoc ll = ule->getQualifierLoc();
llvm::errs() << " nested begin loc: "
<< ll.getBeginLoc().printToString(*SM) << "\n";
llvm::errs() << " nested end loc: "
<< ll.getEndLoc().printToString(*SM) << "\n";
}
return true;
}
示例2: VisitNamespaceAliasDecl
bool RemoveNamespaceRewriteVisitor::VisitNamespaceAliasDecl(
NamespaceAliasDecl *D)
{
if (ConsumerInstance->isForUsingNamedDecls)
return true;
const NamespaceDecl *CanonicalND =
D->getNamespace()->getCanonicalDecl();
if (D->getQualifier()) {
TraverseNestedNameSpecifierLoc(D->getQualifierLoc());
if (CanonicalND == ConsumerInstance->TheNamespaceDecl) {
NestedNameSpecifierLoc QualLoc = D->getQualifierLoc();
SourceLocation QualEndLoc = QualLoc.getEndLoc();
SourceLocation DeclEndLoc = D->getSourceRange().getEnd();
ConsumerInstance->TheRewriter.RemoveText(
SourceRange(QualEndLoc, DeclEndLoc));
}
}
else {
if (CanonicalND == ConsumerInstance->TheNamespaceDecl)
ConsumerInstance->RewriteHelper->removeDecl(D);
}
return true;
}