adlint 2.6.14 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. data/AUTHORS +1 -3
  2. data/ChangeLog +511 -0
  3. data/INSTALL +1 -1
  4. data/MANIFEST +57 -37
  5. data/NEWS +36 -7
  6. data/README +2 -2
  7. data/Rakefile +6 -6
  8. data/TODO +1 -1
  9. data/bin/adlint +25 -16
  10. data/bin/adlint_chk +22 -12
  11. data/bin/adlint_cma +17 -12
  12. data/bin/adlint_sma +22 -12
  13. data/bin/adlintize +98 -17
  14. data/etc/conf.d/fallback/cinit.erb +1 -1
  15. data/etc/conf.d/fallback/traits.erb +37 -37
  16. data/etc/conf.d/i686-cygwin/cinit-gcc_4.3.4.erb +1 -1
  17. data/etc/conf.d/i686-cygwin/traits-gcc_4.3.4.erb +41 -41
  18. data/etc/conf.d/i686-devkit/cinit-gcc_4.5.2.erb +1 -1
  19. data/etc/conf.d/i686-devkit/traits-gcc_4.5.2.erb +40 -40
  20. data/etc/conf.d/i686-linux/cinit-gcc_4.5.1.erb +1 -1
  21. data/etc/conf.d/i686-linux/traits-gcc_4.5.1.erb +40 -40
  22. data/etc/conf.d/i686-mingw/cinit-gcc_4.6.1.erb +1 -1
  23. data/etc/conf.d/i686-mingw/traits-gcc_4.6.1.erb +40 -40
  24. data/etc/conf.d/noarch/GNUmakefile.erb +1 -1
  25. data/etc/conf.d/noarch/adlint_all_bat.erb +1 -1
  26. data/etc/conf.d/noarch/adlint_all_sh.erb +1 -1
  27. data/etc/conf.d/noarch/pinit.erb +1 -1
  28. data/etc/conf.d/x86_64-ubuntu_12.04/cinit-gcc_4.6.3.erb +1 -1
  29. data/etc/conf.d/x86_64-ubuntu_12.04/traits-gcc_4.6.3.erb +42 -42
  30. data/etc/mesg.d/c_builtin/en_US/messages.yml +33 -33
  31. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +5 -5
  32. data/etc/mesg.d/core/en_US/messages.yml +2 -2
  33. data/etc/mesg.d/core/ja_JP/messages.yml +2 -2
  34. data/features/code_check/W0018.feature +197 -0
  35. data/features/code_check/W0019.feature +79 -0
  36. data/features/code_check/W0021.feature +81 -0
  37. data/features/code_check/W0023.feature +203 -0
  38. data/features/code_check/W0024.feature +226 -0
  39. data/features/code_check/W0025.feature +5 -0
  40. data/features/code_check/W0088.feature +2 -2
  41. data/features/code_check/W0109.feature +2 -2
  42. data/features/code_check/W0477.feature +0 -3
  43. data/features/code_check/W0478.feature +0 -1
  44. data/features/code_check/W0582.feature +3 -3
  45. data/features/code_check/W0583.feature +4 -7
  46. data/features/code_check/W0646.feature +0 -1
  47. data/features/code_check/W0695.feature +0 -1
  48. data/features/code_check/W0705.feature +8 -0
  49. data/features/code_check/W0723.feature +0 -1
  50. data/features/code_check/W0745.feature +1 -0
  51. data/features/code_check/W0781.feature +1 -0
  52. data/features/code_check/W1057.feature +141 -0
  53. data/features/code_check/W1058.feature +93 -0
  54. data/features/code_check/W1059.feature +86 -0
  55. data/features/code_check/W1060.feature +77 -0
  56. data/features/code_check/W1061.feature +143 -0
  57. data/features/code_check/W1062.feature +162 -0
  58. data/features/code_check/W1063.feature +123 -0
  59. data/features/code_check/W1064.feature +83 -0
  60. data/features/code_check/W1065.feature +82 -0
  61. data/features/code_check/W9003.feature +2 -0
  62. data/features/step_definitions/code_check_steps.rb +1 -0
  63. data/features/support/env.rb +16 -13
  64. data/lib/adlint.rb +7 -4
  65. data/lib/adlint/analyzer.rb +131 -157
  66. data/lib/adlint/annot.rb +149 -0
  67. data/lib/adlint/cc1.rb +57 -0
  68. data/lib/adlint/{c → cc1}/branch.rb +74 -62
  69. data/lib/adlint/{c → cc1}/builtin.rb +21 -21
  70. data/lib/adlint/{c → cc1}/const.rb +119 -117
  71. data/lib/adlint/{c → cc1}/conv.rb +76 -78
  72. data/lib/adlint/{c → cc1}/ctrlexpr.rb +69 -86
  73. data/lib/adlint/cc1/domain.rb +8103 -0
  74. data/lib/adlint/{c → cc1}/enum.rb +3 -3
  75. data/lib/adlint/{c → cc1}/environ.rb +21 -21
  76. data/lib/adlint/{c → cc1}/expr.rb +232 -218
  77. data/lib/adlint/{c → cc1}/format.rb +305 -342
  78. data/lib/adlint/{c → cc1}/interp.rb +269 -220
  79. data/lib/adlint/cc1/lexer.rb +246 -0
  80. data/lib/adlint/{c → cc1}/mediator.rb +78 -84
  81. data/lib/adlint/{c → cc1}/object.rb +261 -264
  82. data/lib/adlint/{c → cc1}/operator.rb +7 -7
  83. data/lib/adlint/{c → cc1}/option.rb +4 -3
  84. data/lib/adlint/{c → cc1}/parser.rb +274 -506
  85. data/lib/adlint/{c → cc1}/parser.y +69 -301
  86. data/lib/adlint/cc1/phase.rb +138 -0
  87. data/lib/adlint/{c → cc1}/resolver.rb +66 -78
  88. data/lib/adlint/{c → cc1}/scanner.rb +57 -49
  89. data/lib/adlint/{c → cc1}/scope.rb +3 -3
  90. data/lib/adlint/{c → cc1}/seqp.rb +13 -5
  91. data/lib/adlint/{c → cc1}/syntax.rb +819 -1122
  92. data/lib/adlint/{c → cc1}/type.rb +1498 -1479
  93. data/lib/adlint/{c → cc1}/util.rb +20 -12
  94. data/lib/adlint/{c → cc1}/value.rb +699 -642
  95. data/lib/adlint/code.rb +163 -164
  96. data/lib/adlint/cpp.rb +2 -2
  97. data/lib/adlint/cpp/asm.rb +13 -14
  98. data/lib/adlint/cpp/constexpr.rb +42 -38
  99. data/lib/adlint/cpp/constexpr.y +44 -40
  100. data/lib/adlint/cpp/eval.rb +435 -435
  101. data/lib/adlint/cpp/lexer.rb +343 -340
  102. data/lib/adlint/cpp/macro.rb +188 -190
  103. data/lib/adlint/cpp/phase.rb +66 -45
  104. data/lib/adlint/cpp/scanner.rb +14 -17
  105. data/lib/adlint/cpp/source.rb +49 -55
  106. data/lib/adlint/cpp/subst.rb +65 -65
  107. data/lib/adlint/cpp/syntax.rb +155 -275
  108. data/lib/adlint/cpp/util.rb +22 -19
  109. data/lib/adlint/driver.rb +86 -93
  110. data/lib/adlint/error.rb +33 -52
  111. data/lib/adlint/exam.rb +158 -24
  112. data/lib/adlint/exam/c_builtin.rb +7 -7
  113. data/lib/adlint/exam/c_builtin/cc1_check.rb +20522 -0
  114. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +957 -0
  115. data/lib/adlint/exam/c_builtin/cc1_code.rb +459 -0
  116. data/lib/adlint/exam/c_builtin/cc1_metric.rb +794 -0
  117. data/lib/adlint/exam/c_builtin/cpp_check.rb +486 -441
  118. data/lib/adlint/exam/c_builtin/cpp_check_shima.rb +36 -39
  119. data/lib/adlint/exam/c_builtin/cpp_code.rb +63 -65
  120. data/lib/adlint/exam/c_builtin/ld_check.rb +136 -129
  121. data/lib/adlint/exam/c_builtin/ld_metric.rb +11 -11
  122. data/lib/adlint/lang.rb +25 -25
  123. data/lib/adlint/ld.rb +2 -2
  124. data/lib/adlint/ld/object.rb +220 -188
  125. data/lib/adlint/ld/phase.rb +94 -63
  126. data/lib/adlint/ld/typedef.rb +22 -11
  127. data/lib/adlint/ld/util.rb +43 -35
  128. data/lib/adlint/lexer.rb +59 -56
  129. data/lib/adlint/location.rb +140 -0
  130. data/lib/adlint/memo.rb +157 -0
  131. data/lib/adlint/message.rb +207 -156
  132. data/lib/adlint/metric.rb +139 -217
  133. data/lib/adlint/monitor.rb +45 -43
  134. data/lib/adlint/phase.rb +56 -29
  135. data/lib/adlint/prelude.rb +66 -54
  136. data/lib/adlint/report.rb +253 -332
  137. data/lib/adlint/source.rb +26 -27
  138. data/lib/adlint/supp.rb +131 -0
  139. data/lib/adlint/symbol.rb +14 -16
  140. data/lib/adlint/token.rb +19 -91
  141. data/lib/adlint/traits.rb +242 -226
  142. data/lib/adlint/util.rb +116 -205
  143. data/lib/adlint/version.rb +8 -8
  144. data/share/HEADER +2 -2
  145. data/share/doc/developers_guide_ja.html +148 -19
  146. data/share/doc/developers_guide_ja.texi +141 -11
  147. data/share/doc/samples/GNUmakefile +1 -1
  148. data/share/doc/samples/adlint_traits.yml +45 -36
  149. data/share/doc/users_guide_en.html +1321 -1252
  150. data/share/doc/users_guide_en.texi +475 -408
  151. data/share/doc/users_guide_ja.html +1932 -1878
  152. data/share/doc/users_guide_ja.texi +324 -273
  153. data/share/sample/bison-2.5/adlint/GNUmakefile +5 -1
  154. data/share/sample/bison-2.5/adlint/adlint_traits.yml +38 -38
  155. data/share/sample/bison-2.5/adlint/lib/GNUmakefile +1 -1
  156. data/share/sample/bison-2.5/adlint/lib/adlint_cinit.h +1 -1
  157. data/share/sample/bison-2.5/adlint/lib/adlint_pinit.h +1 -1
  158. data/share/sample/bison-2.5/adlint/lib/adlint_traits.yml +50 -42
  159. data/share/sample/bison-2.5/adlint/src/GNUmakefile +1 -1
  160. data/share/sample/bison-2.5/adlint/src/adlint_cinit.h +1 -1
  161. data/share/sample/bison-2.5/adlint/src/adlint_pinit.h +1 -1
  162. data/share/sample/bison-2.5/adlint/src/adlint_traits.yml +50 -42
  163. data/share/sample/ctags-5.8/adlint/GNUmakefile +1 -1
  164. data/share/sample/ctags-5.8/adlint/adlint_cinit.h +1 -1
  165. data/share/sample/ctags-5.8/adlint/adlint_pinit.h +1 -1
  166. data/share/sample/ctags-5.8/adlint/adlint_traits.yml +50 -42
  167. data/share/sample/flex-2.5.35/adlint/GNUmakefile +1 -1
  168. data/share/sample/flex-2.5.35/adlint/adlint_cinit.h +1 -1
  169. data/share/sample/flex-2.5.35/adlint/adlint_pinit.h +1 -1
  170. data/share/sample/flex-2.5.35/adlint/adlint_traits.yml +50 -42
  171. data/share/sample/ruby-1.9.3-p0/adlint/GNUmakefile +1 -1
  172. data/share/sample/ruby-1.9.3-p0/adlint/adlint_traits.yml +46 -38
  173. data/share/sample/ruby-1.9.3-p0/adlint/core/GNUmakefile +1 -1
  174. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_cinit.h +1 -1
  175. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_pinit.h +1 -1
  176. data/share/sample/ruby-1.9.3-p0/adlint/core/adlint_traits.yml +50 -42
  177. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/GNUmakefile +1 -1
  178. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_cinit.h +1 -1
  179. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_pinit.h +1 -1
  180. data/share/sample/ruby-1.9.3-p0/adlint/enc-trans/adlint_traits.yml +50 -42
  181. data/share/sample/ruby-1.9.3-p0/adlint/enc/GNUmakefile +1 -1
  182. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_cinit.h +1 -1
  183. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_pinit.h +1 -1
  184. data/share/sample/ruby-1.9.3-p0/adlint/enc/adlint_traits.yml +50 -42
  185. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/GNUmakefile +1 -1
  186. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_cinit.h +1 -1
  187. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_pinit.h +1 -1
  188. data/share/sample/ruby-1.9.3-p0/adlint/ext-bigdecimal/adlint_traits.yml +50 -42
  189. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/GNUmakefile +1 -1
  190. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_cinit.h +1 -1
  191. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_pinit.h +1 -1
  192. data/share/sample/ruby-1.9.3-p0/adlint/ext-continuation/adlint_traits.yml +50 -42
  193. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/GNUmakefile +1 -1
  194. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_cinit.h +1 -1
  195. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_pinit.h +1 -1
  196. data/share/sample/ruby-1.9.3-p0/adlint/ext-coverage/adlint_traits.yml +50 -42
  197. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/GNUmakefile +1 -1
  198. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_cinit.h +1 -1
  199. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_pinit.h +1 -1
  200. data/share/sample/ruby-1.9.3-p0/adlint/ext-curses/adlint_traits.yml +50 -42
  201. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/GNUmakefile +1 -1
  202. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_cinit.h +1 -1
  203. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_pinit.h +1 -1
  204. data/share/sample/ruby-1.9.3-p0/adlint/ext-date/adlint_traits.yml +50 -42
  205. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/GNUmakefile +1 -1
  206. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_cinit.h +1 -1
  207. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_pinit.h +1 -1
  208. data/share/sample/ruby-1.9.3-p0/adlint/ext-dbm/adlint_traits.yml +50 -42
  209. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/GNUmakefile +1 -1
  210. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_cinit.h +1 -1
  211. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_pinit.h +1 -1
  212. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-bubblebabble/adlint_traits.yml +50 -42
  213. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/GNUmakefile +1 -1
  214. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_cinit.h +1 -1
  215. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_pinit.h +1 -1
  216. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-md5/adlint_traits.yml +50 -42
  217. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/GNUmakefile +1 -1
  218. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_cinit.h +1 -1
  219. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_pinit.h +1 -1
  220. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-rmd160/adlint_traits.yml +50 -42
  221. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/GNUmakefile +1 -1
  222. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_cinit.h +1 -1
  223. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_pinit.h +1 -1
  224. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha1/adlint_traits.yml +50 -42
  225. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/GNUmakefile +1 -1
  226. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_cinit.h +1 -1
  227. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_pinit.h +1 -1
  228. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest-sha2/adlint_traits.yml +50 -42
  229. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/GNUmakefile +1 -1
  230. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_cinit.h +1 -1
  231. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_pinit.h +1 -1
  232. data/share/sample/ruby-1.9.3-p0/adlint/ext-digest/adlint_traits.yml +50 -42
  233. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/GNUmakefile +1 -1
  234. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_cinit.h +1 -1
  235. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_pinit.h +1 -1
  236. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl-callback/adlint_traits.yml +50 -42
  237. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/GNUmakefile +1 -1
  238. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_cinit.h +1 -1
  239. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_pinit.h +1 -1
  240. data/share/sample/ruby-1.9.3-p0/adlint/ext-dl/adlint_traits.yml +50 -42
  241. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/GNUmakefile +1 -1
  242. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_cinit.h +1 -1
  243. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_pinit.h +1 -1
  244. data/share/sample/ruby-1.9.3-p0/adlint/ext-etc/adlint_traits.yml +50 -42
  245. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/GNUmakefile +1 -1
  246. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_cinit.h +1 -1
  247. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_pinit.h +1 -1
  248. data/share/sample/ruby-1.9.3-p0/adlint/ext-fcntl/adlint_traits.yml +50 -42
  249. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/GNUmakefile +1 -1
  250. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_cinit.h +1 -1
  251. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_pinit.h +1 -1
  252. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiber/adlint_traits.yml +50 -42
  253. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/GNUmakefile +1 -1
  254. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_cinit.h +1 -1
  255. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_pinit.h +1 -1
  256. data/share/sample/ruby-1.9.3-p0/adlint/ext-fiddle/adlint_traits.yml +50 -42
  257. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/GNUmakefile +1 -1
  258. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_cinit.h +1 -1
  259. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_pinit.h +1 -1
  260. data/share/sample/ruby-1.9.3-p0/adlint/ext-gdbm/adlint_traits.yml +50 -42
  261. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/GNUmakefile +1 -1
  262. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_cinit.h +1 -1
  263. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_pinit.h +1 -1
  264. data/share/sample/ruby-1.9.3-p0/adlint/ext-iconv/adlint_traits.yml +50 -42
  265. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/GNUmakefile +1 -1
  266. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_cinit.h +1 -1
  267. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_pinit.h +1 -1
  268. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-console/adlint_traits.yml +50 -42
  269. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/GNUmakefile +1 -1
  270. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_cinit.h +1 -1
  271. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_pinit.h +1 -1
  272. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-nonblock/adlint_traits.yml +50 -42
  273. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/GNUmakefile +1 -1
  274. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_cinit.h +1 -1
  275. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_pinit.h +1 -1
  276. data/share/sample/ruby-1.9.3-p0/adlint/ext-io-wait/adlint_traits.yml +50 -42
  277. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/GNUmakefile +1 -1
  278. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_cinit.h +1 -1
  279. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_pinit.h +1 -1
  280. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-generator/adlint_traits.yml +50 -42
  281. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/GNUmakefile +1 -1
  282. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_cinit.h +1 -1
  283. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_pinit.h +1 -1
  284. data/share/sample/ruby-1.9.3-p0/adlint/ext-json-parser/adlint_traits.yml +50 -42
  285. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/GNUmakefile +1 -1
  286. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_cinit.h +1 -1
  287. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_pinit.h +1 -1
  288. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-complex/adlint_traits.yml +50 -42
  289. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/GNUmakefile +1 -1
  290. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_cinit.h +1 -1
  291. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_pinit.h +1 -1
  292. data/share/sample/ruby-1.9.3-p0/adlint/ext-mathn-rational/adlint_traits.yml +50 -42
  293. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/GNUmakefile +1 -1
  294. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_cinit.h +1 -1
  295. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_pinit.h +1 -1
  296. data/share/sample/ruby-1.9.3-p0/adlint/ext-nkf/adlint_traits.yml +50 -42
  297. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/GNUmakefile +1 -1
  298. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_cinit.h +1 -1
  299. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_pinit.h +1 -1
  300. data/share/sample/ruby-1.9.3-p0/adlint/ext-openssl/adlint_traits.yml +50 -42
  301. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/GNUmakefile +1 -1
  302. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_cinit.h +1 -1
  303. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_pinit.h +1 -1
  304. data/share/sample/ruby-1.9.3-p0/adlint/ext-pathname/adlint_traits.yml +50 -42
  305. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/GNUmakefile +1 -1
  306. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_cinit.h +1 -1
  307. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_pinit.h +1 -1
  308. data/share/sample/ruby-1.9.3-p0/adlint/ext-psych/adlint_traits.yml +50 -42
  309. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/GNUmakefile +1 -1
  310. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_cinit.h +1 -1
  311. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_pinit.h +1 -1
  312. data/share/sample/ruby-1.9.3-p0/adlint/ext-pty/adlint_traits.yml +50 -42
  313. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/GNUmakefile +1 -1
  314. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_cinit.h +1 -1
  315. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_pinit.h +1 -1
  316. data/share/sample/ruby-1.9.3-p0/adlint/ext-racc-cparse/adlint_traits.yml +50 -42
  317. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/GNUmakefile +1 -1
  318. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_cinit.h +1 -1
  319. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_pinit.h +1 -1
  320. data/share/sample/ruby-1.9.3-p0/adlint/ext-readline/adlint_traits.yml +50 -42
  321. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/GNUmakefile +1 -1
  322. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_cinit.h +1 -1
  323. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_pinit.h +1 -1
  324. data/share/sample/ruby-1.9.3-p0/adlint/ext-ripper/adlint_traits.yml +50 -42
  325. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/GNUmakefile +1 -1
  326. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_cinit.h +1 -1
  327. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_pinit.h +1 -1
  328. data/share/sample/ruby-1.9.3-p0/adlint/ext-sdbm/adlint_traits.yml +50 -42
  329. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/GNUmakefile +1 -1
  330. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_cinit.h +1 -1
  331. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_pinit.h +1 -1
  332. data/share/sample/ruby-1.9.3-p0/adlint/ext-socket/adlint_traits.yml +50 -42
  333. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/GNUmakefile +1 -1
  334. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_cinit.h +1 -1
  335. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_pinit.h +1 -1
  336. data/share/sample/ruby-1.9.3-p0/adlint/ext-stringio/adlint_traits.yml +50 -42
  337. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/GNUmakefile +1 -1
  338. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_cinit.h +1 -1
  339. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_pinit.h +1 -1
  340. data/share/sample/ruby-1.9.3-p0/adlint/ext-strscan/adlint_traits.yml +50 -42
  341. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/GNUmakefile +1 -1
  342. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_cinit.h +1 -1
  343. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_pinit.h +1 -1
  344. data/share/sample/ruby-1.9.3-p0/adlint/ext-syck/adlint_traits.yml +50 -42
  345. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/GNUmakefile +1 -1
  346. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_cinit.h +1 -1
  347. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_pinit.h +1 -1
  348. data/share/sample/ruby-1.9.3-p0/adlint/ext-syslog/adlint_traits.yml +50 -42
  349. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/GNUmakefile +1 -1
  350. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_cinit.h +1 -1
  351. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_pinit.h +1 -1
  352. data/share/sample/ruby-1.9.3-p0/adlint/ext-zlib/adlint_traits.yml +50 -42
  353. data/share/sample/screen-4.0.3/adlint/GNUmakefile +1 -1
  354. data/share/sample/screen-4.0.3/adlint/adlint_cinit.h +1 -1
  355. data/share/sample/screen-4.0.3/adlint/adlint_pinit.h +1 -1
  356. data/share/sample/screen-4.0.3/adlint/adlint_traits.yml +50 -42
  357. data/share/sample/vim-7.3/adlint/vim/GNUmakefile +1 -1
  358. data/share/sample/vim-7.3/adlint/vim/adlint_cinit.h +1 -1
  359. data/share/sample/vim-7.3/adlint/vim/adlint_pinit.h +1 -1
  360. data/share/sample/vim-7.3/adlint/vim/adlint_traits.yml +50 -42
  361. data/share/sample/vim-7.3/adlint/xxd/GNUmakefile +1 -1
  362. data/share/sample/vim-7.3/adlint/xxd/adlint_cinit.h +1 -1
  363. data/share/sample/vim-7.3/adlint/xxd/adlint_pinit.h +1 -1
  364. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +49 -41
  365. data/share/sample/zsh-4.3.15/adlint/GNUmakefile +1 -1
  366. data/share/sample/zsh-4.3.15/adlint/adlint_traits.yml +46 -38
  367. data/share/sample/zsh-4.3.15/adlint/builtins/GNUmakefile +1 -1
  368. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_cinit.h +1 -1
  369. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_pinit.h +1 -1
  370. data/share/sample/zsh-4.3.15/adlint/builtins/adlint_traits.yml +50 -42
  371. data/share/sample/zsh-4.3.15/adlint/core/GNUmakefile +1 -1
  372. data/share/sample/zsh-4.3.15/adlint/core/adlint_cinit.h +1 -1
  373. data/share/sample/zsh-4.3.15/adlint/core/adlint_pinit.h +1 -1
  374. data/share/sample/zsh-4.3.15/adlint/core/adlint_traits.yml +50 -42
  375. data/share/sample/zsh-4.3.15/adlint/modules/GNUmakefile +1 -1
  376. data/share/sample/zsh-4.3.15/adlint/modules/adlint_cinit.h +1 -1
  377. data/share/sample/zsh-4.3.15/adlint/modules/adlint_pinit.h +1 -1
  378. data/share/sample/zsh-4.3.15/adlint/modules/adlint_traits.yml +50 -42
  379. data/share/sample/zsh-4.3.15/adlint/zle/GNUmakefile +1 -1
  380. data/share/sample/zsh-4.3.15/adlint/zle/adlint_cinit.h +1 -1
  381. data/share/sample/zsh-4.3.15/adlint/zle/adlint_pinit.h +1 -1
  382. data/share/sample/zsh-4.3.15/adlint/zle/adlint_traits.yml +50 -42
  383. data/spec/adlint/{c → cc1}/ctrlexpr_spec.rb +51 -49
  384. data/spec/adlint/{c → cc1}/domain_spec.rb +210 -179
  385. data/spec/adlint/{c → cc1}/operator_spec.rb +3 -3
  386. data/spec/adlint/{c → cc1}/syntax_spec.rb +10 -12
  387. data/spec/adlint/{c → cc1}/type_spec.rb +61 -68
  388. data/{lib/adlint/c.rb → spec/adlint/location_spec.rb} +24 -29
  389. data/spec/conf.d/default_traits.yml +38 -37
  390. data/spec/conf.d/empty_cinit.h +1 -1
  391. data/spec/conf.d/empty_pinit.h +1 -1
  392. data/spec/conf.d/project/foo.c +0 -0
  393. data/spec/spec_helper.rb +2 -2
  394. metadata +60 -40
  395. data/lib/adlint/c/domain.rb +0 -7931
  396. data/lib/adlint/c/lexer.rb +0 -252
  397. data/lib/adlint/c/phase.rb +0 -135
  398. data/lib/adlint/exam/c_builtin/c_check.rb +0 -20745
  399. data/lib/adlint/exam/c_builtin/c_check_shima.rb +0 -983
  400. data/lib/adlint/exam/c_builtin/c_code.rb +0 -477
  401. data/lib/adlint/exam/c_builtin/c_metric.rb +0 -818
