boolconv.cocci 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /// Remove unneeded conversion to bool
  2. ///
  3. //# Relational and logical operators evaluate to bool,
  4. //# explicit conversion is overly verbose and unneeded.
  5. //
  6. // Copyright: (C) 2016 Andrew F. Davis <afd@ti.com> GPLv2.
  7. virtual patch
  8. virtual context
  9. virtual org
  10. virtual report
  11. //----------------------------------------------------------
  12. // For patch mode
  13. //----------------------------------------------------------
  14. @depends on patch@
  15. expression A, B;
  16. symbol true, false;
  17. @@
  18. (
  19. A == B
  20. |
  21. A != B
  22. |
  23. A > B
  24. |
  25. A < B
  26. |
  27. A >= B
  28. |
  29. A <= B
  30. |
  31. A && B
  32. |
  33. A || B
  34. )
  35. - ? true : false
  36. //----------------------------------------------------------
  37. // For context mode
  38. //----------------------------------------------------------
  39. @r depends on !patch@
  40. expression A, B;
  41. symbol true, false;
  42. position p;
  43. @@
  44. (
  45. A == B
  46. |
  47. A != B
  48. |
  49. A > B
  50. |
  51. A < B
  52. |
  53. A >= B
  54. |
  55. A <= B
  56. |
  57. A && B
  58. |
  59. A || B
  60. )
  61. * ? true : false@p
  62. //----------------------------------------------------------
  63. // For org mode
  64. //----------------------------------------------------------
  65. @script:python depends on r&&org@
  66. p << r.p;
  67. @@
  68. msg = "WARNING: conversion to bool not needed here"
  69. coccilib.org.print_todo(p[0], msg)
  70. //----------------------------------------------------------
  71. // For report mode
  72. //----------------------------------------------------------
  73. @script:python depends on r&&report@
  74. p << r.p;
  75. @@
  76. msg = "WARNING: conversion to bool not needed here"
  77. coccilib.report.print_report(p[0], msg)