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
  # C preprocessor macros.
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
  #
@@ -39,6 +39,8 @@ module AdLint #:nodoc:
39
39
  module Cpp #:nodoc:
40
40
 
41
41
  class Macro
42
+ include LocationHolder
43
+
42
44
  def initialize(define_line)
43
45
  @define_line = define_line
44
46
  end
@@ -57,8 +59,8 @@ module Cpp #:nodoc:
57
59
  @define_line.location
58
60
  end
59
61
 
60
- def expand(tokens, macro_table, context)
61
- @define_line.mark_as_referred_by(tokens.first)
62
+ def expand(toks, macro_tbl, repl_ctxt)
63
+ @define_line.mark_as_referred_by(toks.first)
62
64
  end
63
65
 
64
66
  def function_like?
@@ -67,28 +69,28 @@ module Cpp #:nodoc:
67
69
  end
68
70
 
69
71
  class ObjectLikeMacro < Macro
70
- def replaceable_size(tokens)
71
- if tokens.first.value == "NULL" then
72
+ def replaceable_size(toks)
73
+ if toks.first.value == "NULL" then
72
74
  0
73
75
  else
74
- name.value == tokens.first.value ? 1 : 0
76
+ name.value == toks.first.value ? 1 : 0
75
77
  end
76
78
  end
77
79
 
78
- def expand(tokens, macro_table, context)
80
+ def expand(toks, macro_tbl, repl_ctxt)
79
81
  super
80
82
 
