adlint 2.6.14 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. data/AUTHORS +1 -3
  2. data/ChangeLog +511 -0
  3. data/INSTALL +1 -1
  4. data/MANIFEST +57 -37
  5. data/NEWS +36 -7
  6. data/README +2 -2
  7. data/Rakefile +6 -6
  8. data/TODO +1 -1
  9. data/bin/adlint +25 -16
  10. data/bin/adlint_chk +22 -12
  11. data/bin/adlint_cma +17 -12
  12. data/bin/adlint_sma +22 -12
  13. data/bin/adlintize +98 -17
  14. data/etc/conf.d/fallback/cinit.erb +1 -1
  15. data/etc/conf.d/fallback/traits.erb +37 -37
  16. data/etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb +1 -1
  17. data/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb +41 -41
  18. data/etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb +1 -1
  19. data/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb +40 -40
  20. data/etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb +1 -1
  21. data/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb +40 -40
  22. data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
  23. data/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb +40 -40
  24. data/etc/conf.d/noarch/GNUmakefile.erb +1 -1
  25. data/etc/conf.d/noarch/adlint_all_bat.erb +1 -1
  26. data/etc/conf.d/noarch/adlint_all_sh.erb +1 -1
  27. data/etc/conf.d/noarch/pinit.erb +1 -1
  28. data/etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb +1 -1
  29. data/etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb +42 -42
  30. data/etc/mesg.d/c_builtin/en_US/messages.yml +33 -33
  31. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +5 -5
  32. data/etc/mesg.d/core/en_US/messages.yml +2 -2
  33. data/etc/mesg.d/core/ja_JP/messages.yml +2 -2
  34. data/features/code_check/W0018.feature +197 -0
  35. data/features/code_check/W0019.feature +79 -0
  36. data/features/code_check/W0021.feature +81 -0
  37. data/features/code_check/W0023.feature +203 -0
  38. data/features/code_check/W0024.feature +226 -0
  39. data/features/code_check/W0025.feature +5 -0
  40. data/features/code_check/W0088.feature +2 -2
  41. data/features/code_check/W0109.feature +2 -2
  42. data/features/code_check/W0477.feature +0 -3
  43. data/features/code_check/W0478.feature +0 -1
  44. data/features/code_check/W0582.feature +3 -3
  45. data/features/code_check/W0583.feature +4 -7
  46. data/features/code_check/W0646.feature +0 -1
  47. data/features/code_check/W0695.feature +0 -1
  48. data/features/code_check/W0705.feature +8 -0
  49. data/features/code_check/W0723.feature +0 -1
  50. data/features/code_check/W0745.feature +1 -0
  51. data/features/code_check/W0781.feature +1 -0
  52. data/features/code_check/W1057.feature +141 -0
  53. data/features/code_check/W1058.feature +93 -0
  54. data/features/code_check/W1059.feature +86 -0
  55. data/features/code_check/W1060.feature +77 -0
  56. data/features/code_check/W1061.feature +143 -0
  57. data/features/code_check/W1062.feature +162 -0
  58. data/features/code_check/W1063.feature +123 -0
  59. data/features/code_check/W1064.feature +83 -0
  60. data/features/code_check/W1065.feature +82 -0
  61. data/features/code_check/W9003.feature +2 -0
  62. data/features/step_definitions/code_check_steps.rb +1 -0
  63. data/features/support/env.rb +16 -13
  64. data/lib/adlint.rb +7 -4
  65. data/lib/adlint/analyzer.rb +131 -157
  66. data/lib/adlint/annot.rb +149 -0
  67. data/lib/adlint/cc1.rb +57 -0
  68. data/lib/adlint/{c → cc1}/branch.rb +74 -62
  69. data/lib/adlint/{c → cc1}/builtin.rb +21 -21
  70. data/lib/adlint/{c → cc1}/const.rb +119 -117
  71. data/lib/adlint/{c → cc1}/conv.rb +76 -78
  72. data/lib/adlint/{c → cc1}/ctrlexpr.rb +69 -86
  73. data/lib/adlint/cc1/domain.rb +8103 -0
  74. data/lib/adlint/{c → cc1}/enum.rb +3 -3
  75. data/lib/adlint/{c → cc1}/environ.rb +21 -21
  76. data/lib/adlint/{c → cc1}/expr.rb +232 -218
  77. data/lib/adlint/{c → cc1}/format.rb +305 -342
  78. data/lib/adlint/{c → cc1}/interp.rb +269 -220
  79. data/lib/adlint/cc1/lexer.rb +246 -0
  80. data/lib/adlint/{c → cc1}/mediator.rb +78 -84
  81. data/lib/adlint/{c → cc1}/object.rb +261 -264
  82. data/lib/adlint/{c → cc1}/operator.rb +7 -7
  83. data/lib/adlint/{c → cc1}/option.rb +4 -3
  84. data/lib/adlint/{c → cc1}/parser.rb +274 -506
  85. data/lib/adlint/{c → cc1}/parser.y +69 -301
  86. data/lib/adlint/cc1/phase.rb +138 -0
  87. data/lib/adlint/{c → cc1}/resolver.rb +66 -78
  88. data/lib/adlint/{c → cc1}/scanner.rb +57 -49
  89. data/lib/adlint/{c → cc1}/scope.rb +3 -3
  90. data/lib/adlint/{c → cc1}/seqp.rb +13 -5
  91. data/lib/adlint/{c → cc1}/syntax.rb +819 -1122
  92. data/lib/adlint/{c → cc1}/type.rb +1498 -1479
  93. data/lib/adlint/{c → cc1}/util.rb +20 -12
  94. data/lib/adlint/{c → cc1}/value.rb +699 -642
  95. data/lib/adlint/code.rb +163 -164
  96. data/lib/adlint/cpp.rb +2 -2
  97. data/lib/adlint/cpp/asm.rb +13 -14
  98. data/lib/adlint/cpp/constexpr.rb +42 -38
  99. data/lib/adlint/cpp/constexpr.y +44 -40
  100. data/lib/adlint/cpp/eval.rb +435 -435
  101. data/lib/adlint/cpp/lexer.rb +343 -340
  102. data/lib/adlint/cpp/macro.rb +188 -190
  103. data/lib/adlint/cpp/phase.rb +66 -45
  104. data/lib/adlint/cpp/scanner.rb +14 -17
  105. data/lib/adlint/cpp/source.rb +49 -55
  106. data/lib/adlint/cpp/subst.rb +65 -65
  107. data/lib/adlint/cpp/syntax.rb +155 -275
  108. data/lib/adlint/cpp/util.rb +22 -19
  109. data/lib/adlint/driver.rb +86 -93
  110. data/lib/adlint/error.rb +33 -52
  111. data/lib/adlint/exam.rb +158 -24
  112. data/lib/adlint/exam/c_builtin.rb +7 -7
  113. data/lib/adlint/exam/c_builtin/cc1_check.rb +20522 -0
  114. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +957 -0
  115. data/lib/adlint/exam/c_builtin/cc1_code.rb +459 -0
  116. data/lib/adlint/exam/c_builtin/cc1_metric.rb +794 -0
  117. data/lib/adlint/exam/c_builtin/cpp_check.rb +486 -441
  118. data/lib/adlint/exam/c_builtin/cpp_check_shima.rb +36 -39
  119. data/lib/adlint/exam/c_builtin/cpp_code.rb +63 -65
  120. data/lib/adlint/exam/c_builtin/ld_check.rb +136 -129
  121. data/lib/adlint/exam/c_builtin/ld_metric.rb +11 -11
  122. data/lib/adlint/lang.rb +25 -25
  123. data/lib/adlint/ld.rb +2 -2
  124. data/lib/adlint/ld/object.rb +220 -188
  125. data/lib/adlint/ld/phase.rb +94 -63
  126. data/lib/adlint/ld/typedef.rb +22 -11
  127. data/lib/adlint/ld/util.rb +43 -35
  128. data/lib/adlint/lexer.rb +59 -56
  129. data/lib/adlint/location.rb +140 -0
  130. data/lib/adlint/memo.rb +157 -0
  131. data/lib/adlint/message.rb +207 -156
  132. data/lib/adlint/metric.rb +139 -217
  133. data/lib/adlint/monitor.rb +45 -43
  134. data/lib/adlint/phase.rb +56 -29
  135. data/lib/adlint/prelude.rb +66 -54
  136. data/lib/adlint/report.rb +253 -332
  137. data/lib/adlint/source.rb +26 -27
  138. data/lib/adlint/supp.rb +131 -0
  139. data/lib/adlint/symbol.rb +14 -16
  140. data/lib/adlint/token.rb +19 -91
  141. data/lib/adlint/traits.rb +242 -226
  142. data/lib/adlint/util.rb +116 -205
  143. data/lib/adlint/version.rb +8 -8
  144. data/share/HEADER +2 -2
  145. data/share/doc/developers_guide_ja.html +148 -19
  146. data/share/doc/developers_guide_ja.texi +141 -11
  147. data/share/doc/samples/GNUmakefile +1 -1
  148. data/share/doc/samples/adlint_traits.yml +45 -36
  149. data/share/doc/users_guide_en.html +1321 -1252
  150. data/share/doc/users_guide_en.texi +475 -408
  151. data/share/doc/users_guide_ja.html +1932 -1878
  152. data/share/doc/users_guide_ja.texi +324 -273
  153. data/share/sample/bison-2.5/adlint/GNUmakefile +5 -1
  154. data/share/sample/bison-2.5/adlint/adlint_traits.yml +38 -38
  155. data/share/sample/bison-2.5/adlint/lib/GNUmakefile +1 -1
  156. data/share/sample/bison-2.5/adlint/lib/adlint_cinit.h +1 -1
  157. data/share/sample/bison-2.5/adlint/lib/adlint_pinit.h +1 -1
  158. data/share/sample/bison-2.5/adlint/lib/adlint_traits.yml +50 -42
  159. data/share/sample/bison-2.5/adlint/src/GNUmakefile +1 -1
  160. data/share/sample/bison-2.5/adlint/src/adlint_cinit.h +1 -1
  161. data/share/sample/bison-2.5/adlint/src/adlint_pinit.h +1 -1
  162. data/share/sample/bison-2.5/adlint/src/adlint_traits.yml +50 -42
  163. data/share/sample/ctags-5.8/adlint/GNUmakefile +1 -1
  164. data/share/sample/ctags-5.8/adlint/adlint_cinit.h +1 -1
  165. data/share/sample/ctags-5.8/adlint/adlint_pinit.h +1 -1
  166. data/share/sample/ctags-5.8/adlint/adlint_traits.yml +50 -42
  167. data/share/sample/flex-2.5.35/adlint/GNUmakefile +1 -1
  168. data/share/sample/flex-2.5.35/adlint/adlint_cinit.h +1 -1
  169. data/share/sample/flex-2.5.35/adlint/adlint_pinit.h +1 -1
  170. data/share/sample/flex-2.5.35/adlint/adlint_traits.yml +50 -42
  171. data/share/sample/ruby-1.9.3-p0/adlint/GNUmakefile +1 -1
  172. data/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml +46 -38
  173. data/share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile +1 -1
  174. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h +1 -1
  175. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h +1 -1
  176. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml +50 -42
  177. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile +1 -1
  178. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h +1 -1
  179. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h +1 -1
  180. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml +50 -42
  181. data/share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile +1 -1
  182. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h +1 -1
  183. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h +1 -1
  184. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml +50 -42
  185. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile +1 -1
  186. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h +1 -1
  187. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h +1 -1
  188. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml +50 -42
  189. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile +1 -1
  190. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h +1 -1
  191. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h +1 -1
  192. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml +50 -42
  193. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile +1 -1
  194. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h +1 -1
  195. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h +1 -1
  196. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml +50 -42
  197. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile +1 -1
  198. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h +1 -1
  199. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h +1 -1
  200. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml +50 -42
  201. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile +1 -1
  202. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h +1 -1
  203. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h +1 -1
  204. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml +50 -42
  205. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile +1 -1
  206. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h +1 -1
  207. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h +1 -1
  208. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml +50 -42
  209. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile +1 -1
  210. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h +1 -1
  211. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h +1 -1
  212. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml +50 -42
  213. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile +1 -1
  214. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h +1 -1
  215. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h +1 -1
  216. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml +50 -42
  217. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile +1 -1
  218. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h +1 -1
  219. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h +1 -1
  220. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml +50 -42
  221. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile +1 -1
  222. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h +1 -1
  223. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h +1 -1
  224. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml +50 -42
  225. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile +1 -1
  226. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h +1 -1
  227. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h +1 -1
  228. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml +50 -42
  229. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile +1 -1
  230. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h +1 -1
  231. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h +1 -1
  232. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml +50 -42
  233. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile +1 -1
  234. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h +1 -1
  235. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h +1 -1
  236. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml +50 -42
  237. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile +1 -1
  238. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h +1 -1
  239. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h +1 -1
  240. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml +50 -42
  241. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile +1 -1
  242. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h +1 -1
  243. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h +1 -1
  244. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml +50 -42
  245. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile +1 -1
  246. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h +1 -1
  247. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h +1 -1
  248. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml +50 -42
  249. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile +1 -1
  250. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h +1 -1
  251. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h +1 -1
  252. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml +50 -42
  253. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile +1 -1
  254. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h +1 -1
  255. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h +1 -1
  256. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml +50 -42
  257. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile +1 -1
  258. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h +1 -1
  259. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h +1 -1
  260. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml +50 -42
  261. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile +1 -1
  262. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h +1 -1
  263. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h +1 -1
  264. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml +50 -42
  265. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile +1 -1
  266. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h +1 -1
  267. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h +1 -1
  268. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml +50 -42
  269. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile +1 -1
  270. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h +1 -1
  271. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h +1 -1
  272. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml +50 -42
  273. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile +1 -1
  274. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h +1 -1
  275. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h +1 -1
  276. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml +50 -42
  277. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile +1 -1
  278. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h +1 -1
  279. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h +1 -1
  280. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml +50 -42
  281. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile +1 -1
  282. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h +1 -1
  283. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h +1 -1
  284. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml +50 -42
  285. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile +1 -1
  286. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h +1 -1
  287. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h +1 -1
  288. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml +50 -42
  289. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile +1 -1
  290. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h +1 -1
  291. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h +1 -1
  292. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml +50 -42
  293. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile +1 -1
  294. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h +1 -1
  295. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h +1 -1
  296. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml +50 -42
  297. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile +1 -1
  298. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h +1 -1
  299. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h +1 -1
  300. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml +50 -42
  301. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile +1 -1
  302. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h +1 -1
  303. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h +1 -1
  304. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml +50 -42
  305. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile +1 -1
  306. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h +1 -1
  307. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h +1 -1
  308. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml +50 -42
  309. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile +1 -1
  310. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h +1 -1
  311. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h +1 -1
  312. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml +50 -42
  313. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile +1 -1
  314. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h +1 -1
  315. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h +1 -1
  316. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml +50 -42
  317. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile +1 -1
  318. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h +1 -1
  319. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h +1 -1
  320. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml +50 -42
  321. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile +1 -1
  322. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h +1 -1
  323. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h +1 -1
  324. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml +50 -42
  325. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile +1 -1
  326. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h +1 -1
  327. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h +1 -1
  328. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml +50 -42
  329. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile +1 -1
  330. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h +1 -1
  331. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h +1 -1
  332. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml +50 -42
  333. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile +1 -1
  334. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h +1 -1
  335. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h +1 -1
  336. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml +50 -42
  337. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile +1 -1
  338. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h +1 -1
  339. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h +1 -1
  340. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml +50 -42
  341. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile +1 -1
  342. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h +1 -1
  343. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h +1 -1
  344. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml +50 -42
  345. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile +1 -1
  346. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h +1 -1
  347. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h +1 -1
  348. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml +50 -42
  349. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile +1 -1
  350. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h +1 -1
  351. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h +1 -1
  352. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml +50 -42
  353. data/share/sample/screen-4.0.3/adlint/GNUmakefile +1 -1
  354. data/share/sample/screen-4.0.3/adlint/adlint_cinit.h +1 -1
  355. data/share/sample/screen-4.0.3/adlint/adlint_pinit.h +1 -1
  356. data/share/sample/screen-4.0.3/adlint/adlint_traits.yml +50 -42
  357. data/share/sample/vim-7.3/adlint/vim/GNUmakefile +1 -1
  358. data/share/sample/vim-7.3/adlint/vim/adlint_cinit.h +1 -1
  359. data/share/sample/vim-7.3/adlint/vim/adlint_pinit.h +1 -1
  360. data/share/sample/vim-7.3/adlint/vim/adlint_traits.yml +50 -42
  361. data/share/sample/vim-7.3/adlint/xxd/GNUmakefile +1 -1
  362. data/share/sample/vim-7.3/adlint/xxd/adlint_cinit.h +1 -1
  363. data/share/sample/vim-7.3/adlint/xxd/adlint_pinit.h +1 -1
  364. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +49 -41
  365. data/share/sample/zsh-4.3.15/adlint/GNUmakefile +1 -1
  366. data/share/sample/zsh-4.3.15/adlint/adlint_traits.yml +46 -38
  367. data/share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile +1 -1
  368. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h +1 -1
  369. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h +1 -1
  370. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml +50 -42
  371. data/share/sample/zsh-4.3.15/adlint/core/GNUmakefile +1 -1
  372. data/share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h +1 -1
  373. data/share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h +1 -1
  374. data/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml +50 -42
  375. data/share/sample/zsh-4.3.15/adlint/modules/GNUmakefile +1 -1
  376. data/share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h +1 -1
  377. data/share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h +1 -1
  378. data/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml +50 -42
  379. data/share/sample/zsh-4.3.15/adlint/zle/GNUmakefile +1 -1
  380. data/share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h +1 -1
  381. data/share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h +1 -1
  382. data/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml +50 -42
  383. data/spec/adlint/{c → cc1}/ctrlexpr_spec.rb +51 -49
  384. data/spec/adlint/{c → cc1}/domain_spec.rb +210 -179
  385. data/spec/adlint/{c → cc1}/operator_spec.rb +3 -3
  386. data/spec/adlint/{c → cc1}/syntax_spec.rb +10 -12
  387. data/spec/adlint/{c → cc1}/type_spec.rb +61 -68
  388. data/{lib/adlint/c.rb → spec/adlint/location_spec.rb} +24 -29
  389. data/spec/conf.d/default_traits.yml +38 -37
  390. data/spec/conf.d/empty_cinit.h +1 -1
  391. data/spec/conf.d/empty_pinit.h +1 -1
  392. data/spec/conf.d/project/foo.c +0 -0
  393. data/spec/spec_helper.rb +2 -2
  394. metadata +60 -40
  395. data/lib/adlint/c/domain.rb +0 -7931
  396. data/lib/adlint/c/lexer.rb +0 -252
  397. data/lib/adlint/c/phase.rb +0 -135
  398. data/lib/adlint/exam/c_builtin/c_check.rb +0 -20745
  399. data/lib/adlint/exam/c_builtin/c_check_shima.rb +0 -983
  400. data/lib/adlint/exam/c_builtin/c_code.rb +0 -477
  401. data/lib/adlint/exam/c_builtin/c_metric.rb +0 -818