@@ -1,7 +1,7 @@
1
1
  # C Enumerators.
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,7 +30,7 @@
30
30
  #++
31
31
 
32
32
  module AdLint #:nodoc:
33
- module C #:nodoc:
33
+ module Cc1 #:nodoc:
34
34
 
35
35
  class EnumeratorTable
36
36
  def initialize
@@ -1,7 +1,7 @@
1
1
  # C runtime environment.
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
  #
@@ -29,14 +29,14 @@
29
29
  #
30
30
  #++
31
31
 
32
- require "adlint/c/enum"
33
- require "adlint/c/object"
34
- require "adlint/c/builtin"
35
- require "adlint/c/branch"
36
- require "adlint/c/mediator"
32
+ require "adlint/cc1/enum"
33
+ require "adlint/cc1/object"
34
+ require "adlint/cc1/builtin"
35
+ require "adlint/cc1/branch"
36
+ require "adlint/cc1/mediator"
37
37
 
38
38
  module AdLint #:nodoc:
39
- module C #:nodoc:
39
+ module Cc1 #:nodoc:
40
40
 
41
41
  class Environment
42
42
  include TypeTableMediator
@@ -45,11 +45,11 @@ module C #:nodoc:
45
45
  include FunctionTableMediator
46
46
  include EnumeratorTableMediator
