summaryrefslogtreecommitdiff
path: root/compilerplugins/clang/implicitboolconversion.cxx
AgeCommit message (Collapse)Author
2016-06-19loplugin:salbool: Implicit conversions from non-Boolean fundamental typesStephan Bergmann
Change-Id: I67eac95686678e6f5a2d60798535b2c65a9ba5d7
2016-04-27cppcheck: silence warnings in compilerpluginsJochen Nitschke
mostly missing explicit before ctors and uninitialized member vars one odd use of std::find > compilerplugins/clang/implicitboolconversion.cxx > 800 stlIfFind warning Suspicious condition. > The result of find() is an iterator, but it is not properly checked. Change-Id: Iade53494cd7fe8ddb0e110e431449ae5a517fe3b Reviewed-on: https://gerrit.libreoffice.org/24398 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2016-04-21Use Sequence ctor taking initializer_listStephan Bergmann
needed adapting loplugin:implicitboolconversion to not warn about Sequence<sal_Bool> arBool({true, false, true}); Change-Id: I971918aab7c958ef8f1e4e0548a84314e95f8325
2016-04-20Use cast to bool to normalize sal_Bool valuesStephan Bergmann
Change-Id: I8a886f752d2a16ec4c10656bcd0b3631647971b2
2016-02-26These version checks are about the Clang the plugins are built /against/Stephan Bergmann
...not the (Clang) compiler they are being built /with/. (Also simplifies the checking #if code.) Change-Id: I416321be4ef4478785be40571f81500fd3b6feb8
2016-01-05Adapt loplugin:implicitboolconversion to changes in Clang trunk towards 3.8Stephan Bergmann
Change-Id: I7841eee5b66a118c52258c0226d73a1139a0df9a
2015-11-02tdf#94269: Replace "n" prefix for bool variables with "b"Benjamin Ni
Change-Id: I178545792c7354a362658ac7ef8b1d4cf0865797 Signed-off-by: Michael Stahl <mstahl@redhat.com>
2015-08-04Adapt to current Clang trunk towards 3.7Stephan Bergmann
Change-Id: Ibb2c641d49a1773be789c9259f53a040db6f605f
2015-05-11Suppress loplugin:implicitboolconversion warnings in Objective-C codeStephan Bergmann
...(but not Objective-C++ code) where BOOL (aka unsigned char) expressions are routinely implicitly converted to int per the C rules, e.g., as operands of &&. Change-Id: I17e5dae9f065aaa814850196b1ef31f8fb07c99b
2015-05-08lopluign:implicitboolconversion: warn about conversion from sal_Bool etc., tooStephan Bergmann
Change-Id: I5bc23a2b599742c579ad82c1b1f68df130ac426b
2015-04-23Mac OS X ctype.h isdigit is not extern "C"Stephan Bergmann
Change-Id: Ied43178bacc020b848ee3196080713e08c780133
2015-04-23Improve loplugin:implicitboolconversion cond. expr. handlingStephan Bergmann
...so that ... ? isdigit(...) : true will not trigger a warning (where isdigit is the standard C function returning int). (Odd code like that will fall out of the improved loplugin:literaltoboolconversion rewriter shortly.) Change-Id: If51402bd5f4b3f8b0630e874988f4b836ae246f8
2015-04-17loplugin:implicitboolconversion: warn about conversions to unsigned charStephan Bergmann
...while avoiding warnings about conversions to bool-like typedefs (sal_Bool etc.), also in cases where those typedefs are used as type arguments of template specializations (which is no little feat, and the current code is only an approximation of it, one that appears to cover the relevant cases in our code base though). Change-Id: I0ed3801aec7787bf38b429b66e25244ec00cac9b
2014-06-17Fix logic to obtain callee's FunctionProtoType (if any)Stephan Bergmann
Change-Id: I1bfdd865429cc6fa89ea3b6b4fc132b5d5b57b0d
2014-02-24implicitboolconversion: warn about implicit conversion of call args to boolStephan Bergmann
...to be able to find problems like 6e0bdf04add338b7d5b29fc7b3fc9f08cfd5e96f "sal_Bool arg of SetUseImagesInMenus was abused to squeeze '2' through it" earlier when converting occurrences of sal_Bool to bool. Restricting this check to function call arguments avoids too much noise while hopefully still catching all the relevant problems. (This check partially overlaps the pointertobool check, so implicit conversions from pointers to bool call arguments will now generate two loplugin warnings, but that's harmless.) Change-Id: I0b03b1d1615aaf8bc18e7a84c56fff3ef9903508
2014-02-21Special handling of __builtin_expect in boolean expressionsStephan Bergmann
...as found in Mac OS X' assert macro definition, __builtin_expect(!(e), 0) ? ... : ... with type long __builtin_expect(long, long) The code in literaltoboolconversion.cxx is needed for assert(false); Change-Id: I42f87482c56986af74b2ec849db9852f74c7c938
2014-02-21implicitboolconversion: support for Objective C BOOLStephan Bergmann
Change-Id: Id63f42fa8875211af9f41c21f3fa128403f8a880
2014-02-14one more -Werror,-Wsign-compareMatúš Kukan
Change-Id: I3139021c07db6efe16895e10c0539a8bc60aac9c
2014-02-14-Wsign-compareStephan Bergmann
Change-Id: I81a7fac291c46a0ee6da76ab3e29c53ad0678b66
2014-02-13Adapt ImplicitBoolConversion to 32-bit builds (where sal_Int32 is long)Stephan Bergmann
Change-Id: I64480e6026e7e39fe89f90c7d269f6bb1d02968d
2014-01-31Clang API function terminology got changedStephan Bergmann
...at least in trunk 200400 towards Clang 3.5. Change-Id: I6e295e3a4cf721fbda9df8e7c5bed3993ee78216
2014-01-29implicitboolconversion: also warn about redundant explicit castsStephan Bergmann
Change-Id: Ib89b4c12d2cdca873a9fe9a509d7a123977652a7
2014-01-27Prepare dual-mode compiler plugin featureStephan Bergmann
...which can act as either a rewriter or a non-rewriter that emits warnings. Also added COMPILER_PLUGIN_WARNINGS_ONLY=X to demote warnings from plugin X from errors to warnings, even under --enable-werror. Change-Id: I05361936240a890515c6bba2459565417c1746b7
2014-01-26implicitboolconversion: warn about mixing bool with integerStephan Bergmann
...in &=, |=, ^=, as does MSVC, too. Change-Id: I57ecc9d784dd483e04ae561c62595b1d0380517f
2014-01-22implicitboolconversion: also warn about mixing bool/sal_Bool in &=, |=, ^=Stephan Bergmann
...as MSVC would warn about those anyway. Change-Id: If22dfd35bc01aff1a1bef68702c616e711db42fb
2014-01-22implicitboolconversion: also warn about mixing bool/sal_Bool in == etc.Stephan Bergmann
...as MSVC would warn about those anyway (at least about cases that do not compare against literal sal_True/sal_False, but warning even about those helped clean up lots of redundant if (foo == true) instead of just if (foo) etc. across the code base). Change-Id: Iad4b335c35c5411070f04f87f974db7942c288d4
2014-01-22Improve Clang 3.2 hasCLanguageLinkageType workaroundStephan Bergmann
Change-Id: If5c104adc05aa362d15cedf6f8953bda478897bc
2014-01-20Make implicitboolconversion.cxx compile with Clang 3.2Stephan Bergmann
Change-Id: I011e74fd044d0b76cccc60adea362805917c584a
2014-01-17Clang plugin that flags implicit conversions from boolStephan Bergmann
...as they are often enough errors, like a typo in brace placement in if (foo == (FOO || bar == BAR) && baz) or a literal true passed as an argument to a function that rather expects an integer bit mask, etc. The plugin is smart enough to detect interaction with logically boolean return/parameter types of C functions that use [unsigned] int instead, and knows the relevant boolean typedefs (sal_Bool, gboolean, etc.). Change-Id: I5f0e4344fe86589bec35a71018c7effdedf85e3e