@@ -1,7 +1,7 @@
1
1
  # Pre-analysis code substitution mechanism.
2
2
  #
3
3
  # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
- # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
4
+ # Copyright:: Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
5
5
  # License:: GPLv3+: GNU General Public License version 3 or later
6
6
  #
7
7
  # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
@@ -11,7 +11,7 @@
11
11
  # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
12
  # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
13
  # / __ |/ /_/ / /___/ / /| / / /
14
- # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
15
15
  #
16
16
  # This file is part of AdLint.
17
17
  #
@@ -37,47 +37,47 @@ module AdLint #:nodoc:
37
37
  module Cpp #:nodoc:
38
38
 
39
39
  class CodeSubstitution
40
- def initialize(pattern_str, replacement_str)
41
- @pattern = StringToPPTokensLexer.new(pattern_str).execute.to_a
42
- @replacement = StringToPPTokensLexer.new(replacement_str).execute.to_a
40
+ def initialize(ptn_str, repl_str)
41
+ @pattern = StringToPPTokensLexer.new(ptn_str).execute.to_a
42
+ @replacement = StringToPPTokensLexer.new(repl_str).execute.to_a
43
43
  end
44
44
 
45
45
  extend Pluggable
46
46
 
47
47
  def_plugin :on_substitution
48
48
 
49
- def execute(tokens)
50
- result = []
51
- index = 0
52
- while first_token = tokens[index]
49
+ def execute(toks)
50
+ res_toks = []
51
+ idx = 0
52
+ while first_tok = toks[idx]
53
53
  matcher = Matcher.new(@pattern)
54
- matched_length = matcher.match(tokens, index)
55
- if matcher.accepted? || index + matched_length == tokens.size
56
- notify_substitution(tokens, index, matched_length)
57
- result.concat(@replacement.map { |t|
58
- Token.new(t.type, t.value, first_token.location, t.type_hint)
54
+ matched_len = matcher.match(toks, idx)
55
+ if matcher.accepted? || idx + matched_len == toks.size
56
+ notify_substitution(toks, idx, matched_len)
57
+ res_toks.concat(@replacement.map { |tok|
58
+ Token.new(tok.type, tok.value, first_tok.location, tok.type_hint)
59
59
  })
60
- index += matched_length
60
+ idx += matched_len
61
61
  else
62
- result.push(first_token)
63
- index += 1
62
+ res_toks.push(first_tok)
63
+ idx += 1
64
64
  end
65
65
  end
66
- result
66
+ res_toks
67
67
  end
68
68
 
69
69
  private
70
- def notify_substitution(tokens, index, length)
71
- matched_tokens = tokens[index, length]
72
- on_substitution.invoke(matched_tokens) unless matched_tokens.empty?
70
+ def notify_substitution(toks, idx, len)
71
+ matched_toks = toks[idx, len]
72
+ on_substitution.invoke(matched_toks) unless matched_toks.empty?
73
73
  end
74
74
  end
75
75
 
76
76
  class Matcher
77
- def initialize(pattern_tokens)
77
+ def initialize(ptn_toks)
78
78
  @state = OuterTokenMatching.new(self)
79
- @pattern_tokens = pattern_tokens
80
- @pattern_index = 0
79
+ @pattern_tokens = ptn_toks
80
+ @pattern_index = 0
81
81
  end
82
82
 
83
83
  def rest_pattern_tokens
@@ -85,24 +85,24 @@ module Cpp #:nodoc:
85
85
  end
86
86
 
87
87
  def next_pattern_token
88
- pattern_token = @pattern_tokens[@pattern_index]
88
+ ptn_tok = @pattern_tokens[@pattern_index]
89
89
  @pattern_index += 1
90
- pattern_token
90
+ ptn_tok
91
91
  end
92
92
 
93
- def match(tokens, index)
94
- return 0 if head = tokens[index] and head.type == :NEW_LINE
93
+ def match(toks, idx)
94
+ return 0 if head = toks[idx] and head.type == :NEW_LINE
95
95
 
96
- match_length = 0
97
- while token = tokens[index]
98
- unless token.type == :NEW_LINE
99
- @state = @state.process(token)
96
+ match_len = 0
97
+ while tok = toks[idx]
98
+ unless tok.type == :NEW_LINE
99
+ @state = @state.process(tok)
100
100
  break unless @state.matching?
101
101
  end
102
- match_length += 1
103
- index += 1
102
+ match_len += 1
103
+ idx += 1
104
104
  end
105
- match_length
105
+ match_len
106
106
  end
107
107
 
108
108
  def accepted?
@@ -124,7 +124,7 @@ module Cpp #:nodoc:
124
124
 
125
125
  attr_reader :matcher
126
126
 
127
- def process(token)
127
+ def process(tok)
128
128
  subclass_responsibility
129
129
  end
130
130
 
@@ -185,22 +185,22 @@ module Cpp #:nodoc:
185
185
  private_constant :Matching
186
186
 
187
187
  class OuterTokenMatching < Matching
188
- def process(token)
189
- if pattern_token = next_pattern_token
190
- if token.value == pattern_token.value
191
- case token.value
188
+ def process(tok)
189
+ if ptn_tok = next_pattern_token
190
+ if tok.value == ptn_tok.value
191
+ case tok.value
192
192
  when "(", "[", "{"
193
193
  InnerTokenMatching.new(matcher, self)
194
194
  else
195
195
  self
196
196
  end
197
197
  else
198
- if pattern_token.value == "__adlint__any"
199
- if sentry_token = rest_pattern_tokens.first and
200
- token.value == sentry_token.value
201
- case token.value
198
+ if ptn_tok.value == "__adlint__any"
199
+ if sentry_tok = rest_pattern_tokens.first and
200
+ tok.value == sentry_tok.value
201
+ case tok.value
202
202
  when "(", "[", "{"
203
- InnerTokenMatching.new(matcher, self).process(token)
203
+ InnerTokenMatching.new(matcher, self).process(tok)
204
204
  else
205
205
  self
206
206
  end
@@ -219,10 +219,10 @@ module Cpp #:nodoc:
219
219
  private_constant :OuterTokenMatching
220
220
 
221
221
  class OuterAnyMatching < Matching
222
- def process(token)
223
- if sentry_token = rest_pattern_tokens.first
224
- if token.value == sentry_token.value
225
- return OuterTokenMatching.new(@matcher).process(token)
222
+ def process(tok)
223
+ if sentry_tok = rest_pattern_tokens.first
224
+ if tok.value == sentry_tok.value
225
+ return OuterTokenMatching.new(@matcher).process(tok)
226
226
  end
227
227
  end
228
228
  self
@@ -231,25 +231,25 @@ module Cpp #:nodoc:
231
231
  private_constant :OuterAnyMatching
232
232
 
233
233
  class InnerTokenMatching < Matching
234
- def initialize(matcher, prev_state)
234
+ def initialize(matcher, prv_state)
235
235
  super(matcher)
236
- @prev_state = prev_state
236
+ @prv_state = prv_state
237
237
  end
238
238
 
239
- def process(token)
240
- if pattern_token = next_pattern_token
241
- if token.value == pattern_token.value
242
- case token.value
239
+ def process(tok)
240
+ if ptn_tok = next_pattern_token
241
+ if tok.value == ptn_tok.value
242
+ case tok.value
243
243
  when "(", "[", "{"
244
244
  InnerTokenMatching.new(matcher, self)
245
245
  when ")", "]", "}"
246
- @prev_state
246
+ @prv_state
247
247
  else
248
248
  self
249
249
  end
250
250
  else
251
- if pattern_token.value == "__adlint__any"
252
- case token.value
251
+ if ptn_tok.value == "__adlint__any"
252
+ case tok.value
253
253
  when "(", "[", "{"
254
254
  InnerAnyMatching.new(matcher, self, 1)
255
255
  else
@@ -267,24 +267,24 @@ module Cpp #:nodoc:
267
267
  private_constant :InnerTokenMatching
268
268
 
269
269
  class InnerAnyMatching < Matching
270
- def initialize(matcher, prev_state, depth)
270
+ def initialize(matcher, prv_state, depth)
271
271
  super(matcher)
272
- @prev_state = prev_state
272
+ @prv_state = prv_state
273
273
  @depth = depth
274
274
  end
275
275
 
276
- def process(token)
277
- case token.value
276
+ def process(tok)
277
+ case tok.value
278
278
  when "(", "[", "{"
279
279
  @depth += 1
280
280
  when ")", "]", "}"
281
281
  @depth -= 1
282
282
  end
283
283
 
284
- if sentry_token = rest_pattern_tokens.first
285
- if token.value == sentry_token.value
284
+ if sentry_tok = rest_pattern_tokens.first
285
+ if tok.value == sentry_tok.value
286
286
  if @depth < 0
287
- return @prev_state.process(token)
287
+ return @prv_state.process(tok)
288
288
  end
289
289
  end
290
290
  end
@@ -1,7 +1,7 @@
1
1
  # AST of C preprocessor language.
2
2
  #
3
3
  # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
- # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
4
+ # Copyright:: Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
5
5
  # License:: GPLv3+: GNU General Public License version 3 or later
6
6
  #
7
7
  # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
@@ -11,7 +11,7 @@
11
11
  # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
12
  # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
13
  # / __ |/ /_/ / /___/ / /| / / /
14
- # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
15
15
  #
16
16
  # This file is part of AdLint.
17
17
  #
@@ -30,6 +30,8 @@
30
30
  #++
31
31
 
32
32
  require "adlint/symbol"
33
+ require "adlint/location"
34
+ require "adlint/exam"
33
35
  require "adlint/util"
34
36
 
35
37
  module AdLint #:nodoc:
@@ -37,6 +39,7 @@ module Cpp #:nodoc:
37
39
 
38
40
  class SyntaxNode
39
41
  include Visitable
42
+ include LocationHolder
40
43
 
41
44
  def location
42
45
  subclass_responsibility
@@ -52,14 +55,14 @@ module Cpp #:nodoc:
52
55
  end
53
56
 
54
57
  class IdentifierList < SyntaxNode
55
- def initialize(identifiers = [])
56
- @identifiers = identifiers
58
+ def initialize(ids = [])
59
+ @identifiers = ids
57
60
  end
58
61
 
59
62
  attr_reader :identifiers
60
63
 
61
- def push(identifier)
62
- @identifiers.push(identifier)
64
+ def push(id)
65
+ @identifiers.push(id)
63
66
  self
64
67
  end
65
68
 
@@ -86,8 +89,8 @@ module Cpp #:nodoc:
86
89
  @group.location
87
90
  end
88
91
 
89
- def concat(preprocessing_file)
90
- @group.group_parts.concat(preprocessing_file.group.group_parts)
92
+ def concat(pp_file)
93
+ @group.group_parts.concat(pp_file.group.group_parts)
91
94
  end
92
95
 
93
96
  def inspect(indent = 0)
@@ -123,10 +126,10 @@ module Cpp #:nodoc:
123
126
 
124
127
  class IfSection < GroupPart
125
128
  def initialize(if_group, elif_groups, else_group, endif_line)
126
- @if_group = if_group
129
+ @if_group = if_group
127
130
  @elif_groups = elif_groups
128
- @else_group = else_group
129
- @endif_line = endif_line
131
+ @else_group = else_group
132
+ @endif_line = endif_line
130
133
  end
131
134
 
132
135
  attr_reader :if_group
@@ -161,9 +164,9 @@ module Cpp #:nodoc:
161
164
  end
162
165
 
163
166
  class IfStatement < IfGroup
164
- def initialize(keyword, expression, group)
167
+ def initialize(keyword, expr, group)
165
168
  super(keyword)
166
- @expression = expression
169
+ @expression = expr
167
170
  @group = group
168
171
  end
169
172
 
@@ -178,9 +181,9 @@ module Cpp #:nodoc:
178
181
  end
179
182
 
180
183
  class IfdefStatement < IfGroup
181
- def initialize(keyword, identifier, group)
184
+ def initialize(keyword, id, group)
182
185
  super(keyword)
183
- @identifier = identifier
186
+ @identifier = id
184
187
  @group = group
185
188
  end
186
189
 
@@ -194,9 +197,9 @@ module Cpp #:nodoc:
194
197
  end
195
198
 
196
199
  class IfndefStatement < IfGroup
197
- def initialize(keyword, identifier, group)
200
+ def initialize(keyword, id, group)
198
201
  super(keyword)
199
- @identifier = identifier
202
+ @identifier = id
200
203
  @group = group
201
204
  end
202
205
 
@@ -217,8 +220,8 @@ module Cpp #:nodoc:
217
220
 
218
221
  attr_reader :elif_statements
219
222
 
220
- def push(elif_statement)
221
- @elif_statements.push(elif_statement)
223
+ def push(elif_stmt)
224
+ @elif_statements.push(elif_stmt)
222
225
  self
223
226
  end
224
227
 
@@ -241,9 +244,9 @@ module Cpp #:nodoc:
241
244
  end
242
245
 
243
246
  class ElifStatement < ElifGroup
244
- def initialize(keyword, expression, group)
247
+ def initialize(keyword, expr, group)
245
248
  super(keyword)
246
- @expression = expression
249
+ @expression = expr
247
250
  @group = group
248
251
  end
249
252
 
@@ -313,7 +316,7 @@ module Cpp #:nodoc:
313
316
  class IncludeLine < ControlLine
314
317
  def initialize(keyword, header_name, include_depth)
315
318
  super(keyword)
316
- @header_name = header_name
319
+ @header_name = header_name
317
320
  @include_depth = include_depth
318
321
  end
319
322
 
@@ -323,8 +326,8 @@ module Cpp #:nodoc:
323
326
  end
324
327
 
325
328
  class UserIncludeLine < IncludeLine
326
- def initialize(keyword, user_header_name, include_depth)
327
- super(keyword, user_header_name, include_depth)
329
+ def initialize(keyword, usr_header_name, include_depth)
330
+ super(keyword, usr_header_name, include_depth)
328
331
  end
329
332
 
330
333
  def inspect(indent = 0)
@@ -335,8 +338,8 @@ module Cpp #:nodoc:
335
338
  class UserIncludeNextLine < UserIncludeLine; end
336
339
 
337
340
  class SystemIncludeLine < IncludeLine
338
- def initialize(keyword, system_header_name, include_depth)
339
- super(keyword, system_header_name, include_depth)
341
+ def initialize(keyword, sys_header_name, include_depth)
342
+ super(keyword, sys_header_name, include_depth)
340
343
  end
341
344
 
342
345
  def inspect(indent = 0)
@@ -349,11 +352,11 @@ module Cpp #:nodoc:
349
352
  class DefineLine < ControlLine
350
353
  include SymbolicElement
351
354
 
352
- def initialize(keyword, identifier, replacement_list, symbol)
355
+ def initialize(keyword, id, repl_list, sym)
353
356
  super(keyword)
354
- @identifier = identifier
355
- @replacement_list = replacement_list
356
- @symbol = symbol
357
+ @identifier = id
358
+ @replacement_list = repl_list
359
+ @symbol = sym
357
360
  end
358
361
 
359
362
  attr_reader :identifier
@@ -369,17 +372,17 @@ module Cpp #:nodoc:
369
372
 
370
373
  class PseudoObjectLikeDefineLine < DefineLine
371
374
  def initialize(name_str)
372
- super(nil, Token.new(:PP_TOKEN, name_str, Location.new), nil, nil)
375
+ super(Token.new(:DEFINE, "#define", Location.new),
376
+ Token.new(:PP_TOKEN, name_str, Location.new), nil, nil)
373
377
  end
374
378
 
375
- def mark_as_referred_by(token) end
379
+ def mark_as_referred_by(tok) end
376
380
  end
377
381
 
378
382
  class FunctionLikeDefineLine < DefineLine
379
- def initialize(keyword, identifier, identifier_list, replacement_list,
380
- symbol)
381
- super(keyword, identifier, replacement_list, symbol)
382
- @identifier_list = identifier_list
383
+ def initialize(keyword, id, id_list, repl_list, sym)
384
+ super(keyword, id, repl_list, sym)
385
+ @identifier_list = id_list
383
386
  end
384
387
 
385
388
  attr_reader :identifier_list
@@ -395,14 +398,14 @@ module Cpp #:nodoc:
395
398
 
396
399
  class PseudoFunctionLikeDefineLine < FunctionLikeDefineLine
397
400
  def initialize(name_str, param_names)
398
- identifier_list = IdentifierList.new(
401
+ id_list = IdentifierList.new(
399
402
  param_names.map { |str| Token.new(:PP_TOKEN, str, Location.new) })
400
403
 
401
- super(nil, Token.new(:PP_TOKEN, name_str, Location.new), identifier_list,
402
- nil, nil)
404
+ super(Token.new(:DEFINE, "#define", Location.new),
405
+ Token.new(:PP_TOKEN, name_str, Location.new), id_list, nil, nil)
403
406
  end
404
407
 
405
- def mark_as_referred_by(token) end
408
+ def mark_as_referred_by(tok) end
406
409
  end
407
410
 
408
411
  class VaFunctionLikeDefineLine < FunctionLikeDefineLine
@@ -412,9 +415,9 @@ module Cpp #:nodoc:
412
415
  end
413
416
 
414
417
  class UndefLine < ControlLine
415
- def initialize(keyword, identifier)
418
+ def initialize(keyword, id)
416
419
  super(keyword)
417
- @identifier = identifier
420
+ @identifier = id
418
421
  end
419
422
 
420
423
  attr_reader :identifier
@@ -425,9 +428,9 @@ module Cpp #:nodoc:
425
428
  end
426
429
 
427
430
  class LineLine < ControlLine
428
- def initialize(keyword, pp_tokens)
431
+ def initialize(keyword, pp_toks)
429
432
  super(keyword)
430
- @pp_tokens = pp_tokens
433
+ @pp_tokens = pp_toks
431
434
  end
432
435
 
433
436
  attr_reader :pp_tokens
@@ -438,9 +441,9 @@ module Cpp #:nodoc:
438
441
  end
439
442
 
440
443
  class ErrorLine < ControlLine
441
- def initialize(keyword, pp_tokens)
444
+ def initialize(keyword, pp_toks)
442
445
  super(keyword)
443
- @pp_tokens = pp_tokens
446
+ @pp_tokens = pp_toks
444
447
  end
445
448
 
446
449
  attr_reader :pp_tokens
@@ -452,9 +455,9 @@ module Cpp #:nodoc:
452
455
  end
453
456
 
454
457
  class PragmaLine < ControlLine
455
- def initialize(keyword, pp_tokens)
458
+ def initialize(keyword, pp_toks)
456
459
  super(keyword)
457
- @pp_tokens = pp_tokens
460
+ @pp_tokens = pp_toks
458
461
  end
459
462
 
460
463
  attr_reader :pp_tokens
@@ -466,8 +469,8 @@ module Cpp #:nodoc:
466
469
  end
467
470
 
468
471
  class TextLine < GroupPart
469
- def initialize(token)
470
- @token = token
472
+ def initialize(tok)
473
+ @token = tok
471
474
  end
472
475
 
473
476
  attr_reader :token
@@ -482,8 +485,8 @@ module Cpp #:nodoc:
482
485
  end
483
486
 
484
487
  class NullDirective < GroupPart
485
- def initialize(token)
486
- @token = token
488
+ def initialize(tok)
489
+ @token = tok
487
490
  end
488
491
 
489
492
  attr_reader :token
@@ -498,8 +501,8 @@ module Cpp #:nodoc:
498
501
  end
499
502
 
500
503
  class UnknownDirective < GroupPart
501
- def initialize(token)
502
- @token = token
504
+ def initialize(tok)
505
+ @token = tok
503
506
  end
504
507
 
505
508
  attr_reader :token
@@ -573,8 +576,8 @@ module Cpp #:nodoc:
573
576
 
574
577
  attr_reader :tokens
575
578
 
576
- def push(token)
577
- @tokens.push(token)
579
+ def push(tok)
580
+ @tokens.push(tok)
578
581
  self
579
582
  end
580
583
 
@@ -585,8 +588,8 @@ module Cpp #:nodoc:
585
588
  def may_represent_expression?
586
589
  return false if @tokens.size < 2
587
590
 
588
- @tokens.all? do |pp_token|
589
- case pp_token.value
591
+ @tokens.all? do |pp_tok|
592
+ case pp_tok.value
590
593
  when "{", "}"
591
594
  false
592
595
  when ";"
@@ -606,8 +609,8 @@ module Cpp #:nodoc:
606
609
  return false if @tokens.size < 2
607
610
 
608
611
  if @tokens.first.value == "{" && @tokens.last.value == "}"
609
- @tokens.all? do |pp_token|
610
- case pp_token.value
612
+ @tokens.all? do |pp_tok|
613
+ case pp_tok.value
611
614
  when "while", "do", "for", "if", "else", "switch", "case", "default",
612
615
  "goto", "return", "break", "continue"
613
616
  false
@@ -626,7 +629,7 @@ module Cpp #:nodoc:
626
629
  return false if @tokens.size < 2
627
630
 
628
631
  if @tokens.first.value == "{" && @tokens.last.value == "}"
629
- @tokens.any? { |pp_token| pp_token.value == ";" }
632
+ @tokens.any? { |pp_tok| pp_tok.value == ";" }
630
633
  else
631
634
  false
632
635
  end
@@ -641,8 +644,8 @@ module Cpp #:nodoc:
641
644
  end
642
645
 
643
646
  def may_represent_specifier_qualifier_list?
644
- @tokens.select { |pp_token|
645
- case pp_token.value
647
+ @tokens.select { |pp_tok|
648
+ case pp_tok.value
646
649
  when "const", "volatile", "restrict"
647
650
  true
648
651
  when "*"
@@ -657,8 +660,8 @@ module Cpp #:nodoc:
657
660
  end
658
661
 
659
662
  def may_represent_declaration_specifiers_head?
660
- @tokens.all? do |pp_token|
661
- case pp_token.value
663
+ @tokens.all? do |pp_tok|
664
+ case pp_tok.value
662
665
  when "typedef", "extern", "static", "auto", "register"
663
666
  true
664
667
  when "const", "volatile", "restrict"
@@ -695,7 +698,7 @@ module Cpp #:nodoc:
695
698
  end
696
699
 
697
700
  def to_s
698
- @tokens.map { |t| t.value }.join(" ")
701
+ @tokens.map { |tok| tok.value }.join(" ")
699
702
  end
700
703
 
701
704
  def inspect(indent = 0)
@@ -704,8 +707,8 @@ module Cpp #:nodoc:
704
707
  end
705
708
 
706
709
  class Expression < SyntaxNode
707
- def initialize(value)
708
- @value = value
710
+ def initialize(val)
711
+ @value = val
709
712
  end
710
713
 
711
714
  attr_reader :value
@@ -716,9 +719,9 @@ module Cpp #:nodoc:
716
719
  end
717
720
 
718
721
  class ErrorExpression < Expression
719
- def initialize(error_token)
722
+ def initialize(err_tok)
720
723
  super(0)
721
- @error_token = error_token
724
+ @error_token = err_tok
722
725
  end
723
726
 
724
727
  attr_reader :error_token
@@ -739,9 +742,9 @@ module Cpp #:nodoc:
739
742
  class PrimaryExpression < Expression; end
740
743
 
741
744
  class ConstantSpecifier < PrimaryExpression
742
- def initialize(value, constant)
743
- super(value)
744
- @constant = constant
745
+ def initialize(val, const)
746
+ super(val)
747
+ @constant = const
745
748
  end
746
749
 
747
750
  attr_reader :constant
@@ -760,9 +763,9 @@ module Cpp #:nodoc:
760
763
  end
761
764
 
762
765
  class GroupedExpression < PrimaryExpression
763
- def initialize(value, expression)
764
- super(value)
765
- @expression = expression
766
+ def initialize(val, expr)
767
+ super(val)
768
+ @expression = expr
766
769
  end
767
770
 
768
771
  attr_reader :expression
@@ -782,9 +785,9 @@ module Cpp #:nodoc:
782
785
  end
783
786
 
784
787
  class UnaryExpression < Expression
785
- def initialize(value, operator)
786
- super(value)
787
- @operator = operator
788
+ def initialize(val, op)
789
+ super(val)
790
+ @operator = op
788
791
  end
789
792
 
790
793
  attr_reader :operator
@@ -795,9 +798,9 @@ module Cpp #:nodoc:
795
798
  end
796
799
 
797
800
  class UnaryArithmeticExpression < UnaryExpression
798
- def initialize(value, operator, expression)
799
- super(value, operator)
800
- @expression = expression
801
+ def initialize(val, op, expr)
802
+ super(val, op)
803
+ @expression = expr
801
804
  end
802
805
 
803
806
  attr_reader :expression
@@ -813,9 +816,9 @@ module Cpp #:nodoc:
813
816
  end
814
817
 
815
818
  class DefinedExpression < UnaryExpression
816
- def initialize(value, operator, identifier)
817
- super(value, operator)
818
- @identifier = identifier
819
+ def initialize(val, op, id)
820
+ super(val, op)
821
+ @identifier = id
819
822
  end
820
823
 
821
824
  attr_reader :identifier
@@ -831,11 +834,11 @@ module Cpp #:nodoc:
831
834
  end
832
835
 
833
836
  class BinaryExpression < Expression
834
- def initialize(value, operator, lhs_expression, rhs_expression)
835
- super(value)
836
- @operator = operator
837
- @lhs_expression = lhs_expression
838
- @rhs_expression = rhs_expression
837
+ def initialize(val, op, lhs_expr, rhs_expr)
838
+ super(val)
839
+ @operator = op
840
+ @lhs_expression = lhs_expr
841
+ @rhs_expression = rhs_expr
839
842
  end
840
843
 
841
844
  attr_reader :operator
@@ -878,11 +881,11 @@ module Cpp #:nodoc:
878
881
  class LogicalOrExpression < BinaryExpression; end
879
882
 
880
883
  class ConditionalExpression < Expression
881
- def initialize(value, condition, first_expression, second_expression)
882
- super(value)
883
- @condition = condition
884
- @first_expression = first_expression
885
- @second_expression = second_expression
884
+ def initialize(val, cond, fst_expr, snd_expr)
885
+ super(val)
886
+ @condition = cond
887
+ @first_expression = fst_expr
888
+ @second_expression = snd_expr
886
889
  end
887
890
 
888
891
  attr_reader :condition
@@ -906,8 +909,8 @@ module Cpp #:nodoc:
906
909
  end
907
910
 
908
911
  class CommaSeparatedExpression < Expression
909
- def initialize(value)
910
- super(value)
912
+ def initialize(val)
913
+ super(val)
911
914
  @expressions = []
912
915
  end
913
916
 
@@ -1102,7 +1105,7 @@ module Cpp #:nodoc:
1102
1105
  end
1103
1106
 
1104
1107
  def visit_comma_separated_expression(node)
1105
- node.expressions.each { |expression| expression.accept(self) }
1108
+ node.expressions.each { |expr| expr.accept(self) }
1106
1109
  end
1107
1110
  end
1108
1111
 
@@ -1196,177 +1199,58 @@ module Cpp #:nodoc:
1196
1199
  def_plugin :enter_comma_separated_expression
1197
1200
  def_plugin :leave_comma_separated_expression
1198
1201
 
1199
- def visit_identifier_list(node)
1200
- visit_with_notifying(__method__, node) { super }
1201
- end
1202
-
1203
- def visit_preprocessing_file(node)
1204
- visit_with_notifying(__method__, node) { super }
1205
- end
1206
-
1207
- def visit_group(node)
1208
- visit_with_notifying(__method__, node) { super }
1209
- end
1210
-
1211
- def visit_if_section(node)
1212
- visit_with_notifying(__method__, node) { super }
1213
- end
1214
-
1215
- def visit_if_statement(node)
1216
- visit_with_notifying(__method__, node) { super }
1217
- end
1218
-
1219
- def visit_ifdef_statement(node)
1220
- visit_with_notifying(__method__, node) { super }
1221
- end
1222
-
1223
- def visit_ifndef_statement(node)
1224
- visit_with_notifying(__method__, node) { super }
1225
- end
1226
-
1227
- def visit_elif_groups(node)
1228
- visit_with_notifying(__method__, node) { super }
1229
- end
1230
-
1231
- def visit_elif_statement(node)
1232
- visit_with_notifying(__method__, node) { super }
1233
- end
1234
-
1235
- def visit_else_statement(node)
1236
- visit_with_notifying(__method__, node) { super }
1237
- end
1238
-
1239
- def visit_endif_line(node)
1240
- visit_with_notifying(__method__, node) { super }
1241
- end
1242
-
1243
- def visit_user_include_line(node)
1244
- visit_with_notifying(__method__, node) { super }
1245
- end
1246
-
1247
- def visit_system_include_line(node)
1248
- visit_with_notifying(__method__, node) { super }
1249
- end
1250
-
1251
- def visit_user_include_next_line(node)
1252
- visit_with_notifying(__method__, node) { super }
1253
- end
1254
-
1255
- def visit_system_include_next_line(node)
1256
- visit_with_notifying(__method__, node) { super }
1257
- end
1258
-
1259
- def visit_object_like_define_line(node)
1260
- visit_with_notifying(__method__, node) { super }
1261
- end
1262
-
1263
- def visit_function_like_define_line(node)
1264
- visit_with_notifying(__method__, node) { super }
1265
- end
1266
-
1267
- def visit_va_function_like_define_line(node)
1268
- visit_with_notifying(__method__, node) { super }
1269
- end
1270
-
1271
- def visit_undef_line(node)
1272
- visit_with_notifying(__method__, node) { super }
1273
- end
1274
-
1275
- def visit_line_line(node)
1276
- visit_with_notifying(__method__, node) { super }
1277
- end
1278
-
1279
- def visit_error_line(node)
1280
- visit_with_notifying(__method__, node) { super }
1281
- end
1282
-
1283
- def visit_pragma_line(node)
1284
- visit_with_notifying(__method__, node) { super }
1285
- end
1286
-
1287
- def visit_text_line(node)
1288
- visit_with_notifying(__method__, node) { super }
1289
- end
1290
-
1291
- def visit_null_directive(node)
1292
- visit_with_notifying(__method__, node) { super }
1293
- end
1294
-
1295
- def visit_unknown_directive(node)
1296
- visit_with_notifying(__method__, node) { super }
1297
- end
1298
-
1299
- def visit_pp_tokens(node)
1300
- visit_with_notifying(__method__, node) { super }
1301
- end
1302
-
1303
- def visit_error_expression(node)
1304
- visit_with_notifying(__method__, node) { super }
1305
- end
1306
-
1307
- def visit_constant_specifier(node)
1308
- visit_with_notifying(__method__, node) { super }
1309
- end
1310
-
1311
- def visit_grouped_expression(node)
1312
- visit_with_notifying(__method__, node) { super }
1313
- end
1314
-
1315
- def visit_unary_arithmetic_expression(node)
1316
- visit_with_notifying(__method__, node) { super }
1317
- end
1318
-
1319
- def visit_defined_expression(node)
1320
- visit_with_notifying(__method__, node) { super }
1321
- end
1322
-
1323
- def visit_multiplicative_expression(node)
1324
- visit_with_notifying(__method__, node) { super }
1325
- end
1326
-
1327
- def visit_additive_expression(node)
1328
- visit_with_notifying(__method__, node) { super }
1329
- end
1330
-
1331
- def visit_shift_expression(node)
1332
- visit_with_notifying(__method__, node) { super }
1333
- end
1334
-
1335
- def visit_relational_expression(node)
1336
- visit_with_notifying(__method__, node) { super }
1337
- end
1338
-
1339
- def visit_equality_expression(node)
1340
- visit_with_notifying(__method__, node) { super }
1341
- end
1342
-
1343
- def visit_and_expression(node)
1344
- visit_with_notifying(__method__, node) { super }
1345
- end
1346
-
1347
- def visit_exclusive_or_expression(node)
1348
- visit_with_notifying(__method__, node) { super }
1349
- end
1350
-
1351
- def visit_inclusive_or_expression(node)
1352
- visit_with_notifying(__method__, node) { super }
1353
- end
1354
-
1355
- def visit_logical_and_expression(node)
1356
- visit_with_notifying(__method__, node) { super }
1357
- end
1358
-
1359
- def visit_logical_or_expression(node)
1360
- visit_with_notifying(__method__, node) { super }
1361
- end
1362
-
1363
- def visit_conditional_expression(node)
1364
- visit_with_notifying(__method__, node) { super }
1365
- end
1366
-
1367
- def visit_comma_separated_expression(node)
1368
- visit_with_notifying(__method__, node) { super }
1369
- end
1202
+ def self.def_visitor_method(node_name)
1203
+ class_eval <<-EOS
1204
+ define_method("visit_#{node_name}") do |*args|
1205
+ visit_with_notifying(__method__, args.first) { super(args.first) }
1206
+ end
1207
+ EOS
1208
+ end
1209
+ private_class_method :def_visitor_method
1210
+
1211
+ def_visitor_method :identifier_list
1212
+ def_visitor_method :preprocessing_file
1213
+ def_visitor_method :group
1214
+ def_visitor_method :if_section
1215
+ def_visitor_method :if_statement
1216
+ def_visitor_method :ifdef_statement
1217
+ def_visitor_method :ifndef_statement
1218
+ def_visitor_method :elif_groups
1219
+ def_visitor_method :elif_statement
1220
+ def_visitor_method :else_statement
1221
+ def_visitor_method :endif_line
1222
+ def_visitor_method :user_include_line
1223
+ def_visitor_method :system_include_line
1224
+ def_visitor_method :user_include_next_line
1225
+ def_visitor_method :system_include_next_line
1226
+ def_visitor_method :object_like_define_line
1227
+ def_visitor_method :function_like_define_line
1228
+ def_visitor_method :va_function_like_define_line
1229
+ def_visitor_method :undef_line
1230
+ def_visitor_method :line_line
1231
+ def_visitor_method :error_line
1232
+ def_visitor_method :pragma_line
1233
+ def_visitor_method :text_line
1234
+ def_visitor_method :null_directive
1235
+ def_visitor_method :unknown_directive
1236
+ def_visitor_method :pp_tokens
1237
+ def_visitor_method :error_expression
1238
+ def_visitor_method :constant_specifier
1239
+ def_visitor_method :grouped_expression
1240
+ def_visitor_method :unary_arithmetic_expression
1241
+ def_visitor_method :defined_expression
1242
+ def_visitor_method :multiplicative_expression
1243
+ def_visitor_method :additive_expression
1244
+ def_visitor_method :shift_expression
1245
+ def_visitor_method :relational_expression
1246
+ def_visitor_method :equality_expression
1247
+ def_visitor_method :and_expression
1248
+ def_visitor_method :exclusive_or_expression
1249
+ def_visitor_method :inclusive_or_expression
1250
+ def_visitor_method :logical_and_expression
1251
+ def_visitor_method :logical_or_expression
1252
+ def_visitor_method :conditional_expression
1253
+ def_visitor_method :comma_separated_expression
1370
1254
 
1371
1255
  private
1372
1256
  def visit_with_notifying(caller_method, node, &block)
@@ -1380,9 +1264,7 @@ module Cpp #:nodoc:
1380
1264
  module SyntaxNodeCollector
1381
1265
  def collect_define_lines(node)
1382
1266
  if node
1383
- DefineLineCollector.new.tap { |collector|
1384
- node.accept(collector)
1385
- }.define_lines
1267
+ DefineLineCollector.new.tap { |col| node.accept(col) }.define_lines
1386
1268
  else
1387
1269
  []
1388
1270
  end
@@ -1391,9 +1273,7 @@ module Cpp #:nodoc:
1391
1273
 
1392
1274
  def collect_undef_lines(node)
1393
1275
  if node
1394
- UndefLineCollector.new.tap { |collector|
1395
- node.accept(collector)
1396
- }.undef_lines
1276
+ UndefLineCollector.new.tap { |col| node.accept(col) }.undef_lines
1397
1277
  else
1398
1278
  []
1399
1279
  end