47
47
 
48
- def initialize(type_table)
49
- @type_table = type_table
50
- @memory_pool = MemoryPool.new
51
- @variable_table = VariableTable.new(@memory_pool)
52
- @function_table = FunctionTable.new(@memory_pool)
48
+ def initialize(type_tbl)
49
+ @type_table = type_tbl
50
+ @memory_pool = MemoryPool.new
51
+ @variable_table = VariableTable.new(@memory_pool)
52
+ @function_table = FunctionTable.new(@memory_pool)
53
53
  @enumerator_table = EnumeratorTable.new
54
54
  install_builtin_functions
55
55
  reset
@@ -64,7 +64,7 @@ module C #:nodoc:
64
64
 
65
65
  def reset
66
66
  @current_scope = GlobalScope.new
67
- @branch_depth = 0
67
+ @branch_depth = 0
68
68
  @branch_groups = {}
69
69
  end
70
70
 
@@ -80,8 +80,8 @@ module C #:nodoc:
80
80
  @function_table.leave_scope
81
81
  end
82
82
 
83
- def enter_branch_group(*options)
84
- @branch_groups[@branch_depth] = BranchGroup.new(self, *options)
83
+ def enter_branch_group(*opts)
84
+ @branch_groups[@branch_depth] = BranchGroup.new(self, *opts)
85
85
  end
86
86
 
87
87
  def current_branch_group
@@ -92,15 +92,15 @@ module C #:nodoc:
92
92
  @branch_groups.delete(@branch_depth)
93
93
  end
94
94
 
95
- def enter_branch(*options)
95
+ def enter_branch(*opts)
96
96
  @branch_depth += 1
97
97
 
98
98
  if group = current_branch_group
99
- group.add_options(*options)
100
- group.create_trailing_branch(*options)
99
+ group.add_options(*opts)
100
+ group.create_trailing_branch(*opts)
101
101
  else
102
- group = enter_branch_group(*options)
103
- group.create_first_branch(*options)
102
+ group = enter_branch_group(*opts)
103
+ group.create_first_branch(*opts)
104
104
  end
105
105
  end
106
106
 
@@ -1,7 +1,7 @@
1
1
  # C expression evaluator.
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
  #
@@ -29,13 +29,13 @@
29
29
  #
30
30
  #++
31
31
 
32
- require "adlint/c/mediator"
33
- require "adlint/c/const"
34
- require "adlint/c/conv"
35
- require "adlint/c/seqp"
32
+ require "adlint/cc1/mediator"
33
+ require "adlint/cc1/const"
34
+ require "adlint/cc1/conv"
35
+ require "adlint/cc1/seqp"
36
36
 
37
37
  module AdLint #:nodoc:
38
- module C #:nodoc:
38
+ module Cc1 #:nodoc:
39
39
 
40
40
  module ExpressionEvaluator
41
41
  # NOTE: Host class of this module must include InterpreterMediator and
@@ -47,7 +47,7 @@ module C #:nodoc:
47
47
 
48
48
  def visit_error_expression(node)
49
49
  checkpoint(node.location)
50
- create_tempvar
50
+ create_tmpvar
51
51
  end
52
52
 
53
53
  def visit_object_specifier(node)
@@ -62,7 +62,7 @@ module C #:nodoc:
62
62
  notify_constant_referred(node, const_var)
63
63
  const_var
64
64
  else
65
- create_tempvar
65
+ create_tmpvar
66
66
  end
67
67
  end
68
68
 
@@ -71,13 +71,13 @@ module C #:nodoc:
71
71
 
72
72
  case node.literal.value
73
73
  when /\A"(.*)"\z/
74
- create_tempvar(array_type(char_type, $1.length + 1),
75
- create_array_value_of_string($1))
74
+ create_tmpvar(array_type(char_t, $1.length + 1),
75
+ create_array_value_of_string($1))
76
76
  when /\AL"(.*)"\z/i
77
- create_tempvar(array_type(wchar_type, $1.length + 1),
78
- create_array_value_of_string($1))
77
+ create_tmpvar(array_type(wchar_t, $1.length + 1),
78
+ create_array_value_of_string($1))
79
79
  else
80
- create_tempvar(array_type(char_type))
80
+ create_tmpvar(array_type(char_t))
81
81
  end
82
82
  end
83
83
 
@@ -85,7 +85,7 @@ module C #:nodoc:
85
85
  checkpoint(node.location)
86
86
  # TODO: NULL may not be 0 on some environments.
87
87
  # Representation of NULL should be configurable?
88
- create_tempvar(pointer_type(void_type), ScalarValue.of(0))
88
+ create_tmpvar(pointer_type(void_t), scalar_value_of(0))
89
89
  end
90
90
 
91
91
  def visit_grouped_expression(node)
@@ -118,13 +118,13 @@ module C #:nodoc:
118
118
  def visit_bit_access_by_value_expression(node)
119
119
  checkpoint(node.location)
120
120
  # TODO: Should support the GCC extension.
121
- create_tempvar
121
+ create_tmpvar
122
122
  end
123
123
 
124
124
  def visit_bit_access_by_pointer_expression(node)
125
125
  checkpoint(node.location)
126
126
  # TODO: Should support the GCC extension.
127
- create_tempvar
127
+ create_tmpvar
128
128
  end
129
129
 
130
130
  def visit_postfix_increment_expression(node)
@@ -140,7 +140,7 @@ module C #:nodoc:
140
140
  def visit_compound_literal_expression(node)
141
141
  checkpoint(node.location)
142
142
  # TODO: Should support C99 features.
143
- create_tempvar(node.type_name.type)
143
+ create_tmpvar(node.type_name.type)
144
144
  end
145
145
 
146
146
  def visit_prefix_increment_expression(node)
