From 0626e66d761de18f62e4d00d427903032da9d517 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Tue, 19 Feb 2019 21:09:29 +0100 Subject: [PATCH] Avoid loplugin:indentation after preproc conditional inclusion lines ...to not trigger (for --disable-dbgutil) at > rContentAtPos.eContentAtPos = IsAttrAtPos::TableBoxFml; > #ifdef DBG_UTIL > if( RES_BOXATR_VALUE == pItem->Which() ) > rContentAtPos.eContentAtPos = IsAttrAtPos::TableBoxValue; > else > #endif > const_cast(static_cast(pItem))->PtrToBoxNm( &pTableNd->GetTable() ); (sw/source/core/crsr/crstrvl.cxx:1710) Change-Id: I8fd5c8a1cd40450bdd8cc97057e5233a0134f044 Reviewed-on: https://gerrit.libreoffice.org/68030 Tested-by: Jenkins Reviewed-by: Stephan Bergmann --- compilerplugins/clang/indentation.cxx | 7 +++++++ compilerplugins/clang/test/indentation.cxx | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/compilerplugins/clang/indentation.cxx b/compilerplugins/clang/indentation.cxx index 04a9be6677d0..deac18121443 100644 --- a/compilerplugins/clang/indentation.cxx +++ b/compilerplugins/clang/indentation.cxx @@ -86,10 +86,13 @@ bool Indentation::VisitCompoundStmt(CompoundStmt const* compoundStmt) Stmt const* firstStmt = nullptr; unsigned curLine = MAX; unsigned prevLine = MAX; + SourceLocation prevEnd; auto& SM = compiler.getSourceManager(); for (auto i = compoundStmt->body_begin(); i != compoundStmt->body_end(); ++i) { auto stmt = *i; + auto const actualPrevEnd = prevEnd; + prevEnd = compat::getEndLoc(stmt); // compute early, before below `continue`s // these show up in macro expansions, not interesting if (isa(stmt)) @@ -158,6 +161,10 @@ bool Indentation::VisitCompoundStmt(CompoundStmt const* compoundStmt) } else if (column != tmpColumn) { + if (containsPreprocessingConditionalInclusion(SourceRange( + locationAfterToken(compiler.getSourceManager().getExpansionLoc(actualPrevEnd)), + compiler.getSourceManager().getExpansionLoc(compat::getBeginLoc(stmt))))) + continue; report(DiagnosticsEngine::Warning, "statement mis-aligned compared to neighbours %0", stmtLoc) << macroName; diff --git a/compilerplugins/clang/test/indentation.cxx b/compilerplugins/clang/test/indentation.cxx index b313fff1fe62..f7cccce67cc5 100644 --- a/compilerplugins/clang/test/indentation.cxx +++ b/compilerplugins/clang/test/indentation.cxx @@ -35,6 +35,13 @@ void top1(int x) { case 1: foo(); break; // 1expected-note {{measured against this one [loplugin:indentation]}} case 2: foo(); break; // 1expected-error {{statement mis-aligned compared to neighbours [loplugin:indentation]}} }; + +#if 0 + if (x) + foo(); + else +#endif + foo(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */