adlint 2.6.14 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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