// We add an extra " " in the TOOLS_WARN_EXCEPTION macro, which triggers this plugin if (loplugin::isSamePathname(
getFilenameOfLocation(
compiler.getSourceManager().getSpellingLoc(
compiler.getSourceManager().getImmediateMacroCallerLoc(
compiler.getSourceManager().getImmediateMacroCallerLoc(
compiler.getSourceManager().getImmediateMacroCallerLoc(
expr->getBeginLoc()))))),
SRCDIR "/include/comphelper/diagnose_ex.hxx")) returntrue;
StringRef name {
getFilenameOfLocation(
compiler.getSourceManager().getSpellingLoc(expr->getBeginLoc())) }; if (loplugin::isSamePathname(
name, SRCDIR "/sal/qa/rtl/oustringbuffer/test_oustringbuffer_assign.cxx")
|| loplugin::isSamePathname(
name, SRCDIR "/sal/qa/rtl/strings/test_ostring_concat.cxx")
|| loplugin::isSamePathname(
name, SRCDIR "/sal/qa/rtl/strings/test_oustring_concat.cxx"))
{ returntrue;
}
CXXOperatorCallExpr const * op = dyn_cast<CXXOperatorCallExpr>(expr);
report(
DiagnosticsEngine::Warning, "replace '%0' between string literals with juxtaposition",
op == nullptr ? expr->getExprLoc() : op->getOperatorLoc())
<< (oo == OverloadedOperatorKind::OO_Plus ? "+" : "<<")
<< SourceRange(leftLoc, expr->getArg(1)->getEndLoc()); returntrue;
}
bool StringConcatLiterals::isStringLiteral(Expr const * expr) { // Since <https://github.com/llvm/llvm-project/commit/878e590503dff0d9097e91c2bec4409f14503b82> // "Reland [clang] Make predefined expressions string literals under -fms-extensions", in MS // compatibility mode only, IgnoreParens and IgnoreParenImpCasts look through a PredefinedExpr // representing __func__, but which we do not want to do here: while (autoconst e = dyn_cast<ParenExpr>(expr)) {
expr = e->getSubExpr();
}
expr = expr->IgnoreImpCasts(); if (isa<PredefinedExpr>(expr)) { returnfalse;
} // Once we have filtered out the problematic PredefinedExpr above, still call // IgnoreParenImpCasts again, because it does more than just ignore ParenExpr and call // IgnoreImpCasts as is done above:
expr = stripCtor(expr->IgnoreParenImpCasts()); if (!isa<clang::StringLiteral>(expr)) { returnfalse;
} returntrue;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.