@@ -171,48 +171,48 @@ module C #:nodoc:
171
171
  def visit_sizeof_expression(node)
172
172
  checkpoint(node.location)
173
173
 
174
- operand_obj = result_var = nil
174
+ ope_obj = res_var = nil
175
175
  eval_without_side_effect do
176
- result_type = type_of(UserTypeId.new("size_t")) || unsigned_long_type
177
- operand_obj = node.operand.accept(self)
178
- if operand_obj.variable?
179
- size = operand_obj.type.aligned_byte_size
180
- result_var = create_tempvar(result_type, ScalarValue.of(size))
176
+ res_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t
177
+ ope_obj = node.operand.accept(self)
178
+ if ope_obj.variable?
179
+ size = ope_obj.type.aligned_byte_size
180
+ res_var = create_tmpvar(res_type, scalar_value_of(size))
181
181
  else
182
- return create_tempvar(result_type)
182
+ return create_tmpvar(res_type)
183
183
  end
184
184
  end
185
185
 
186
- notify_sizeof_expr_evaled(node, operand_obj, result_var)
187
- result_var
186
+ notify_sizeof_expr_evaled(node, ope_obj, res_var)
187
+ res_var
188
188
  end
189
189
 
190
190
  def visit_sizeof_type_expression(node)
191
191
  checkpoint(node.location)
192
192
  resolve_unresolved_type(node.operand)
193
193
 
194
- result_var = nil
194
+ res_var = nil
195
195
  eval_without_side_effect do
196
- result_type = type_of(UserTypeId.new("size_t")) || unsigned_long_type
196
+ res_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t
197
197
  size = node.operand.type.aligned_byte_size
198
- result_var = create_tempvar(result_type, ScalarValue.of(size))
198
+ res_var = create_tmpvar(res_type, scalar_value_of(size))
199
199
  end
200
200
 
201
- notify_sizeof_type_expr_evaled(node, node.operand.type, result_var)
202
- result_var
201
+ notify_sizeof_type_expr_evaled(node, node.operand.type, res_var)
202
+ res_var
203
203
  end
204
204
 
205
205
  def visit_alignof_expression(node)
206
206
  checkpoint(node.location)
207
207
 
208
208
  eval_without_side_effect do
209
- result_type = type_of(UserTypeId.new("size_t")) || unsigned_long_type
210
- operand_obj = node.operand.accept(self)
211
- if operand_obj.variable?
212
- align = operand_obj.type.byte_alignment
213
- create_tempvar(result_type, ScalarValue.of(align))
209
+ res_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t
210
+ ope_obj = node.operand.accept(self)
211
+ if ope_obj.variable?
212
+ align = ope_obj.type.byte_alignment
213
+ create_tmpvar(res_type, scalar_value_of(align))
214
214
  else
215
- create_tempvar(result_type)
215
+ create_tmpvar(res_type)
216
216
  end
217
217
  end
218
218
  end
@@ -222,9 +222,9 @@ module C #:nodoc:
222
222
  resolve_unresolved_type(node.operand)
223
223
 
224
224
  eval_without_side_effect do
225
- result_type = type_of(UserTypeId.new("size_t")) || unsigned_long_type
225
+ res_type = type_of(UserTypeId.new("size_t")) || unsigned_long_t
226
226
  align = node.operand.type.aligned_byte_size
227
- create_tempvar(result_type, ScalarValue.of(align))
227
+ create_tmpvar(res_type, scalar_value_of(align))
228
228
  end
229
229
  end
230
230
 
@@ -288,7 +288,7 @@ module C #:nodoc:
288
288
  if lhs_obj.variable?
289
289
  lhs_var = lhs_obj
290
290
  else
291
- return create_tempvar(int_type)
291
+ return create_tmpvar(int_t)
292
292
  end
293
293
 
294
294
  # NOTE: The ISO C99 standard says;
@@ -307,14 +307,14 @@ module C #:nodoc:
307
307
  if lhs_val.scalar? && lhs_val.must_be_false?
308
308
  # NOTE: Doing the short-circuit evaluation.
309
309
  notify_variable_value_referred(node, lhs_var)
310
- return create_tempvar(int_type, ScalarValue.of_false)
310
+ return create_tmpvar(int_t, scalar_value_of_false)
311
311
  end
312
312
 
313
313
  rhs_obj = node.rhs_operand.accept(self)
314
314
  if rhs_obj.variable?
315
315
  rhs_var = rhs_obj
316
316
  else
317
- return create_tempvar(int_type)
317
+ return create_tmpvar(int_t)
318
318
  end
319
319
 
320
320
  notify_sequence_point_reached(SequencePoint.new(node.rhs_operand))
@@ -322,15 +322,15 @@ module C #:nodoc:
322
322
 
323
323
  if lhs_val.scalar? && rhs_val.scalar?
324
324
  # NOTE: No usual-arithmetic-conversion.
325
- result_var = create_tempvar(int_type, lhs_val.logical_and(rhs_val))
325
+ res_var = create_tmpvar(int_t, lhs_val.logical_and(rhs_val))
326
326
  else
327
- result_var = create_tempvar(int_type)
327
+ res_var = create_tmpvar(int_t)
328
328
  end
329
329
  notify_variable_value_referred(node, lhs_var)
330
330
  notify_variable_value_referred(node, rhs_var)
331
331
 
332
- notify_logical_and_expr_evaled(node, lhs_var, rhs_var, result_var)
333
- result_var
332
+ notify_logical_and_expr_evaled(node, lhs_var, rhs_var, res_var)
333
+ res_var
334
334
  end
335
335
 
336
336
  def visit_logical_or_expression(node)
@@ -340,7 +340,7 @@ module C #:nodoc:
340
340
  if lhs_obj.variable?
341
341
  lhs_var = lhs_obj
342
342
  else
343
- return create_tempvar(int_type)
343
+ return create_tmpvar(int_t)
344
344
  end
345
345
 
346
346
  # NOTE: The ISO C99 standard says;
@@ -359,14 +359,14 @@ module C #:nodoc:
359
359
  if lhs_val.scalar? && lhs_val.must_be_true?
360
360
  # NOTE: Doing the short-circuit evaluation.
361
361
  notify_variable_value_referred(node, lhs_var)
362
- return create_tempvar(int_type, ScalarValue.of_true)
362
+ return create_tmpvar(int_t, scalar_value_of_true)
363
363
  end
364
364
 
365
365
  rhs_obj = node.rhs_operand.accept(self)
366
366
  if rhs_obj.variable?
367
367
  rhs_var = rhs_obj
368
368
  else
369
- return create_tempvar(int_type)
369
+ return create_tmpvar(int_t)
370
370
  end
371
371
 
372
372
  notify_sequence_point_reached(SequencePoint.new(node.rhs_operand))
@@ -374,15 +374,15 @@ module C #:nodoc:
374
374
 
375
375
  if lhs_val.scalar? && rhs_val.scalar?
376
376
  # NOTE: No usual-arithmetic-conversion.
377
- result_var = create_tempvar(int_type, lhs_val.logical_or(rhs_val))
377
+ res_var = create_tmpvar(int_t, lhs_val.logical_or(rhs_val))
378
378
  else
379
- result_var = create_tempvar(int_type)
379
+ res_var = create_tmpvar(int_t)
380
380
  end
381
381
  notify_variable_value_referred(node, lhs_var)
382
382
  notify_variable_value_referred(node, rhs_var)
383
383
 
384
- notify_logical_or_expr_evaled(node, lhs_var, rhs_var, result_var)
385
- result_var
384
+ notify_logical_or_expr_evaled(node, lhs_var, rhs_var, res_var)
385
+ res_var
386
386
  end
387
387
 
388
388
  def visit_simple_assignment_expression(node)
@@ -421,8 +421,8 @@ module C #:nodoc:
421
421
  end
422
422
 
423
423
  def create_array_value_of_string(str)
424
- ArrayValue.new(str.chars.map { |ch| ScalarValue.of(ch.ord) } +
425
- [ScalarValue.of("\0".ord)])
424
+ ArrayValue.new(str.chars.map { |ch| scalar_value_of(ch.ord) } +
425
+ [scalar_value_of("\0".ord)])
426
426
  end
427
427
 
428
428
  module Impl
@@ -441,38 +441,40 @@ module C #:nodoc:
441
441
  return var
442
442
  end
443
443
 
444
- if func = function_named(node.identifier.value)
445
- func.declarations_and_definitions.each do |dcl_or_def|
444
+ if fun = function_named(node.identifier.value)
445
+ fun.declarations_and_definitions.each do |dcl_or_def|
446
446
  dcl_or_def.mark_as_referred_by(node.identifier)
447
447
  end
448
- _notify_object_referred(node, func)
449
- return func
448
+ _notify_object_referred(node, fun)
449
+ return fun
450
450
  end
451
451
 
452
452
  if enum = enumerator_named(node.identifier.value)
453
453
  enum.mark_as_referred_by(node.identifier)
454
- return create_tempvar(enum.type, ScalarValue.of(enum.value))
454
+ return create_tmpvar(enum.type, scalar_value_of(enum.value))
455
455
  end
456
456
 
457
- define_implicit_function(node.identifier.value)
457
+ fun = declare_implicit_function(node.identifier.value)
458
+ _notify_implicit_function_declared(node, fun)
459
+ _notify_object_referred(node, fun)
460
+ fun
458
461
  end
459
462
 
460
463
  def eval_array_subscript_expr(node, obj, subs)
461
464
  unless obj.variable? && (obj.type.array? || obj.type.pointer?)
462
- return create_tempvar
465
+ return create_tmpvar
463
466
  end
464
467
 
465
- ary_or_ptr = obj
466
- result_type = ary_or_ptr.type.unqualify.base_type
468
+ res_type = obj.type.unqualify.base_type
467
469
 
468
470
  case
469
- when ary_or_ptr.type.array?
470
- ary = ary_or_ptr
471
+ when obj.type.array?
472
+ ary = obj
471
473
  # NOTE: An array-subscript-expression with an array object only
472
474
  # refers the array object, never refer the value of the array
473
475
  # object.
474
- when ary_or_ptr.type.pointer?
475
- ptr = ary_or_ptr
476
+ when obj.type.pointer?
477
+ ptr = obj
476
478
  if pointee = pointee_of(ptr) and pointee.type.array?
477
479
  ary = pointee
478
480
  end
@@ -484,18 +486,18 @@ module C #:nodoc:
484
486
  unless subs.variable? and
485
487
  subs.value.scalar? && subs.value.exist? or subs.type.void?
486
488
  # NOTE: To detect bad value reference of `void' expressions.
487
- return create_tempvar(result_type)
489
+ return create_tmpvar(res_type)
488
490
  end
489
491
  _notify_variable_value_referred(node, subs)
490
492
 
491
493
  # NOTE: An array subscript converted to `int' implicitly.
492
- unless subs.type.same_as?(int_type)
493
- if int_subs = do_conversion(subs, int_type)
494
+ unless subs.type.same_as?(int_t)
495
+ if int_subs = do_conversion(subs, int_t)
494
496
  notify_implicit_conv_performed(node.array_subscript,
495
497
  subs, int_subs)