81
- if replacement_list
82
- location = tokens.first.location
83
- result = replacement_list.tokens.map { |t|
84
- ReplacedToken.new(t.type, t.value, location, t.type_hint, false)
83
+ if repl_list = self.replacement_list
84
+ loc = toks.first.location
85
+ res_toks = repl_list.tokens.map { |tok|
86
+ ReplacedToken.new(tok.type, tok.value, loc, tok.type_hint, false)
85
87
  }
86
88
  else
87
- result = []
89
+ res_toks = []
88
90
  end
89
91
 
90
- macro_table.notify_object_like_macro_replacement(self, tokens, result)
91
- result
92
+ macro_tbl.notify_object_like_macro_replacement(self, toks, res_toks)
93
+ res_toks
92
94
  end
93
95
 
94
96
  def function_like?; false end
@@ -98,7 +100,7 @@ module Cpp #:nodoc:
98
100
  def initialize(define_line)
99
101
  super
100
102
  if params = define_line.identifier_list
101
- @parameter_names = params.identifiers.map { |t| t.value }
103
+ @parameter_names = params.identifiers.map { |tok| tok.value }
102
104
  else
103
105
  @parameter_names = []
104
106
  end
@@ -106,137 +108,137 @@ module Cpp #:nodoc:
106
108
 
107
109
  attr_reader :parameter_names
108
110
 
109
- def replaceable_size(tokens)
110
- return 0 unless name.value == tokens.first.value
111
- args, index = parse_arguments(tokens, 1)
111
+ def replaceable_size(toks)
112
+ return 0 unless name.value == toks.first.value
113
+ args, idx = parse_arguments(toks, 1)
112
114
  case
113
115
  when args && @parameter_names.empty?
114
- index + 1
116
+ idx + 1
115
117
  when args && @parameter_names.size >= args.size
116
- index + 1
118
+ idx + 1
117
119
  else
118
120
  0
119
121
  end
120
122
  end
121
123
 
122
- def expand(tokens, macro_table, context)
124
+ def expand(toks, macro_tbl, repl_ctxt)
123
125
  super
124
126
 
125
- args, * = parse_arguments(tokens, 1)
127
+ args, * = parse_arguments(toks, 1)
126
128
  args = [] if @parameter_names.empty?
127
129
  args_hash =
128
- @parameter_names.zip(args).each_with_object({}) { |(name, arg), hash|
129
- hash[name] = arg
130
+ @parameter_names.zip(args).each_with_object({}) { |(param, arg), hash|
131
+ hash[param] = arg
130
132
  }
131
133
 
132
- result = expand_replacement_list(args_hash, tokens.first.location,
133
- macro_table, context)
134
- macro_table.notify_function_like_macro_replacement(self, tokens, args,
135
- result)
136
- result
134
+ res_toks = expand_replacement_list(args_hash, toks.first.location,
135
+ macro_tbl, repl_ctxt)
136
+ macro_tbl.notify_function_like_macro_replacement(self, toks, args,
137
+ res_toks)
138
+ res_toks
137
139
  end
138
140
 
139
141
  def function_like?; true end
140
142
 
141
143
  private
142
- def parse_arguments(tokens, index)
143
- while token = tokens[index]
144
+ def parse_arguments(toks, idx)
145
+ while tok = toks[idx]
144
146
  case
145
- when token.type == :NEW_LINE
146
- index += 1
147
- when token.value == "("
148
- index += 1
147
+ when tok.type == :NEW_LINE
148
+ idx += 1
149
+ when tok.value == "("
150
+ idx += 1
149
151
  break
150
152
  else
151
- return nil, index
153
+ return nil, idx
152
154
  end
153
155
  end
154
- return nil, index unless token
156
+ return nil, idx unless tok
155
157
 
156
158
  args = []
157
159
  loop do
158
- arg, index, last = parse_one_argument(tokens, index)
160
+ arg, idx, lst = parse_one_argument(toks, idx)
159
161
  args.push(arg)
160
- break if last
162
+ break if lst
161
163
  end
162
- return args, index
164
+ return args, idx
163
165
  end
164
166
 
165
- def parse_one_argument(tokens, index)
167
+ def parse_one_argument(toks, idx)
166
168
  arg = []
167
169
  paren_depth = 0
168
- while token = tokens[index]
169
- case token.value
170
+ while tok = toks[idx]
171
+ case tok.value
170
172
  when "("
171
- arg.push(token)
173
+ arg.push(tok)
172
174
  paren_depth += 1
173
175
  when ")"
174
176
  paren_depth -= 1
175
177
  if paren_depth >= 0
176
- arg.push(token)
178
+ arg.push(tok)
177
179
  else
178
- return arg, index, true
180
+ return arg, idx, true
179
181
  end
180
182
  when ","
181
183
  if paren_depth > 0
182
- arg.push(token)
184
+ arg.push(tok)
183
185
  else
184
- return arg, index + 1, false
186
+ return arg, idx + 1, false
185
187
  end
186
188
  when "\n"
187
189
  ;
188
190
  else
189
- arg.push(token)
191
+ arg.push(tok)
190
192
  end
191
- index += 1
193
+ idx += 1
192
194
  end
193
- return arg, index, true # NOTREACHED
195
+ return arg, idx, true # NOTREACHED
194
196
  end
195
197
 
196
- def expand_replacement_list(args, location, macro_table, context)
197
- return [] unless replacement_list
198
+ def expand_replacement_list(args, loc, macro_tbl, repl_ctxt)
199
+ unless repl_list = self.replacement_list
200
+ return []
201
+ end
198
202
 
199
- result = []
200
- index = 0
201
- while curr_token = replacement_list.tokens[index]
202
- next_token = replacement_list.tokens[index + 1]
203
+ res_toks = []
204
+ idx = 0
205
+ while cur_tok = repl_list.tokens[idx]
206
+ nxt_tok = repl_list.tokens[idx + 1]
203
207
 
204
208
  case
205
- when arg = args[curr_token.value]
206
- substitute_argument(curr_token, next_token, arg, location, result,
207
- macro_table, context)
208
- when curr_token.value == "#"
209
- if next_token
210
- stringized = stringize_argument(args[next_token.value], location,
211
- macro_table)
212
- result.push(stringized)
213
- index += 1
209
+ when arg = args[cur_tok.value]
210
+ substitute_argument(cur_tok, nxt_tok, arg, loc, res_toks, macro_tbl,
211
+ repl_ctxt)
212
+ when cur_tok.value == "#"
213
+ if nxt_tok
214
+ tok = stringize_argument(args[nxt_tok.value], loc, macro_tbl)
215
+ res_toks.push(tok)
216
+ idx += 1
214
217
  end
215
- when curr_token.value == "##" && next_token.value == "#"
216
- if next_next_token = replacement_list.tokens[index + 2]
217
- stringized = stringize_argument(args[next_next_token.value],
218
- location, macro_table)
219
- concat_with_last_token([stringized], location, result, macro_table)
220
- index += 2
218
+ when cur_tok.value == "##" && nxt_tok.value == "#"
219
+ if nxt_nxt_tok = repl_list.tokens[idx + 2]
220
+ tok = stringize_argument(args[nxt_nxt_tok.value], loc, macro_tbl)
221
+ concat_with_last_token([tok], loc, res_toks, macro_tbl)
222
+ idx += 2
221
223
  end
222
- when curr_token.value == "##"
223
- if next_token and arg = args[next_token.value]
224
- concat_with_last_token(arg, location, result, macro_table)
224
+ when cur_tok.value == "##"
225
+ if nxt_tok and arg = args[nxt_tok.value]
226
+ concat_with_last_token(arg, loc, res_toks, macro_tbl)
225
227
  else
226
- concat_with_last_token([next_token], location, result, macro_table)
228
+ concat_with_last_token([nxt_tok], loc, res_toks, macro_tbl)
227
229
  end
228
- index += 1
230
+ idx += 1
229
231
  else
230
- result.push(ReplacedToken.new(curr_token.type, curr_token.value,
231
- location, curr_token.type_hint, false))
232
+ res_toks.push(ReplacedToken.new(cur_tok.type, cur_tok.value, loc,
233
+ cur_tok.type_hint, false))
232
234
  end
233
- index += 1
235
+ idx += 1
234
236
  end
235
- result
237
+ res_toks
236
238
  end
237
239
 
238
- def substitute_argument(param_token, next_token, arg, location, result,
239
- macro_table, context)
240
+ def substitute_argument(param_tok, nxt_tok, arg, loc, res_toks, macro_tbl,
241
+ repl_ctxt)
240
242
  # NOTE: The ISO C99 standard says;
241
243
  #
242
244
  # 6.10.3.1 Argument substitution
@@ -250,19 +252,19 @@ module Cpp #:nodoc:
250
252
  # tokens are completely macro replaced as if they formed the rest of
251
253
  # the preprocessing file; no other preprocessing tokens are available.
252
254
 
253
- if next_token && next_token.value == "##"
254
- result.concat(arg.map { |t|
255
- ReplacedToken.new(t.type, t.value, location, t.type_hint, false)
255
+ if nxt_tok && nxt_tok.value == "##"
256
+ res_toks.concat(arg.map { |tok|
257
+ ReplacedToken.new(tok.type, tok.value, loc, tok.type_hint, false)
256
258
  })
257
259
  else
258
- macro_table.replace(arg, context)
259
- result.concat(arg.map { |t|
260
- ReplacedToken.new(t.type, t.value, location, t.type_hint, true)
260
+ macro_tbl.replace(arg, repl_ctxt)
261
+ res_toks.concat(arg.map { |tok|
262
+ ReplacedToken.new(tok.type, tok.value, loc, tok.type_hint, true)
261
263
  })
262
264
  end
263
265
  end
264
266
 
265
- def stringize_argument(arg, expansion_location, macro_table)
267
+ def stringize_argument(arg, expansion_loc, macro_tbl)
266
268
  # NOTE: The ISO C99 standard says;
267
269
  #
268
270
  # 6.10.3.2 The # operator
@@ -298,18 +300,17 @@ module Cpp #:nodoc:
298
300
  # NOTE: This code does not concern about contents of the string literal.
299
301
  # But, it is enough for analysis.
300
302
 
301
- str = arg.map { |token| token.value }.join
303
+ str = arg.map { |tok| tok.value }.join
302
304
  if str =~ /((:?\\*))\\\z/ && $1.length.even?
303
305
  str.chop!
304
- macro_table.notify_last_backslash_ignored(arg.last)
306
+ macro_tbl.notify_last_backslash_ignored(arg.last)
305
307
  end
306
308
 
307
309
  ReplacedToken.new(:PP_TOKEN, "\"#{str.gsub(/["\\]/) { "\\" + $& }}\"",
308
- expansion_location, :STRING_LITERAL, false)
310
+ expansion_loc, :STRING_LITERAL, false)
309
311
  end
310
312
 
311
- def concat_with_last_token(arg_tokens, expansion_location, result_tokens,
312
- macro_table)
313
+ def concat_with_last_token(arg_toks, expansion_loc, res_toks, macro_tbl)
313
314
  # NOTE: The ISO C99 standard says;
314
315
  #
315
316
  # 6.10.3.3 The ## operator
@@ -341,28 +342,27 @@ module Cpp #:nodoc:
341
342
  # The resulting token is available for further macro replacement. The
342
343
  # order of evaluation of ## operators is unspecified.
343
344
 
344
- if lhs = result_tokens.pop
345
- if rhs = arg_tokens.first
345
+ if lhs = res_toks.pop
346
+ if rhs = arg_toks.first
346
347
  # NOTE: To avoid syntax error when the concatenated token can be
347
348
  # retokenize to two or more tokens.
348
- new_tokens = StringToPPTokensLexer.new(lhs.value + rhs.value).execute
349
- new_tokens.map! do |token|
350
- ReplacedToken.new(token.type, token.value, expansion_location,
351
- token.type_hint, false)
349
+ new_toks = StringToPPTokensLexer.new(lhs.value + rhs.value).execute
350
+ new_toks.map! do |tok|
351
+ ReplacedToken.new(tok.type, tok.value, expansion_loc,
352
+ tok.type_hint, false)
352
353
  end
353
- result_tokens.concat(new_tokens)
354
- result_tokens.concat(arg_tokens[1..-1].map { |token|
355
- ReplacedToken.new(token.type, token.value, expansion_location,
356
- token.type_hint, false)
354
+ res_toks.concat(new_toks)
355
+ res_toks.concat(arg_toks[1..-1].map { |tok|
356
+ ReplacedToken.new(tok.type, tok.value, expansion_loc,
357
+ tok.type_hint, false)
357
358
  })
358
359
  else
359
- new_tokens = [ReplacedToken.new(lhs.type, lhs.value,
360
- expansion_location, lhs.type_hint,
361
- false)]
362
- result_tokens.concat(new_tokens)
360
+ new_toks = [ReplacedToken.new(lhs.type, lhs.value, expansion_loc,
361
+ lhs.type_hint, false)]
362
+ res_toks.concat(new_toks)
363
363
  end
364
364
 
365
- macro_table.notify_sharpsharp_operator_evaled(lhs, rhs, new_tokens)
365
+ macro_tbl.notify_sharpsharp_operator_evaled(lhs, rhs, new_toks)
366
366
  end
367
367
  end
368
368
  end
@@ -375,13 +375,13 @@ module Cpp #:nodoc:
375
375
 
376
376
  attr_reader :replacement_list
377
377
 
378
- def expand(tokens, macro_table, context)
379
- @replacement_list = generate_replacement_list(tokens.first)
378
+ def expand(toks, macro_tbl, repl_ctxt)
379
+ @replacement_list = generate_replacement_list(toks.first)
380
380
  super
381
381
  end
382
382
 
383
383
  private
384
- def generate_replacement_list(token)
384
+ def generate_replacement_list(tok)
385
385
  subclass_responsibility
386
386
  end
387
387
  end
@@ -392,9 +392,9 @@ module Cpp #:nodoc:
392
392
  end
393
393
 
394
394
  private
395
- def generate_replacement_list(token)
395
+ def generate_replacement_list(tok)
396
396
  date = Time.now.strftime("%h %d %Y")
397
- PPTokens.new.push(Token.new(:PP_TOKEN, "\"#{date}\"", token.location,
397
+ PPTokens.new.push(Token.new(:PP_TOKEN, "\"#{date}\"", tok.location,
398
398
  :STRING_LITERAL))
399
399
  end
400
400
  end
@@ -405,9 +405,9 @@ module Cpp #:nodoc:
405
405
  end
406
406
 
407
407
  private
408
- def generate_replacement_list(token)
408
+ def generate_replacement_list(tok)
409
409
  PPTokens.new.push(
410
- Token.new(:PP_TOKEN, "\"#{token.location.fpath}\"", token.location,
410
+ Token.new(:PP_TOKEN, "\"#{tok.location.fpath}\"", tok.location,
411
411
  :STRING_LITERAL))
412
412
  end
413
413
  end
@@ -418,9 +418,9 @@ module Cpp #:nodoc:
418
418
  end
419
419
 
420
420
  private
421
- def generate_replacement_list(token)
421
+ def generate_replacement_list(tok)
422
422
  PPTokens.new.push(
423
- Token.new(:PP_TOKEN, "#{token.location.line_no}", token.location,
423
+ Token.new(:PP_TOKEN, "#{tok.location.line_no}", tok.location,
424
424
  :STRING_LITERAL))
425
425
  end
426
426
  end
@@ -431,8 +431,8 @@ module Cpp #:nodoc:
431
431
  end
432
432
 
433
433
  private
434
- def generate_replacement_list(token)
435
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
434
+ def generate_replacement_list(tok)
435
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
436
436
  end
437
437
  end
438
438
 
@@ -442,8 +442,8 @@ module Cpp #:nodoc:
442
442
  end
443
443
 
444
444
  private
445
- def generate_replacement_list(token)
446
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
445
+ def generate_replacement_list(tok)
446
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
447
447
  end
448
448
  end
449
449
 
@@ -453,8 +453,8 @@ module Cpp #:nodoc:
453
453
  end
454
454
 
455
455
  private
456
- def generate_replacement_list(token)
457
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
456
+ def generate_replacement_list(tok)
457
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
458
458
  end
459
459
  end
460
460
 
@@ -464,8 +464,8 @@ module Cpp #:nodoc:
464
464
  end
465
465
 
466
466
  private
467
- def generate_replacement_list(token)
468
- PPTokens.new.push(Token.new(:PP_TOKEN, "199901L", token.location,
467
+ def generate_replacement_list(tok)
468
+ PPTokens.new.push(Token.new(:PP_TOKEN, "199901L", tok.location,
469
469
  :CONSTANT))
470
470
  end
471
471
  end
@@ -476,9 +476,9 @@ module Cpp #:nodoc:
476
476
  end
477
477
 
478
478
  private
479
- def generate_replacement_list(token)
479
+ def generate_replacement_list(tok)
480
480
  time = Time.now.strftime("%H:%M:%S")
481
- PPTokens.new.push(Token.new(:PP_TOKEN, "\"#{time}\"", token.location,
481
+ PPTokens.new.push(Token.new(:PP_TOKEN, "\"#{time}\"", tok.location,
482
482
  :STRING_LITERAL))
483
483
  end
484
484
  end
@@ -489,8 +489,8 @@ module Cpp #:nodoc:
489
489
  end
490
490
 
491
491
  private
492
- def generate_replacement_list(token)
493
- PPTokens.new.push(Token.new(:PP_TOKEN, "0", token.location, :CONSTANT))
492
+ def generate_replacement_list(tok)
493
+ PPTokens.new.push(Token.new(:PP_TOKEN, "0", tok.location, :CONSTANT))
494
494
  end
495
495
  end
496
496
 
@@ -500,8 +500,8 @@ module Cpp #:nodoc:
500
500
  end
501
501
 
502
502
  private
503
- def generate_replacement_list(token)
504
- PPTokens.new.push(Token.new(:PP_TOKEN, "0", token.location, :CONSTANT))
503
+ def generate_replacement_list(tok)
504
+ PPTokens.new.push(Token.new(:PP_TOKEN, "0", tok.location, :CONSTANT))
505
505
  end
506
506
  end
507
507
 
@@ -511,8 +511,8 @@ module Cpp #:nodoc:
511
511
  end
512
512
 
513
513
  private
514
- def generate_replacement_list(token)
515
- PPTokens.new.push(Token.new(:PP_TOKEN, "199712L", token.location,
514
+ def generate_replacement_list(tok)
515
+ PPTokens.new.push(Token.new(:PP_TOKEN, "199712L", tok.location,
516
516
  :CONSTANT))
517
517
  end
518
518
  end
@@ -522,7 +522,7 @@ module Cpp #:nodoc:
522
522
  super(PseudoFunctionLikeDefineLine.new("_Pragma", ["str"]))
523
523
  end
524
524
 
525
- def expand(tokens, macro_table, context)
525
+ def expand(toks, macro_tbl, repl_ctxt)
526
526
  # TODO: Should implement pragma handling feature.
527
527
  []
528
528
  end
@@ -534,8 +534,8 @@ module Cpp #:nodoc:
534
534
  end
535
535
 
536
536
  private
537
- def generate_replacement_list(token)
538
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
537
+ def generate_replacement_list(tok)
538
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
539
539
  end
540
540
  end
541
541
 
@@ -545,8 +545,8 @@ module Cpp #:nodoc:
545
545
  end
546
546
 
547
547
  private
548
- def generate_replacement_list(token)
549
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
548
+ def generate_replacement_list(tok)
549
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
550
550
  end
551
551
  end
552
552
 
@@ -556,8 +556,8 @@ module Cpp #:nodoc:
556
556
  end
557
557
 
558
558
  private
559
- def generate_replacement_list(token)
560
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
559
+ def generate_replacement_list(tok)
560
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
561
561
  end
562
562
  end
563
563
 
@@ -567,8 +567,8 @@ module Cpp #:nodoc:
567
567
  end
568
568
 
569
569
  private
570
- def generate_replacement_list(token)
571
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
570
+ def generate_replacement_list(tok)
571
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
572
572
  end
573
573
  end
574
574
 
@@ -578,8 +578,8 @@ module Cpp #:nodoc:
578
578
  end
579
579
 
580
580
  private
581
- def generate_replacement_list(token)
582
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
581
+ def generate_replacement_list(tok)
582
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
583
583
  end
584
584
  end
585
585
 
@@ -589,8 +589,8 @@ module Cpp #:nodoc:
589
589
  end
590
590
 
591
591
  private
592
- def generate_replacement_list(token)
593
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
592
+ def generate_replacement_list(tok)
593
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
594
594
  end
595
595
  end
596
596
 
@@ -600,8 +600,8 @@ module Cpp #:nodoc:
600
600
  end
601
601
 
602
602
  private
603
- def generate_replacement_list(token)
604
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
603
+ def generate_replacement_list(tok)
604
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
605
605
  end
606
606
  end
607
607
 
@@ -611,25 +611,25 @@ module Cpp #:nodoc:
611
611
  end
612
612
 
613
613
  private
614
- def generate_replacement_list(token)
615
- PPTokens.new.push(Token.new(:PP_TOKEN, "1", token.location, :CONSTANT))
614
+ def generate_replacement_list(tok)
615
+ PPTokens.new.push(Token.new(:PP_TOKEN, "1", tok.location, :CONSTANT))
616
616
  end
617
617
  end
618
618
 
619
619
  class MacroReplacementContext
620
620
  def initialize
621
- @hide_sets = Hash.new { |h, k| h[k] = Set.new }
621
+ @hide_sets = Hash.new { |hash, key| hash[key] = Set.new }
622
622
  end
623
623
 
624
- def add_to_hide_set(orig_token, new_tokens, macro_name)
625
- new_tokens.each do |new_token|
626
- @hide_sets[new_token].merge(@hide_sets[orig_token])
627
- @hide_sets[new_token].add(macro_name)
624
+ def add_to_hide_set(org_tok, new_toks, macro_name)
625
+ new_toks.each do |new_tok|
626
+ @hide_sets[new_tok].merge(@hide_sets[org_tok])
627
+ @hide_sets[new_tok].add(macro_name)
628
628
  end
629
629
  end
630
630
 
631
- def hidden?(token, macro_name)
632
- @hide_sets[token].include?(macro_name)
631
+ def hidden?(tok, macro_name)
632
+ @hide_sets[tok].include?(macro_name)
633
633
  end
634
634
  end
635
635
 
@@ -660,12 +660,12 @@ module Cpp #:nodoc:
660
660
  @macros[name_str]
661
661
  end
662
662
 
663
- def replace(tokens, context = nil)
663
+ def replace(toks, repl_ctxt = nil)
664
664
  replaced = false
665
- index = 0
665
+ idx = 0
666
666
 
667
- while token = tokens[index]
668
- case token.value
667
+ while tok = toks[idx]
668
+ case tok.value
669
669
  when "defined"
670
670
  in_defined = true
671
671
  when "(", ")"
@@ -674,53 +674,51 @@ module Cpp #:nodoc:
674
674
  if in_defined
675
675
  in_defined = false
676
676
  else
677
- if new_index = do_replace(tokens, index, context)
678
- index = new_index
677
+ if new_idx = do_replace(toks, idx, repl_ctxt)
678
+ idx = new_idx
679
679
  replaced = true
680
680
  end
681
681
  end
682
682
  end
683
- index += 1
683
+ idx += 1
684
684
  end
685
685
 
686
686
  replaced
687
687
  end
688
688
 
689
- def notify_object_like_macro_replacement(macro, replacing_tokens,
690
- result_tokens)
691
- on_object_like_macro_replacement.invoke(macro, replacing_tokens,
692
- result_tokens)
689
+ def notify_object_like_macro_replacement(macro, replacing_toks, res_toks)
690
+ on_object_like_macro_replacement.invoke(macro, replacing_toks, res_toks)
693
691
  end
694
692
 
695
- def notify_function_like_macro_replacement(macro, replacing_tokens, args,
696
- result_tokens)
697
- on_function_like_macro_replacement.invoke(macro, replacing_tokens, args,
698
- result_tokens)
693
+ def notify_function_like_macro_replacement(macro, replacing_toks, args,
694
+ res_toks)
695
+ on_function_like_macro_replacement.invoke(macro, replacing_toks, args,
696
+ res_toks)
699
697
  end
700
698
 
701
- def notify_sharpsharp_operator_evaled(lhs_token, rhs_token, new_tokens)
702
- on_sharpsharp_operator_evaled.invoke(lhs_token, rhs_token, new_tokens)
699
+ def notify_sharpsharp_operator_evaled(lhs_tok, rhs_tok, new_toks)
700
+ on_sharpsharp_operator_evaled.invoke(lhs_tok, rhs_tok, new_toks)
703
701
  end
704
702
 
705
- def notify_last_backslash_ignored(token)
706
- on_last_backslash_ignored.invoke(token)
703
+ def notify_last_backslash_ignored(tok)
704
+ on_last_backslash_ignored.invoke(tok)
707
705
  end
708
706
 
709
707
  private
710
- def do_replace(tokens, index, context)
711
- context ||= MacroReplacementContext.new
708
+ def do_replace(toks, idx, repl_ctxt)
709
+ repl_ctxt ||= MacroReplacementContext.new
712
710
 
713
- return nil unless token = tokens[index] and macro = lookup(token.value)
714
- return nil if context.hidden?(token, macro.name.value)
711
+ return nil unless tok = toks[idx] and macro = lookup(tok.value)
712
+ return nil if repl_ctxt.hidden?(tok, macro.name.value)
715
713
 
716
- size = macro.replaceable_size(tokens[index..-1])
714
+ size = macro.replaceable_size(toks[idx..-1])
717
715
 
718
- if tokens[index, size].all? { |t| t.need_no_further_replacement? }
716
+ if toks[idx, size].all? { |t| t.need_no_further_replacement? }
719
717
  return nil
720
718
  end
721
719
 
722
- expanded = macro.expand(tokens[index, size], self, context)
723
- context.add_to_hide_set(tokens[index], expanded, macro.name.value)
720
+ expanded = macro.expand(toks[idx, size], self, repl_ctxt)
721
+ repl_ctxt.add_to_hide_set(toks[idx], expanded, macro.name.value)
724
722
 
725
723
  # NOTE: The ISO C99 standard says;
726
724
  #
@@ -740,10 +738,10 @@ module Cpp #:nodoc:
740
738
  # tokens are no longer available for further replacement even if they
741
739
  # are later (re)examined in contexts in which that macro name
742
740
  # preprocessing token whould otherwise have been replaced.
743
- while replace(expanded, context); end
744
- tokens[index, size] = expanded
741
+ while replace(expanded, repl_ctxt); end
742
+ toks[idx, size] = expanded
745
743
 
746
- index + expanded.size - 1
744
+ idx + expanded.size - 1
747
745
  end
748
746
 
749
747
  def predefine_special_macros