496
498
  subs = int_subs
497
499
  else
498
- return create_tempvar(result_type)
500
+ return create_tmpvar(res_type)
499
501
  end
500
502
  end
501
503
 
@@ -503,28 +505,27 @@ module C #:nodoc:
503
505
  subs_val = subs.value.unique_sample
504
506
  if ary and inner_var = ary.inner_variable_at(subs_val)
505
507
  _notify_object_referred(node, inner_var)
506
- if inner_var.type.same_as?(result_type)
507
- result_var = inner_var
508
+ if inner_var.type.same_as?(res_type)
509
+ res_var = inner_var
508
510
  end
509
511
  end
510
- result_var ||= create_tempvar(result_type)
512
+ res_var ||= create_tmpvar(res_type)
511
513
 
512
- notify_array_subscript_expr_evaled(node, ary_or_ptr, subs, ary,
513
- result_var)
514
- result_var
514
+ notify_array_subscript_expr_evaled(node, obj, subs, ary, res_var)
515
+ res_var
515
516
  end
516
517
 
517
518
  def eval_function_call_expr(node, obj, args)
518
519
  if obj.function?
519
- func = obj
520
+ fun = obj
520
521
  else
521
- return create_tempvar unless obj.type.pointer?
522
+ return create_tmpvar unless obj.type.pointer?
522
523
  obj_base_type = obj.type.unqualify.base_type
523
524
  if obj_base_type.function?
524
525
  if pointee = pointee_of(obj) and pointee.function?
525
- func = pointee
526
+ fun = pointee
526
527
  else
527
- func = define_anonymous_function(obj_base_type)
528
+ fun = define_anonymous_function(obj_base_type)
528
529
  end
529
530
  end
530
531
  end
@@ -543,20 +544,28 @@ module C #:nodoc:
543
544
  notify_sequence_point_reached(SequencePoint.new(node))
544
545
  end
545
546
 
546
- result_var = func.call(interpreter, node, args)
547
- unless func.builtin?
547
+ res_var = nil
548
+ break_event = BreakEvent.catch {
549
+ res_var = fun.call(interpreter, node, args)
550
+ }
551
+
552
+ unless fun.builtin?
548
553
  arg_vars = args.map { |arg_obj, *| object_to_variable(arg_obj) }
549
- notify_function_call_expr_evaled(node, func, arg_vars, result_var)
554
+ notify_function_call_expr_evaled(node, fun, arg_vars, res_var)
550
555
  end
551
556
 
552
- result_var
557
+ if break_event
558
+ break_event.throw
559
+ else
560
+ res_var
561
+ end
553
562
  end
554
563
 
555
564
  def eval_member_access_by_value_expr(node, obj)
556
565
  if obj.variable? && obj.type.composite?
557
566
  outer_var = obj
558
567
  else
559
- return create_tempvar
568
+ return create_tmpvar
560
569
  end
561
570
 
562
571
  memb_var = outer_var.inner_variable_named(node.identifier.value)
@@ -571,7 +580,7 @@ module C #:nodoc:
571
580
  _notify_object_referred(node, memb_var)
572
581
  memb_var
573
582
  else
574
- create_tempvar
583
+ create_tmpvar
575
584
  end
576
585
  end
577
586
 
@@ -580,7 +589,7 @@ module C #:nodoc:
580
589
  if obj.variable? && obj_type.pointer? && obj_type.base_type.composite?
581
590
  ptr = obj
582
591
  else
583
- return create_tempvar
592
+ return create_tmpvar
584
593
  end
585
594
 
586
595
  if pointee = pointee_of(ptr)
@@ -588,7 +597,7 @@ module C #:nodoc:
588
597
  if first_elem = pointee.inner_variable_at(0)
589
598
  pointee = first_elem
590
599
  else
591
- pointee = create_tempvar(obj_type.base_type)
600
+ pointee = create_tmpvar(obj_type.base_type)
592
601
  end
593
602
  end
594
603
  end
@@ -601,7 +610,7 @@ module C #:nodoc:
601
610
  memb_var = outer_var.inner_variable_named(node.identifier.value)
602
611
  else
603
612
  if memb = obj_type.base_type.member_named(node.identifier.value)
604
- memb_var = create_tempvar(memb.type)
613
+ memb_var = create_tmpvar(memb.type)
605
614
  end
606
615
  end
607
616
 
@@ -613,7 +622,7 @@ module C #:nodoc:
613
622
  _notify_object_referred(node, memb_var)
614
623
  memb_var
615
624
  else
616
- create_tempvar
625
+ create_tmpvar
617
626
  end
618
627
  end
619
628
 
@@ -621,10 +630,10 @@ module C #:nodoc:
621
630
  if obj.variable? && obj.type.scalar?
622
631
  var = obj
623
632
  else
624
- return create_tempvar
633
+ return create_tmpvar
625
634
  end
626
635
 
627
- result_var = create_tempvar(var.type, var.value.dup)
636
+ res_var = create_tmpvar(var.type, var.value.dup)
628
637
 
629
638
  # NOTE: Value of the variable is referred at this point. But value
630
639
  # reference should not be notified not to confuse sequence-point
@@ -632,22 +641,22 @@ module C #:nodoc:
632
641
  # _notify_variable_value_referred(node, var)
633
642
 
634
643
  if var.value.scalar?
635
- var.assign!(var.value + ScalarValue.of(1))
644
+ var.assign!(var.value + scalar_value_of(1))
636
645
  _notify_variable_value_updated(node, var)
637
646
  end
638
647
 
639
- notify_postfix_increment_expr_evaled(node, var, result_var)
640
- result_var
648
+ notify_postfix_increment_expr_evaled(node, var, res_var)
649
+ res_var
641
650
  end
642
651
 
643
652
  def eval_postfix_decrement_expr(node, obj)
644
653
  if obj.variable? && obj.type.scalar?
645
654
  var = obj
646
655
  else
647
- return create_tempvar
656
+ return create_tmpvar
648
657
  end
649
658
 
650
- result_var = create_tempvar(var.type, var.value.dup)
659
+ res_var = create_tmpvar(var.type, var.value.dup)
651
660
 
652
661
  # NOTE: Value of the variable is referred at this point. But value
653
662
  # reference should not be notified not to confuse sequence-point
@@ -655,22 +664,22 @@ module C #:nodoc:
655
664
  # _notify_variable_value_referred(node, var)
656
665
 
657
666
  if var.value.scalar?
658
- var.assign!(var.value - ScalarValue.of(1))
667
+ var.assign!(var.value - scalar_value_of(1))
659
668
  _notify_variable_value_updated(node, var)
660
669
  end
661
670
 
662
- notify_postfix_decrement_expr_evaled(node, var, result_var)
663
- result_var
671
+ notify_postfix_decrement_expr_evaled(node, var, res_var)
672
+ res_var
664
673
  end
665
674
 
666
675
  def eval_prefix_increment_expr(node, obj)
667
676
  if obj.variable? && obj.type.scalar?
668
677
  var = obj
669
678
  else
670
- return create_tempvar
679
+ return create_tmpvar
671
680
  end
672
681
 
673
- orig_val = var.value.dup
682
+ org_val = var.value.dup
674
683
 
675
684
  # NOTE: Value of the variable is referred at this point. But value
676
685
  # reference should not be notified not to confuse sequence-point
@@ -678,22 +687,22 @@ module C #:nodoc:
678
687
  # _notify_variable_value_referred(node, var)
679
688
 
680
689
  if var.value.scalar?
681
- var.assign!(var.value + ScalarValue.of(1))
690
+ var.assign!(var.value + scalar_value_of(1))
682
691
  _notify_variable_value_updated(node, var)
683
692
  end
684
693
 
685
- notify_prefix_increment_expr_evaled(node, var, orig_val)
686
- create_tempvar(var.type, var.value)
694
+ notify_prefix_increment_expr_evaled(node, var, org_val)
695
+ create_tmpvar(var.type, var.value)
687
696
  end
688
697
 
689
698
  def eval_prefix_decrement_expr(node, obj)
690
699
  if obj.variable? && obj.type.scalar?
691
700
  var = obj
692
701
  else
693
- return create_tempvar
702
+ return create_tmpvar
694
703
  end
695
704
 
696
- orig_val = var.value.dup
705
+ org_val = var.value.dup
697
706
 
698
707
  # NOTE: Value of the variable is referred at this point. But value
699
708
  # reference should not be notified not to confuse sequence-point
@@ -701,12 +710,12 @@ module C #:nodoc:
701
710
  # _notify_variable_value_referred(node, var)
702
711
 
703
712
  if var.value.scalar?
704
- var.assign!(var.value - ScalarValue.of(1))
713
+ var.assign!(var.value - scalar_value_of(1))
705
714
  _notify_variable_value_updated(node, var)
706
715
  end
707
716
 
708
- notify_prefix_decrement_expr_evaled(node, var, orig_val)
709
- create_tempvar(var.type, var.value)
717
+ notify_prefix_decrement_expr_evaled(node, var, org_val)
718
+ create_tmpvar(var.type, var.value)
710
719
  end
711
720
 
712
721
  def eval_address_expr(node, obj)
@@ -715,7 +724,7 @@ module C #:nodoc:
715
724
  # variable cross-references.
716
725
  _notify_variable_value_referred(node, obj)
717
726
 
718
- ptr = create_tempvar(pointer_type(obj.type), pointer_value_of(obj))
727
+ ptr = create_tmpvar(pointer_type(obj.type), pointer_value_of(obj))
719
728
  notify_address_expr_evaled(node, obj, ptr)
720
729
  ptr
721
730
  end
@@ -724,7 +733,7 @@ module C #:nodoc:
724
733
  if obj.variable? && obj.type.pointer?
725
734
  ptr = obj
726
735
  else
727
- return create_tempvar
736
+ return create_tmpvar
728
737
  end
729
738
 
730
739
  pointee = pointee_of(ptr)
@@ -739,18 +748,18 @@ module C #:nodoc:
739
748
  if first_elem = pointee.inner_variable_at(0)
740
749
  pointee = first_elem
741
750
  else
742
- pointee = create_tempvar(ptr_base_type)
751
+ pointee = create_tmpvar(ptr_base_type)
743
752
  end
744
753
  end
745
754
 
746
755
  unless ptr_base_type.same_as?(pointee.type)
747
756
  pointee = do_conversion(pointee, ptr_base_type) ||
748
- create_tempvar(ptr_base_type)
757
+ create_tmpvar(ptr_base_type)
749
758
  end
750
759
  when ptr_base_type.function?
751
760
  pointee = define_anonymous_function(ptr_base_type)
752
761
  else
753
- pointee = create_tempvar(ptr_base_type)
762
+ pointee = create_tmpvar(ptr_base_type)
754
763
  end
755
764
 
756
765
  notify_indirection_expr_evaled(node, ptr, pointee)
@@ -762,44 +771,44 @@ module C #:nodoc:
762
771
  case
763
772
  when !var.type.scalar? && !var.type.void?
764
773
  # NOTE: To detect bad value reference of `void' expressions.
765
- return create_tempvar
774
+ return create_tmpvar
766
775
  when var != obj
767
776
  notify_implicit_conv_performed(node.operand, obj, var)
768
777
  end
769
778
 
770
779
  case node.operator.type
771
780
  when "+"
772
- result_var = create_tempvar(var.type, +var.value)
781
+ res_var = create_tmpvar(var.type, +var.value)
773
782
  when "-"
774
- result_var = create_tempvar(var.type, -var.value)
783
+ res_var = create_tmpvar(var.type, -var.value)
775
784
  when "~"
776
- result_var = create_tempvar(var.type, ~var.value)
785
+ res_var = create_tmpvar(var.type, ~var.value)
777
786
  when "!"
778
- result_var = create_tempvar(int_type, !var.value)
787
+ res_var = create_tmpvar(int_t, !var.value)
779
788
  else
780
789
  __NOTREACHED__
781
790
  end
782
791
  _notify_variable_value_referred(node, var)
783
792
 
784
- notify_unary_arithmetic_expr_evaled(node, var, result_var)
785
- result_var
793
+ notify_unary_arithmetic_expr_evaled(node, var, res_var)
794
+ res_var
786
795
  end
787
796
 
788
797
  def eval_cast_expr(node, obj)
789
798
  resolve_unresolved_type(node.type_name)
790
799
 
791
800
  var = object_to_variable(obj)
792
- result_var = do_conversion(var, node.type_name.type) ||
793
- create_tempvar(node.type_name.type)
801
+ res_var = do_conversion(var, node.type_name.type) ||
802
+ create_tmpvar(node.type_name.type)
794
803
 
795
- notify_explicit_conv_performed(node, var, result_var)
804
+ notify_explicit_conv_performed(node, var, res_var)
796
805
 
797
806
  # NOTE: A cast-expression does not refer a source value essentially.
798
807
  # But, to avoid misunderstand that a return value of a function
799
808
  # is discarded when the return value is casted before assigning
800
809
  # to a variable.
801
810
  _notify_variable_value_referred(node, var)
802
- result_var
811
+ res_var
803
812
  end
804
813
 
805
814
  def eval_multiplicative_expr(node, lhs_obj, rhs_obj)
@@ -807,7 +816,7 @@ module C #:nodoc:
807
816
  case
808
817
  when !lhs_var.type.scalar? && !lhs_var.type.void?
809
818
  # NOTE: To detect bad value reference of `void' expressions.
810
- return create_tempvar
819
+ return create_tmpvar
811
820
  when lhs_var != lhs_obj
812
821
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
813
822
  end
@@ -816,7 +825,7 @@ module C #:nodoc:
816
825
  case
817
826
  when !rhs_var.type.scalar? && !rhs_var.type.void?
818
827
  # NOTE: To detect bad value reference of `void' expressions.
819
- return create_tempvar
828
+ return create_tmpvar
820
829
  when rhs_var != rhs_obj
821
830
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
822
831
  end
@@ -838,27 +847,27 @@ module C #:nodoc:
838
847
  when "*"
839
848
  # NOTE: Domain of the arithmetic result value will be restricted by
840
849
  # min-max of the variable type.
841
- result_var = create_tempvar(lhs_conved.type, lhs_val * rhs_val)
850
+ res_var = create_tmpvar(lhs_conved.type, lhs_val * rhs_val)
842
851
  when "/"
843
852
  # NOTE: Domain of the arithmetic result value will be restricted by
844
853
  # min-max of the variable type.
845
854
  # NOTE: "Div by 0" semantics is implemented in value-value
846
855
  # arithmetic.
847
- result_var = create_tempvar(lhs_conved.type, lhs_val / rhs_val)
856
+ res_var = create_tmpvar(lhs_conved.type, lhs_val / rhs_val)
848
857
  when "%"
849
858
  # NOTE: Domain of the arithmetic result value will be restricted by
850
859
  # min-max of the variable type.
851
860
  # NOTE: "Div by 0" semantics is implemented in value-value
852
861
  # arithmetic.
853
- result_var = create_tempvar(lhs_conved.type, lhs_val % rhs_val)
862
+ res_var = create_tmpvar(lhs_conved.type, lhs_val % rhs_val)
854
863
  else
855
864
  __NOTREACHED__
856
865
  end
857
866
  _notify_variable_value_referred(node, lhs_var)
858
867
  _notify_variable_value_referred(node, rhs_var)
859
868
 
860
- notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, result_var)
861
- result_var
869
+ notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, res_var)
870
+ res_var
862
871
  end
863
872
 
864
873
  def eval_additive_expr(node, lhs_obj, rhs_obj)
@@ -866,7 +875,7 @@ module C #:nodoc:
866
875
  case
867
876
  when !lhs_var.type.scalar? && !lhs_var.type.void?
868
877
  # NOTE: To detect bad value reference of `void' expressions.
869
- return create_tempvar
878
+ return create_tmpvar
870
879
  when lhs_var != lhs_obj
871
880
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
872
881
  end
@@ -875,7 +884,7 @@ module C #:nodoc:
875
884
  case
876
885
  when !rhs_var.type.scalar? && !rhs_var.type.void?
877
886
  # NOTE: To detect bad value reference of `void' expressions.
878
- return create_tempvar
887
+ return create_tmpvar
879
888
  when rhs_var != rhs_obj
880
889
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
881
890
  end
@@ -897,19 +906,19 @@ module C #:nodoc:
897
906
  when "+"
898
907
  # NOTE: Domain of the arithmetic result value will be restricted by
899
908
  # min-max of the variable type.
900
- result_var = create_tempvar(lhs_conved.type, lhs_val + rhs_val)
909
+ res_var = create_tmpvar(lhs_conved.type, lhs_val + rhs_val)
901
910
  when "-"
902
911
  # NOTE: Domain of the arithmetic result value will be restricted by
903
912
  # min-max of the variable type.
904
- result_var = create_tempvar(lhs_conved.type, lhs_val - rhs_val)
913
+ res_var = create_tmpvar(lhs_conved.type, lhs_val - rhs_val)
905
914
  else
906
915
  __NOTREACHED__
907
916
  end
908
917
  _notify_variable_value_referred(node, lhs_var)
909
918
  _notify_variable_value_referred(node, rhs_var)
910
919
 
911
- notify_additive_expr_evaled(node, lhs_var, rhs_var, result_var)
912
- result_var
920
+ notify_additive_expr_evaled(node, lhs_var, rhs_var, res_var)
921
+ res_var
913
922
  end
914
923
 
915
924
  def eval_shift_expr(node, lhs_obj, rhs_obj)
@@ -917,7 +926,7 @@ module C #:nodoc:
917
926
  case
918
927
  when !lhs_var.type.scalar? && !lhs_var.type.void?
919
928
  # NOTE: To detect bad value reference of `void' expressions.
920
- return create_tempvar
929
+ return create_tmpvar
921
930
  when lhs_var != lhs_obj
922
931
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
923
932
  end
@@ -926,7 +935,7 @@ module C #:nodoc:
926
935
  case
927
936
  when !rhs_var.type.scalar? && !rhs_var.type.void?
928
937
  # NOTE: To detect bad value reference of `void' expressions.
929
- return create_tempvar
938
+ return create_tmpvar
930
939
  when rhs_var != rhs_obj
931
940
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
932
941
  end
@@ -958,19 +967,19 @@ module C #:nodoc:
958
967
  when "<<"
959
968
  # NOTE: Domain of the arithmetic result value will be restricted by
960
969
  # min-max of the variable type.
961
- result_var = create_tempvar(lhs_conved.type, lhs_val << rhs_val)
970
+ res_var = create_tmpvar(lhs_conved.type, lhs_val << rhs_val)
962
971
  when ">>"
963
972
  # NOTE: Domain of the arithmetic result value will be restricted by
964
973
  # min-max of the variable type.
965
- result_var = create_tempvar(lhs_conved.type, lhs_val >> rhs_val)
974
+ res_var = create_tmpvar(lhs_conved.type, lhs_val >> rhs_val)
966
975
  else
967
976
  __NOTREACHED__
968
977
  end
969
978
  _notify_variable_value_referred(node, lhs_var)
970
979
  _notify_variable_value_referred(node, rhs_var)
971
980
 
972
- notify_shift_expr_evaled(node, lhs_var, rhs_var, result_var)
973
- result_var
981
+ notify_shift_expr_evaled(node, lhs_var, rhs_var, res_var)
982
+ res_var
974
983
  end
975
984
 
976
985
  def eval_relational_expr(node, lhs_obj, rhs_obj)
@@ -978,7 +987,7 @@ module C #:nodoc:
978
987
  case
979
988
  when !lhs_var.type.scalar? && !lhs_var.type.void?
980
989
  # NOTE: To detect bad value reference of `void' expressions.
981
- return create_tempvar(int_type, ScalarValue.of_arbitrary)
990
+ return create_tmpvar(int_t, scalar_value_of_arbitrary)
982
991
  when lhs_var != lhs_obj
983
992
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
984
993
  end
@@ -987,7 +996,7 @@ module C #:nodoc:
987
996
  case
988
997
  when !rhs_var.type.scalar? && !rhs_var.type.void?
989
998
  # NOTE: To detect bad value reference of `void' expressions.
990
- return create_tempvar(int_type, ScalarValue.of_arbitrary)
999
+ return create_tmpvar(int_t, scalar_value_of_arbitrary)
991
1000
  when rhs_var != rhs_obj
992
1001
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
993
1002
  end
@@ -1007,21 +1016,21 @@ module C #:nodoc:
1007
1016
 
1008
1017
  case node.operator.type
1009
1018
  when "<"
1010
- result_var = create_tempvar(int_type, lhs_val < rhs_val)
1019
+ res_var = create_tmpvar(int_t, lhs_val < rhs_val)
1011
1020
  when ">"
1012
- result_var = create_tempvar(int_type, lhs_val > rhs_val)
1021
+ res_var = create_tmpvar(int_t, lhs_val > rhs_val)
1013
1022
  when "<="
1014
- result_var = create_tempvar(int_type, lhs_val <= rhs_val)
1023
+ res_var = create_tmpvar(int_t, lhs_val <= rhs_val)
1015
1024
  when ">="
1016
- result_var = create_tempvar(int_type, lhs_val >= rhs_val)
1025
+ res_var = create_tmpvar(int_t, lhs_val >= rhs_val)
1017
1026
  else
1018
1027
  __NOTREACHED__
1019
1028
  end
1020
1029
  _notify_variable_value_referred(node, lhs_var)
1021
1030
  _notify_variable_value_referred(node, rhs_var)
1022
1031
 
1023
- notify_relational_expr_evaled(node, lhs_var, rhs_var, result_var)
1024
- result_var
1032
+ notify_relational_expr_evaled(node, lhs_var, rhs_var, res_var)
1033
+ res_var
1025
1034
  end
1026
1035
 
1027
1036
  def eval_equality_expr(node, lhs_obj, rhs_obj)
@@ -1029,7 +1038,7 @@ module C #:nodoc:
1029
1038
  case
1030
1039
  when !lhs_var.type.scalar? && !lhs_var.type.void?
1031
1040
  # NOTE: To detect bad value reference of `void' expressions.
1032
- return create_tempvar(int_type, ScalarValue.of_arbitrary)
1041
+ return create_tmpvar(int_t, scalar_value_of_arbitrary)
1033
1042
  when lhs_var != lhs_obj
1034
1043
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
1035
1044
  end
@@ -1038,7 +1047,7 @@ module C #:nodoc:
1038
1047
  case
1039
1048
  when !rhs_var.type.scalar? && !rhs_var.type.void?
1040
1049
  # NOTE: To detect bad value reference of `void' expressions.
1041
- return create_tempvar(int_type, ScalarValue.of_arbitrary)
1050
+ return create_tmpvar(int_t, scalar_value_of_arbitrary)
1042
1051
  when rhs_var != rhs_obj
1043
1052
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
1044
1053
  end
@@ -1058,17 +1067,17 @@ module C #:nodoc:
1058
1067
 
1059
1068
  case node.operator.type
1060
1069
  when "=="
1061
- result_var = create_tempvar(int_type, lhs_val == rhs_val)
1070
+ res_var = create_tmpvar(int_t, lhs_val == rhs_val)
1062
1071
  when "!="
1063
- result_var = create_tempvar(int_type, lhs_val != rhs_val)
1072
+ res_var = create_tmpvar(int_t, lhs_val != rhs_val)
1064
1073
  else
1065
1074
  __NOTREACHED__
1066
1075
  end
1067
1076
  _notify_variable_value_referred(node, lhs_var)
1068
1077
  _notify_variable_value_referred(node, rhs_var)
1069
1078
 
1070
- notify_equality_expr_evaled(node, lhs_var, rhs_var, result_var)
1071
- result_var
1079
+ notify_equality_expr_evaled(node, lhs_var, rhs_var, res_var)
1080
+ res_var
1072
1081
  end
1073
1082
 
1074
1083
  def eval_and_expr(node, lhs_obj, rhs_obj)
@@ -1076,7 +1085,7 @@ module C #:nodoc:
1076
1085
  case
1077
1086
  when !lhs_var.type.scalar? && !lhs_var.type.void?
1078
1087
  # NOTE: To detect bad value reference of `void' expressions.
1079
- return create_tempvar
1088
+ return create_tmpvar
1080
1089
  when lhs_var != lhs_obj
1081
1090
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
1082
1091
  end
@@ -1085,7 +1094,7 @@ module C #:nodoc:
1085
1094
  case
1086
1095
  when !rhs_var.type.scalar? && !rhs_var.type.void?
1087
1096
  # NOTE: To detect bad value reference of `void' expressions.
1088
- return create_tempvar
1097
+ return create_tmpvar
1089
1098
  when rhs_var != rhs_obj
1090
1099
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
1091
1100
  end
@@ -1105,12 +1114,12 @@ module C #:nodoc:
1105
1114
 
1106
1115
  # NOTE: Domain of the arithmetic result value will be restricted by
1107
1116
  # min-max of the variable type.
1108
- result_var = create_tempvar(lhs_conved.type, lhs_val & rhs_val)
1117
+ res_var = create_tmpvar(lhs_conved.type, lhs_val & rhs_val)
1109
1118
  _notify_variable_value_referred(node, lhs_var)
1110
1119
  _notify_variable_value_referred(node, rhs_var)
1111
1120
 
1112
- notify_and_expr_evaled(node, lhs_var, rhs_var, result_var)
1113
- result_var
1121
+ notify_and_expr_evaled(node, lhs_var, rhs_var, res_var)
1122
+ res_var
1114
1123
  end
1115
1124
 
1116
1125
  def eval_exclusive_or_expr(node, lhs_obj, rhs_obj)
@@ -1118,7 +1127,7 @@ module C #:nodoc:
1118
1127
  case
1119
1128
  when !lhs_var.type.scalar? && !lhs_var.type.void?
1120
1129
  # NOTE: To detect bad value reference of `void' expressions.
1121
- return create_tempvar
1130
+ return create_tmpvar
1122
1131
  when lhs_var != lhs_obj
1123
1132
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
1124
1133
  end
@@ -1127,7 +1136,7 @@ module C #:nodoc:
1127
1136
  case
1128
1137
  when !rhs_var.type.scalar? && !rhs_var.type.void?
1129
1138
  # NOTE: To detect bad value reference of `void' expressions.
1130
- return create_tempvar
1139
+ return create_tmpvar
1131
1140
  when rhs_var != rhs_obj
1132
1141
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
1133
1142
  end
@@ -1147,12 +1156,12 @@ module C #:nodoc:
1147
1156
 
1148
1157
  # NOTE: Domain of the arithmetic result value will be restricted by
1149
1158
  # min-max of the variable type.
1150
- result_var = create_tempvar(lhs_conved.type, lhs_val ^ rhs_val)
1159
+ res_var = create_tmpvar(lhs_conved.type, lhs_val ^ rhs_val)
1151
1160
  _notify_variable_value_referred(node, lhs_var)
1152
1161
  _notify_variable_value_referred(node, rhs_var)
1153
1162
 
1154
- notify_exclusive_or_expr_evaled(node, lhs_var, rhs_var, result_var)
1155
- result_var
1163
+ notify_exclusive_or_expr_evaled(node, lhs_var, rhs_var, res_var)
1164
+ res_var
1156
1165
  end
1157
1166
 
1158
1167
  def eval_inclusive_or_expr(node, lhs_obj, rhs_obj)
@@ -1160,7 +1169,7 @@ module C #:nodoc:
1160
1169
  case
1161
1170
  when !lhs_var.type.scalar? && !lhs_var.type.void?
1162
1171
  # NOTE: To detect bad value reference of `void' expressions.
1163
- return create_tempvar
1172
+ return create_tmpvar
1164
1173
  when lhs_var != lhs_obj
1165
1174
  notify_implicit_conv_performed(node.lhs_operand, lhs_obj, lhs_var)
1166
1175
  end
@@ -1169,7 +1178,7 @@ module C #:nodoc:
1169
1178
  case
1170
1179
  when !rhs_var.type.scalar? && !rhs_var.type.void?
1171
1180
  # NOTE: To detect bad value reference of `void' expressions.
1172
- return create_tempvar
1181
+ return create_tmpvar
1173
1182
  when rhs_var != rhs_obj
1174
1183
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
1175
1184
  end
@@ -1189,12 +1198,12 @@ module C #:nodoc:
1189
1198
 
1190
1199
  # NOTE: Domain of the arithmetic result value will be restricted by
1191
1200
  # min-max of the variable type.
1192
- result_var = create_tempvar(lhs_conved.type, lhs_val | rhs_val)
1201
+ res_var = create_tmpvar(lhs_conved.type, lhs_val | rhs_val)
1193
1202
  _notify_variable_value_referred(node, lhs_var)
1194
1203
  _notify_variable_value_referred(node, rhs_var)
1195
1204
 
1196
- notify_inclusive_or_expr_evaled(node, lhs_var, rhs_var, result_var)
1197
- result_var
1205
+ notify_inclusive_or_expr_evaled(node, lhs_var, rhs_var, res_var)
1206
+ res_var
1198
1207
  end
1199
1208
 
1200
1209
  def eval_simple_assignment_expr(node, lhs_obj, rhs_obj)
@@ -1213,7 +1222,7 @@ module C #:nodoc:
1213
1222
  rhs_conved = rhs_var
1214
1223
  else
1215
1224
  rhs_conved = do_conversion(rhs_var, lhs_var.type) ||
1216
- create_tempvar(lhs_var.type)
1225
+ create_tmpvar(lhs_var.type)
1217
1226
  notify_implicit_conv_performed(node.rhs_operand, rhs_var, rhs_conved)
1218
1227
  end
1219
1228
 
@@ -1241,7 +1250,7 @@ module C #:nodoc:
1241
1250
  case
1242
1251
  when !rhs_var.type.scalar? && !rhs_var.type.void?
1243
1252
  # NOTE: To detect bad value reference of `void' expressions.
1244
- return create_tempvar
1253
+ return create_tmpvar
1245
1254
  when rhs_var != rhs_obj
1246
1255
  notify_implicit_conv_performed(node.rhs_operand, rhs_obj, rhs_var)
1247
1256
  end
@@ -1278,7 +1287,7 @@ module C #:nodoc:
1278
1287
 
1279
1288
  lhs_val = lhs_conved.value
1280
1289
  rhs_val = rhs_conved.value
1281
- result_var = create_tempvar(lhs_conved.type, lhs_val * rhs_val)
1290
+ res_var = create_tmpvar(lhs_conved.type, lhs_val * rhs_val)
1282
1291
 
1283
1292
  # NOTE: Value of the lhs_var is referred at this point. But value
1284
1293
  # reference should not be notified not to confuse sequence-point
@@ -1286,9 +1295,9 @@ module C #:nodoc:
1286
1295
  # _notify_variable_value_referred(node, lhs_var)
1287
1296
  _notify_variable_value_referred(node, rhs_var)
1288
1297
 
1289
- notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, result_var)
1298
+ notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, res_var)
1290
1299
 
1291
- _do_assign(node, lhs_var, result_var)
1300
+ _do_assign(node, lhs_var, res_var)
1292
1301
  end
1293
1302
 
1294
1303
  def _do_div_then_assign(node, lhs_var, rhs_var)
@@ -1297,7 +1306,7 @@ module C #:nodoc:
1297
1306
  lhs_val = lhs_conved.value
1298
1307
  rhs_val = rhs_conved.value
1299
1308
  # NOTE: "Div by 0" semantics is implemented in value-value arithmetic.
1300
- result_var = create_tempvar(lhs_conved.type, lhs_val / rhs_val)
1309
+ res_var = create_tmpvar(lhs_conved.type, lhs_val / rhs_val)
1301
1310
 
1302
1311
  # NOTE: Value of the lhs_var is referred at this point. But value
1303
1312
  # reference should not be notified not to confuse sequence-point
@@ -1305,9 +1314,9 @@ module C #:nodoc:
1305
1314
  # _notify_variable_value_referred(node, lhs_var)
1306
1315
  _notify_variable_value_referred(node, rhs_var)
1307
1316
 
1308
- notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, result_var)
1317
+ notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, res_var)
1309
1318
 
1310
- _do_assign(node, lhs_var, result_var)
1319
+ _do_assign(node, lhs_var, res_var)
1311
1320
  end
1312
1321
 
1313
1322
  def _do_mod_then_assign(node, lhs_var, rhs_var)
@@ -1316,7 +1325,7 @@ module C #:nodoc:
1316
1325
  lhs_val = lhs_conved.value
1317
1326
  rhs_val = rhs_conved.value
1318
1327
  # NOTE: "Div by 0" semantics is implemented in value-value arithmetic.
1319
- result_var = create_tempvar(lhs_conved.type, lhs_val % rhs_val)
1328
+ res_var = create_tmpvar(lhs_conved.type, lhs_val % rhs_val)
1320
1329
 
1321
1330
  # NOTE: Value of the lhs_var is referred at this point. But value
1322
1331
  # reference should not be notified not to confuse sequence-point
@@ -1324,9 +1333,9 @@ module C #:nodoc:
1324
1333
  # _notify_variable_value_referred(node, lhs_var)
1325
1334
  _notify_variable_value_referred(node, rhs_var)
1326
1335
 
1327
- notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, result_var)
1336
+ notify_multiplicative_expr_evaled(node, lhs_var, rhs_var, res_var)
1328
1337
 
1329
- _do_assign(node, lhs_var, result_var)
1338
+ _do_assign(node, lhs_var, res_var)
1330
1339
  end
1331
1340
 
1332
1341
  def _do_add_then_assign(node, lhs_var, rhs_var)
@@ -1334,7 +1343,7 @@ module C #:nodoc:
1334
1343
 
1335
1344
  lhs_val = lhs_conved.value
1336
1345
  rhs_val = rhs_conved.value
1337
- result_var = create_tempvar(lhs_conved.type, lhs_val + rhs_val)
1346
+ res_var = create_tmpvar(lhs_conved.type, lhs_val + rhs_val)
1338
1347
 
1339
1348
  # NOTE: Value of the lhs_var is referred at this point. But value
1340
1349
  # reference should not be notified not to confuse sequence-point
@@ -1342,9 +1351,9 @@ module C #:nodoc:
1342
1351
  # _notify_variable_value_referred(node, lhs_var)
1343
1352
  _notify_variable_value_referred(node, rhs_var)
1344
1353
 
1345
- notify_additive_expr_evaled(node, lhs_var, rhs_var, result_var)
1354
+ notify_additive_expr_evaled(node, lhs_var, rhs_var, res_var)
1346
1355
 
1347
- _do_assign(node, lhs_var, result_var)
1356
+ _do_assign(node, lhs_var, res_var)
1348
1357
  end
1349
1358
 
1350
1359
  def _do_sub_then_assign(node, lhs_var, rhs_var)
@@ -1352,7 +1361,7 @@ module C #:nodoc:
1352
1361
 
1353
1362
  lhs_val = lhs_conved.value
1354
1363
  rhs_val = rhs_conved.value
1355
- result_var = create_tempvar(lhs_conved.type, lhs_val - rhs_val)
1364
+ res_var = create_tmpvar(lhs_conved.type, lhs_val - rhs_val)
1356
1365
 
1357
1366
  # NOTE: Value of the lhs_var is referred at this point. But value
1358
1367
  # reference should not be notified not to confuse sequence-point
@@ -1360,9 +1369,9 @@ module C #:nodoc:
1360
1369
  # _notify_variable_value_referred(node, lhs_var)
1361
1370
  _notify_variable_value_referred(node, rhs_var)
1362
1371
 
1363
- notify_additive_expr_evaled(node, lhs_var, rhs_var, result_var)
1372
+ notify_additive_expr_evaled(node, lhs_var, rhs_var, res_var)
1364
1373
 
1365
- _do_assign(node, lhs_var, result_var)
1374
+ _do_assign(node, lhs_var, res_var)
1366
1375
  end
1367
1376
 
1368
1377
  def _do_shl_then_assign(node, lhs_var, rhs_var)
@@ -1379,7 +1388,7 @@ module C #:nodoc:
1379
1388
 
1380
1389
  lhs_val = lhs_conved.value
1381
1390
  rhs_val = rhs_conved.value
1382
- result_var = create_tempvar(lhs_conved.type, lhs_val << rhs_val)
1391
+ res_var = create_tmpvar(lhs_conved.type, lhs_val << rhs_val)
1383
1392
 
1384
1393
  # NOTE: Value of the lhs_var is referred at this point. But value
1385
1394
  # reference should not be notified not to confuse sequence-point
@@ -1387,9 +1396,9 @@ module C #:nodoc:
1387
1396
  # _notify_variable_value_referred(node, lhs_var)
1388
1397
  _notify_variable_value_referred(node, rhs_var)
1389
1398
 
1390
- notify_shift_expr_evaled(node, lhs_var, rhs_var, result_var)
1399
+ notify_shift_expr_evaled(node, lhs_var, rhs_var, res_var)
1391
1400
 
1392
- _do_assign(node, lhs_var, result_var)
1401
+ _do_assign(node, lhs_var, res_var)
1393
1402
  end
1394
1403
 
1395
1404
  def _do_shr_then_assign(node, lhs_var, rhs_var)
@@ -1406,7 +1415,7 @@ module C #:nodoc:
1406
1415
 
1407
1416
  lhs_val = lhs_conved.value
1408
1417
  rhs_val = rhs_conved.value
1409
- result_var = create_tempvar(lhs_conved.type, lhs_val >> rhs_val)
1418
+ res_var = create_tmpvar(lhs_conved.type, lhs_val >> rhs_val)
1410
1419
 
1411
1420
  # NOTE: Value of the lhs_var is referred at this point. But value
1412
1421
  # reference should not be notified not to confuse sequence-point
@@ -1414,9 +1423,9 @@ module C #:nodoc:
1414
1423
  # _notify_variable_value_referred(node, lhs_var)
1415
1424
  _notify_variable_value_referred(node, rhs_var)
1416
1425
 
1417
- notify_shift_expr_evaled(node, lhs_var, rhs_var, result_var)
1426
+ notify_shift_expr_evaled(node, lhs_var, rhs_var, res_var)
1418
1427
 
1419
- _do_assign(node, lhs_var, result_var)
1428
+ _do_assign(node, lhs_var, res_var)
1420
1429
  end
1421
1430
 
1422
1431
  def _do_and_then_assign(node, lhs_var, rhs_var)
@@ -1424,7 +1433,7 @@ module C #:nodoc:
1424
1433
 
1425
1434
  lhs_val = lhs_conved.value
1426
1435
  rhs_val = rhs_conved.value
1427
- result_var = create_tempvar(lhs_conved.type, lhs_val & rhs_val)
1436
+ res_var = create_tmpvar(lhs_conved.type, lhs_val & rhs_val)
1428
1437
 
1429
1438
  # NOTE: Value of the lhs_var is referred at this point. But value
1430
1439
  # reference should not be notified not to confuse sequence-point
@@ -1432,9 +1441,9 @@ module C #:nodoc:
1432
1441
  # _notify_variable_value_referred(node, lhs_var)
1433
1442
  _notify_variable_value_referred(node, rhs_var)
1434
1443
 
1435
- notify_and_expr_evaled(node, lhs_var, rhs_var, result_var)
1444
+ notify_and_expr_evaled(node, lhs_var, rhs_var, res_var)
1436
1445
 
1437
- _do_assign(node, lhs_var, result_var)
1446
+ _do_assign(node, lhs_var, res_var)
1438
1447
  end
1439
1448
 
1440
1449
  def _do_xor_then_assign(node, lhs_var, rhs_var)
@@ -1442,7 +1451,7 @@ module C #:nodoc:
1442
1451
 
1443
1452
  lhs_val = lhs_conved.value
1444
1453
  rhs_val = rhs_conved.value
1445
- result_var = create_tempvar(lhs_conved.type, lhs_val ^ rhs_val)
1454
+ res_var = create_tmpvar(lhs_conved.type, lhs_val ^ rhs_val)
1446
1455
 
1447
1456
  # NOTE: Value of the lhs_var is referred at this point. But value
1448
1457
  # reference should not be notified not to confuse sequence-point
@@ -1450,9 +1459,9 @@ module C #:nodoc:
1450
1459
  # _notify_variable_value_referred(node, lhs_var)
1451
1460
  _notify_variable_value_referred(node, rhs_var)
1452
1461
 
1453
- notify_exclusive_or_expr_evaled(node, lhs_var, rhs_var, result_var)
1462
+ notify_exclusive_or_expr_evaled(node, lhs_var, rhs_var, res_var)
1454
1463
 
1455
- _do_assign(node, lhs_var, result_var)
1464
+ _do_assign(node, lhs_var, res_var)
1456
1465
  end
1457
1466
 
1458
1467
  def _do_ior_then_assign(node, lhs_var, rhs_var)
@@ -1460,7 +1469,7 @@ module C #:nodoc:
1460
1469
 
1461
1470
  lhs_val = lhs_conved.value
1462
1471
  rhs_val = rhs_conved.value
1463
- result_var = create_tempvar(lhs_conved.type, lhs_val | rhs_val)
1472
+ res_var = create_tmpvar(lhs_conved.type, lhs_val | rhs_val)
1464
1473
 
1465
1474
  # NOTE: Value of the lhs_var is referred at this point. But value
1466
1475
  # reference should not be notified not to confuse sequence-point
@@ -1468,9 +1477,9 @@ module C #:nodoc:
1468
1477
  # _notify_variable_value_referred(node, lhs_var)
1469
1478
  _notify_variable_value_referred(node, rhs_var)
1470
1479
 
1471
- notify_inclusive_or_expr_evaled(node, lhs_var, rhs_var, result_var)
1480
+ notify_inclusive_or_expr_evaled(node, lhs_var, rhs_var, res_var)
1472
1481
 
1473
- _do_assign(node, lhs_var, result_var)
1482
+ _do_assign(node, lhs_var, res_var)
1474
1483
  end
1475
1484
 
1476
1485
  def _do_uarith_conversion(node, lhs_var, rhs_var)
@@ -1501,22 +1510,21 @@ module C #:nodoc:
1501
1510
  return lhs_conved, rhs_conved
1502
1511
  end
1503
1512
 
1504
- def _do_assign(node, lhs_var, result_var)
1505
- if result_var.type.same_as?(lhs_var.type)
1506
- result_conved = result_var
1513
+ def _do_assign(node, lhs_var, rhs_var)
1514
+ if rhs_var.type.same_as?(lhs_var.type)
1515
+ rhs_conved = rhs_var
1507
1516
  else
1508
- result_conved = do_conversion(result_var, lhs_var.type) ||
1509
- create_tempvar(lhs_var.type)
1510
- notify_implicit_conv_performed(node.lhs_operand,
1511
- result_var, result_conved)
1517
+ rhs_conved = do_conversion(rhs_var, lhs_var.type) ||
1518
+ create_tmpvar(lhs_var.type)
1519
+ notify_implicit_conv_performed(node.lhs_operand, rhs_var, rhs_conved)
1512
1520
  end
1513
1521
 
1514
1522
  # NOTE: Domain of the arithmetic result value will be restricted by
1515
1523
  # min-max of the variable type.
1516
- lhs_var.assign!(result_conved.value.to_defined_value)
1524
+ lhs_var.assign!(rhs_conved.value.to_defined_value)
1517
1525
  _notify_variable_value_updated(node, lhs_var)
1518
1526
 
1519
- notify_assignment_expr_evaled(node, lhs_var, result_conved)
1527
+ notify_assignment_expr_evaled(node, lhs_var, rhs_conved)
1520
1528
  end
1521
1529
 
1522
1530
  def _notify_object_referred(node, obj)
@@ -1549,6 +1557,12 @@ module C #:nodoc:
1549
1557
  end
1550
1558
  end
1551
1559
  end
1560
+
1561
+ def _notify_implicit_function_declared(node, obj)
1562
+ if obj.function? && obj.implicit?
1563
+ interpreter.notify_implicit_function_declared(node, obj)
1564
+ end
1565
+ end
1552
1566
  end
1553
1567
 
1554
1568
  include Impl