ruby-internal 0.6.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 (310) hide show
  1. data/COPYING +59 -0
  2. data/LGPL +515 -0
  3. data/LICENSE +9 -0
  4. data/README +31 -0
  5. data/Rakefile +20 -0
  6. data/TODO +9 -0
  7. data/example/README +5 -0
  8. data/example/simple_client.rb +12 -0
  9. data/example/simple_server.rb +11 -0
  10. data/example/triangle_client.rb +7 -0
  11. data/example/triangle_server.rb +24 -0
  12. data/ext/cached/ruby-1.8.0/internal/binding/block.h +37 -0
  13. data/ext/cached/ruby-1.8.0/internal/method/method.h +19 -0
  14. data/ext/cached/ruby-1.8.0/internal/module/classpath.c +27 -0
  15. data/ext/cached/ruby-1.8.0/internal/module/classpath.h +14 -0
  16. data/ext/cached/ruby-1.8.0/internal/node/block.h +37 -0
  17. data/ext/cached/ruby-1.8.0/internal/node/global_entry.h +10 -0
  18. data/ext/cached/ruby-1.8.0/internal/node/node_type_descrip.c +155 -0
  19. data/ext/cached/ruby-1.8.0/internal/node/nodeinfo.c +5741 -0
  20. data/ext/cached/ruby-1.8.0/internal/node/nodeinfo.h +69 -0
  21. data/ext/cached/ruby-1.8.0/internal/proc/block.h +37 -0
  22. data/ext/cached/ruby-1.8.0/internal/tag/tag.h +15 -0
  23. data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.c +39 -0
  24. data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.h +21 -0
  25. data/ext/cached/ruby-1.8.0/internal/vm/iseq/insns_info.inc +12 -0
  26. data/ext/cached/ruby-1.8.1/internal/binding/block.h +31 -0
  27. data/ext/cached/ruby-1.8.1/internal/method/method.h +19 -0
  28. data/ext/cached/ruby-1.8.1/internal/module/classpath.c +27 -0
  29. data/ext/cached/ruby-1.8.1/internal/module/classpath.h +14 -0
  30. data/ext/cached/ruby-1.8.1/internal/node/block.h +31 -0
  31. data/ext/cached/ruby-1.8.1/internal/node/global_entry.h +10 -0
  32. data/ext/cached/ruby-1.8.1/internal/node/node_type_descrip.c +154 -0
  33. data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.c +5733 -0
  34. data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.h +69 -0
  35. data/ext/cached/ruby-1.8.1/internal/proc/block.h +31 -0
  36. data/ext/cached/ruby-1.8.1/internal/tag/tag.h +16 -0
  37. data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.c +39 -0
  38. data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.h +21 -0
  39. data/ext/cached/ruby-1.8.1/internal/vm/iseq/insns_info.inc +12 -0
  40. data/ext/cached/ruby-1.8.2/internal/binding/block.h +32 -0
  41. data/ext/cached/ruby-1.8.2/internal/method/method.h +19 -0
  42. data/ext/cached/ruby-1.8.2/internal/module/classpath.c +45 -0
  43. data/ext/cached/ruby-1.8.2/internal/module/classpath.h +17 -0
  44. data/ext/cached/ruby-1.8.2/internal/node/block.h +32 -0
  45. data/ext/cached/ruby-1.8.2/internal/node/global_entry.h +10 -0
  46. data/ext/cached/ruby-1.8.2/internal/node/node_type_descrip.c +154 -0
  47. data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.c +5733 -0
  48. data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.h +69 -0
  49. data/ext/cached/ruby-1.8.2/internal/proc/block.h +32 -0
  50. data/ext/cached/ruby-1.8.2/internal/tag/tag.h +16 -0
  51. data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.c +39 -0
  52. data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.h +21 -0
  53. data/ext/cached/ruby-1.8.2/internal/vm/iseq/insns_info.inc +12 -0
  54. data/ext/cached/ruby-1.8.3/internal/binding/block.h +32 -0
  55. data/ext/cached/ruby-1.8.3/internal/method/method.h +20 -0
  56. data/ext/cached/ruby-1.8.3/internal/module/classpath.c +45 -0
  57. data/ext/cached/ruby-1.8.3/internal/module/classpath.h +17 -0
  58. data/ext/cached/ruby-1.8.3/internal/node/block.h +32 -0
  59. data/ext/cached/ruby-1.8.3/internal/node/global_entry.h +10 -0
  60. data/ext/cached/ruby-1.8.3/internal/node/node_type_descrip.c +154 -0
  61. data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.c +5733 -0
  62. data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.h +69 -0
  63. data/ext/cached/ruby-1.8.3/internal/proc/block.h +32 -0
  64. data/ext/cached/ruby-1.8.3/internal/tag/tag.h +16 -0
  65. data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.c +39 -0
  66. data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.h +21 -0
  67. data/ext/cached/ruby-1.8.3/internal/vm/iseq/insns_info.inc +12 -0
  68. data/ext/cached/ruby-1.8.4/internal/binding/block.h +32 -0
  69. data/ext/cached/ruby-1.8.4/internal/method/method.h +20 -0
  70. data/ext/cached/ruby-1.8.4/internal/module/classpath.c +45 -0
  71. data/ext/cached/ruby-1.8.4/internal/module/classpath.h +17 -0
  72. data/ext/cached/ruby-1.8.4/internal/node/block.h +32 -0
  73. data/ext/cached/ruby-1.8.4/internal/node/global_entry.h +10 -0
  74. data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +154 -0
  75. data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +5733 -0
  76. data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.h +69 -0
  77. data/ext/cached/ruby-1.8.4/internal/proc/block.h +32 -0
  78. data/ext/cached/ruby-1.8.4/internal/tag/tag.h +16 -0
  79. data/ext/cached/ruby-1.8.4/internal/vm/instruction/insns_info.c +39 -0
  80. data/ext/cached/ruby-1.8.4/internal/vm/instruction/insns_info.h +21 -0
  81. data/ext/cached/ruby-1.8.4/internal/vm/iseq/insns_info.inc +12 -0
  82. data/ext/cached/ruby-1.8.5/internal/binding/block.h +32 -0
  83. data/ext/cached/ruby-1.8.5/internal/method/method.h +20 -0
  84. data/ext/cached/ruby-1.8.5/internal/module/classpath.c +45 -0
  85. data/ext/cached/ruby-1.8.5/internal/module/classpath.h +17 -0
  86. data/ext/cached/ruby-1.8.5/internal/node/block.h +32 -0
  87. data/ext/cached/ruby-1.8.5/internal/node/global_entry.h +10 -0
  88. data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +154 -0
  89. data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +5732 -0
  90. data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.h +67 -0
  91. data/ext/cached/ruby-1.8.5/internal/proc/block.h +32 -0
  92. data/ext/cached/ruby-1.8.5/internal/tag/tag.h +16 -0
  93. data/ext/cached/ruby-1.8.5/internal/vm/instruction/insns_info.c +39 -0
  94. data/ext/cached/ruby-1.8.5/internal/vm/instruction/insns_info.h +21 -0
  95. data/ext/cached/ruby-1.8.5/internal/vm/iseq/insns_info.inc +12 -0
  96. data/ext/cached/ruby-1.8.6/internal/binding/block.h +32 -0
  97. data/ext/cached/ruby-1.8.6/internal/method/method.h +20 -0
  98. data/ext/cached/ruby-1.8.6/internal/module/classpath.c +45 -0
  99. data/ext/cached/ruby-1.8.6/internal/module/classpath.h +17 -0
  100. data/ext/cached/ruby-1.8.6/internal/node/block.h +32 -0
  101. data/ext/cached/ruby-1.8.6/internal/node/global_entry.h +10 -0
  102. data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +154 -0
  103. data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +5732 -0
  104. data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.h +67 -0
  105. data/ext/cached/ruby-1.8.6/internal/proc/block.h +32 -0
  106. data/ext/cached/ruby-1.8.6/internal/tag/tag.h +16 -0
  107. data/ext/cached/ruby-1.8.6/internal/vm/instruction/insns_info.c +39 -0
  108. data/ext/cached/ruby-1.8.6/internal/vm/instruction/insns_info.h +21 -0
  109. data/ext/cached/ruby-1.8.6/internal/vm/iseq/insns_info.inc +12 -0
  110. data/ext/cached/ruby-1.8.7/internal/binding/block.h +32 -0
  111. data/ext/cached/ruby-1.8.7/internal/method/method.h +20 -0
  112. data/ext/cached/ruby-1.8.7/internal/module/classpath.c +45 -0
  113. data/ext/cached/ruby-1.8.7/internal/module/classpath.h +17 -0
  114. data/ext/cached/ruby-1.8.7/internal/node/block.h +32 -0
  115. data/ext/cached/ruby-1.8.7/internal/node/global_entry.h +10 -0
  116. data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +154 -0
  117. data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +5732 -0
  118. data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.h +67 -0
  119. data/ext/cached/ruby-1.8.7/internal/proc/block.h +32 -0
  120. data/ext/cached/ruby-1.8.7/internal/tag/tag.h +16 -0
  121. data/ext/cached/ruby-1.8.7/internal/vm/instruction/insns_info.c +39 -0
  122. data/ext/cached/ruby-1.8.7/internal/vm/instruction/insns_info.h +21 -0
  123. data/ext/cached/ruby-1.8.7/internal/vm/iseq/insns_info.inc +12 -0
  124. data/ext/cached/ruby-1.9.0/internal/binding/block.h +12 -0
  125. data/ext/cached/ruby-1.9.0/internal/method/method.h +20 -0
  126. data/ext/cached/ruby-1.9.0/internal/module/classpath.c +42 -0
  127. data/ext/cached/ruby-1.9.0/internal/module/classpath.h +17 -0
  128. data/ext/cached/ruby-1.9.0/internal/node/block.h +12 -0
  129. data/ext/cached/ruby-1.9.0/internal/node/global_entry.h +10 -0
  130. data/ext/cached/ruby-1.9.0/internal/node/node_type_descrip.c +149 -0
  131. data/ext/cached/ruby-1.9.0/internal/node/nodeinfo.c +5579 -0
  132. data/ext/cached/ruby-1.9.0/internal/node/nodeinfo.h +70 -0
  133. data/ext/cached/ruby-1.9.0/internal/proc/block.h +12 -0
  134. data/ext/cached/ruby-1.9.0/internal/tag/tag.h +6 -0
  135. data/ext/cached/ruby-1.9.0/internal/vm/instruction/insns_info.c +5936 -0
  136. data/ext/cached/ruby-1.9.0/internal/vm/instruction/insns_info.h +891 -0
  137. data/ext/cached/ruby-1.9.0/internal/vm/iseq/insns_info.inc +700 -0
  138. data/ext/cached/ruby-1.9.0/internal/yarv-headers/debug.h +36 -0
  139. data/ext/cached/ruby-1.9.0/internal/yarv-headers/dln.h +41 -0
  140. data/ext/cached/ruby-1.9.0/internal/yarv-headers/encdb.h +147 -0
  141. data/ext/cached/ruby-1.9.0/internal/yarv-headers/eval_intern.h +221 -0
  142. data/ext/cached/ruby-1.9.0/internal/yarv-headers/gc.h +75 -0
  143. data/ext/cached/ruby-1.9.0/internal/yarv-headers/id.h +83 -0
  144. data/ext/cached/ruby-1.9.0/internal/yarv-headers/iseq.h +94 -0
  145. data/ext/cached/ruby-1.9.0/internal/yarv-headers/node.h +516 -0
  146. data/ext/cached/ruby-1.9.0/internal/yarv-headers/parse.h +303 -0
  147. data/ext/cached/ruby-1.9.0/internal/yarv-headers/regenc.h +207 -0
  148. data/ext/cached/ruby-1.9.0/internal/yarv-headers/regint.h +842 -0
  149. data/ext/cached/ruby-1.9.0/internal/yarv-headers/regparse.h +351 -0
  150. data/ext/cached/ruby-1.9.0/internal/yarv-headers/revision.h +1 -0
  151. data/ext/cached/ruby-1.9.0/internal/yarv-headers/thread_pthread.h +24 -0
  152. data/ext/cached/ruby-1.9.0/internal/yarv-headers/thread_win32.h +33 -0
  153. data/ext/cached/ruby-1.9.0/internal/yarv-headers/transcode_data.h +99 -0
  154. data/ext/cached/ruby-1.9.0/internal/yarv-headers/transdb.h +67 -0
  155. data/ext/cached/ruby-1.9.0/internal/yarv-headers/version.h +57 -0
  156. data/ext/cached/ruby-1.9.0/internal/yarv-headers/vm_core.h +663 -0
  157. data/ext/cached/ruby-1.9.0/internal/yarv-headers/vm_exec.h +187 -0
  158. data/ext/cached/ruby-1.9.0/internal/yarv-headers/vm_insnhelper.h +191 -0
  159. data/ext/cached/ruby-1.9.0/internal/yarv-headers/vm_opts.h +51 -0
  160. data/ext/cached/ruby-1.9.1/internal/binding/block.h +12 -0
  161. data/ext/cached/ruby-1.9.1/internal/method/method.h +20 -0
  162. data/ext/cached/ruby-1.9.1/internal/module/classpath.c +42 -0
  163. data/ext/cached/ruby-1.9.1/internal/module/classpath.h +17 -0
  164. data/ext/cached/ruby-1.9.1/internal/node/block.h +12 -0
  165. data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +10 -0
  166. data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +149 -0
  167. data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +5579 -0
  168. data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.h +70 -0
  169. data/ext/cached/ruby-1.9.1/internal/proc/block.h +12 -0
  170. data/ext/cached/ruby-1.9.1/internal/tag/tag.h +6 -0
  171. data/ext/cached/ruby-1.9.1/internal/vm/instruction/insns_info.c +5936 -0
  172. data/ext/cached/ruby-1.9.1/internal/vm/instruction/insns_info.h +891 -0
  173. data/ext/cached/ruby-1.9.1/internal/vm/iseq/insns_info.inc +700 -0
  174. data/ext/cached/ruby-1.9.1/internal/yarv-headers/debug.h +36 -0
  175. data/ext/cached/ruby-1.9.1/internal/yarv-headers/dln.h +41 -0
  176. data/ext/cached/ruby-1.9.1/internal/yarv-headers/encdb.h +147 -0
  177. data/ext/cached/ruby-1.9.1/internal/yarv-headers/eval_intern.h +209 -0
  178. data/ext/cached/ruby-1.9.1/internal/yarv-headers/gc.h +75 -0
  179. data/ext/cached/ruby-1.9.1/internal/yarv-headers/id.h +184 -0
  180. data/ext/cached/ruby-1.9.1/internal/yarv-headers/iseq.h +94 -0
  181. data/ext/cached/ruby-1.9.1/internal/yarv-headers/node.h +516 -0
  182. data/ext/cached/ruby-1.9.1/internal/yarv-headers/parse.h +303 -0
  183. data/ext/cached/ruby-1.9.1/internal/yarv-headers/regenc.h +207 -0
  184. data/ext/cached/ruby-1.9.1/internal/yarv-headers/regint.h +842 -0
  185. data/ext/cached/ruby-1.9.1/internal/yarv-headers/regparse.h +351 -0
  186. data/ext/cached/ruby-1.9.1/internal/yarv-headers/revision.h +1 -0
  187. data/ext/cached/ruby-1.9.1/internal/yarv-headers/thread_pthread.h +24 -0
  188. data/ext/cached/ruby-1.9.1/internal/yarv-headers/thread_win32.h +33 -0
  189. data/ext/cached/ruby-1.9.1/internal/yarv-headers/transcode_data.h +99 -0
  190. data/ext/cached/ruby-1.9.1/internal/yarv-headers/transdb.h +85 -0
  191. data/ext/cached/ruby-1.9.1/internal/yarv-headers/version.h +60 -0
  192. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_core.h +655 -0
  193. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_exec.h +187 -0
  194. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_insnhelper.h +194 -0
  195. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_opts.h +51 -0
  196. data/ext/internal/binding/binding.c +45 -0
  197. data/ext/internal/binding/block.h.rpp +44 -0
  198. data/ext/internal/binding/extconf.rb +6 -0
  199. data/ext/internal/method/extconf.rb +8 -0
  200. data/ext/internal/method/method.c +269 -0
  201. data/ext/internal/method/method.h.rpp +58 -0
  202. data/ext/internal/module/classpath.c.rpp +29 -0
  203. data/ext/internal/module/classpath.h.rpp +36 -0
  204. data/ext/internal/module/extconf.rb +11 -0
  205. data/ext/internal/module/module.c +797 -0
  206. data/ext/internal/module/module.h +7 -0
  207. data/ext/internal/node/block.h.rpp +44 -0
  208. data/ext/internal/node/builtins.h +41 -0
  209. data/ext/internal/node/extconf.rb +66 -0
  210. data/ext/internal/node/global_entry.h.rpp +26 -0
  211. data/ext/internal/node/node.c +1147 -0
  212. data/ext/internal/node/node_type_descrip.c.rpp +72 -0
  213. data/ext/internal/node/node_type_descrip.h +17 -0
  214. data/ext/internal/node/node_type_descrip.rb +39 -0
  215. data/ext/internal/node/nodeinfo.c.rpp +587 -0
  216. data/ext/internal/node/nodeinfo.h.rpp +30 -0
  217. data/ext/internal/node/nodes.rb +78 -0
  218. data/ext/internal/node/read_node_h.rb +34 -0
  219. data/ext/internal/node/ruby_internal_node.h +31 -0
  220. data/ext/internal/noex/extconf.rb +6 -0
  221. data/ext/internal/noex/noex.c +44 -0
  222. data/ext/internal/object/extconf.rb +4 -0
  223. data/ext/internal/object/object.c +75 -0
  224. data/ext/internal/proc/block.h.rpp +44 -0
  225. data/ext/internal/proc/extconf.rb +9 -0
  226. data/ext/internal/proc/proc.c +331 -0
  227. data/ext/internal/tag/extconf.rb +3 -0
  228. data/ext/internal/tag/tag.c +17 -0
  229. data/ext/internal/tag/tag.h.rpp +22 -0
  230. data/ext/internal/thread/extconf.rb +3 -0
  231. data/ext/internal/thread/thread.c +107 -0
  232. data/ext/internal/vm/constants/constants.c +33 -0
  233. data/ext/internal/vm/constants/extconf.rb +3 -0
  234. data/ext/internal/vm/control_frame/control_frame.c +185 -0
  235. data/ext/internal/vm/control_frame/control_frame.h +18 -0
  236. data/ext/internal/vm/control_frame/extconf.rb +3 -0
  237. data/ext/internal/vm/extconf.rb +3 -0
  238. data/ext/internal/vm/inline_cache/extconf.rb +6 -0
  239. data/ext/internal/vm/inline_cache/inline_cache.c +79 -0
  240. data/ext/internal/vm/instruction/extconf.rb +6 -0
  241. data/ext/internal/vm/instruction/insns_info.c.rpp +213 -0
  242. data/ext/internal/vm/instruction/insns_info.h.rpp +53 -0
  243. data/ext/internal/vm/instruction/instruction.c +78 -0
  244. data/ext/internal/vm/instruction/instruction.h +10 -0
  245. data/ext/internal/vm/iseq/extconf.rb +7 -0
  246. data/ext/internal/vm/iseq/insns_info.inc.rpp +30 -0
  247. data/ext/internal/vm/iseq/internal_iseq.h +9 -0
  248. data/ext/internal/vm/iseq/iseq.c +555 -0
  249. data/ext/internal/vm/vm.c +55 -0
  250. data/ext/mkmf-ruby-internal.rb +111 -0
  251. data/ext/ruby_source_dir.rb +24 -0
  252. data/ext/rubypp.rb +97 -0
  253. data/generate_rdoc.rb +33 -0
  254. data/lib/internal/binding.rb +1 -0
  255. data/lib/internal/classtree.rb +55 -0
  256. data/lib/internal/debug.rb +16 -0
  257. data/lib/internal/method.rb +1 -0
  258. data/lib/internal/method/as_code.rb +33 -0
  259. data/lib/internal/method/as_expression.rb +34 -0
  260. data/lib/internal/method/signature.rb +442 -0
  261. data/lib/internal/module.rb +1 -0
  262. data/lib/internal/module/as_code.rb +45 -0
  263. data/lib/internal/node.rb +3 -0
  264. data/lib/internal/node/as_code.rb +233 -0
  265. data/lib/internal/node/as_expression.rb +619 -0
  266. data/lib/internal/node/dump.rb +53 -0
  267. data/lib/internal/node/pp.rb +72 -0
  268. data/lib/internal/node/to_a.rb +52 -0
  269. data/lib/internal/noex.rb +1 -0
  270. data/lib/internal/obfusc.rb +57 -0
  271. data/lib/internal/object.rb +1 -0
  272. data/lib/internal/object/as_code.rb +10 -0
  273. data/lib/internal/proc.rb +1 -0
  274. data/lib/internal/proc/as_code.rb +21 -0
  275. data/lib/internal/proc/as_expression.rb +14 -0
  276. data/lib/internal/proc/signature.rb +184 -0
  277. data/lib/internal/tag.rb +1 -0
  278. data/lib/internal/thread.rb +1 -0
  279. data/lib/internal/vm.rb +1 -0
  280. data/lib/internal/vm/bytedecoder.rb +866 -0
  281. data/lib/internal/vm/constants.rb +1 -0
  282. data/lib/internal/vm/control_frame.rb +1 -0
  283. data/lib/internal/vm/inline_cache.rb +1 -0
  284. data/lib/internal/vm/instruction.rb +1 -0
  285. data/lib/internal/vm/iseq.rb +1 -0
  286. data/lib/internal/vm/iseq/as_code.rb +27 -0
  287. data/lib/internal/vm/iseq/as_expression.rb +26 -0
  288. data/metaconfig +19 -0
  289. data/post-config.rb +1 -0
  290. data/post-install.rb +4 -0
  291. data/post-setup.rb +7 -0
  292. data/pre-config.rb +96 -0
  293. data/pre-install.rb +13 -0
  294. data/pre-setup.rb +8 -0
  295. data/run_tests.rb +26 -0
  296. data/setup.rb +1599 -0
  297. data/test/expression_samples.rb +160 -0
  298. data/test/node_samples.rb +122 -0
  299. data/test/test_as_code.rb +261 -0
  300. data/test/test_as_expression.rb +229 -0
  301. data/test/test_dump_class.rb +187 -0
  302. data/test/test_dump_method.rb +144 -0
  303. data/test/test_dump_proc.rb +118 -0
  304. data/test/test_helpers.rb +61 -0
  305. data/test/test_method.rb +72 -0
  306. data/test/test_methodsig.rb +267 -0
  307. data/test/test_module.rb +49 -0
  308. data/test/test_node.rb +77 -0
  309. data/test/test_proc.rb +47 -0
  310. metadata +377 -0
@@ -0,0 +1,118 @@
1
+ require 'test/unit'
2
+ require 'rbconfig'
3
+
4
+ dir = File.dirname(__FILE__)
5
+ $:.unshift(dir) if not $:.include?(dir)
6
+ $:.unshift("#{dir}/../lib") if not $:.include?("#{dir}/../lib")
7
+ $:.unshift("#{dir}/../ext") if not $:.include?("#{dir}/../ext")
8
+
9
+ require 'internal/proc'
10
+
11
+ require 'node_samples'
12
+
13
+ $stdout.sync = true
14
+ $stderr.sync = true
15
+
16
+ class TC_Dump_Proc < Test::Unit::TestCase
17
+ module Foo
18
+ def foo(n=1)
19
+ # A fancy way to return 42
20
+ if false then
21
+ answer = 0
22
+ else
23
+ answer = 0
24
+ (1..42).each do |i|
25
+ answer += (i / i)
26
+ end
27
+ end
28
+ return n * answer
29
+ end
30
+ end
31
+
32
+ include Foo
33
+
34
+ Tmp_Foo = nil
35
+
36
+ # For the cvar proc test
37
+ @@a = 42
38
+
39
+ class TestClassBase
40
+ # for testing super()
41
+ def foo
42
+ return 42
43
+ end
44
+ end
45
+
46
+ class TestClass < TestClassBase
47
+ include Foo
48
+ FOO = 1
49
+ @foo = 2
50
+ @@foo = 3
51
+
52
+ # Make sure we have enough instance variables to exceed
53
+ # ROBJECT_EMBED_LEN_MAX
54
+ @bar1 = 1
55
+ @bar2 = 2
56
+ @bar3 = 3
57
+
58
+ class << self
59
+ FOO = 4
60
+ @foo = 5
61
+ end
62
+
63
+ # for testing cvar
64
+ # (can't be in base class due to change in 1.9 of class var lookup)
65
+ @@a = 42
66
+ end
67
+
68
+ @@test_class = TestClass
69
+
70
+ def initialize(test_method_name)
71
+ # TODO: This seems to be the only way to get tests defined with #
72
+ # define_method to run on 1.8.1 and earlier.
73
+ catch(:invalid_test) { super(test_method_name) }
74
+ end
75
+
76
+ extend Test::Unit::Assertions
77
+
78
+ Proc_Node_Samples.each do |node_name, sample_code|
79
+ p = proc {
80
+ p_orig = eval <<-END_DEF
81
+ proc {
82
+ #{sample_code}
83
+ }
84
+ END_DEF
85
+
86
+ #puts "dumping"
87
+ d = Marshal.dump(p_orig)
88
+ #puts "loading"
89
+ u = Marshal.load(d)
90
+ p_new = u.bind(binding)
91
+
92
+ orig_result = nil
93
+ orig_exc = nil
94
+ begin
95
+ orig_result = p_orig.call
96
+ rescue Exception => exc
97
+ orig_exc = exc
98
+ end
99
+
100
+ dup_result = nil
101
+ dup_exc = nil
102
+ begin
103
+ dup_result = p_new.call
104
+ rescue Exception => exc
105
+ dup_exc = exc
106
+ end
107
+
108
+ assert_equal orig_exc, dup_exc
109
+ assert_equal orig_result, dup_result
110
+ }
111
+ define_method "test_dump_proc_#{node_name}", p
112
+ end
113
+ end
114
+
115
+ if __FILE__ == $0 then
116
+ exit Test::Unit::AutoRunner.run
117
+ end
118
+
@@ -0,0 +1,61 @@
1
+ $mini_unit_exit_code = 0
2
+
3
+ def disable_mini_unit_auto_run
4
+ MiniTest::Unit.class_eval do
5
+ alias :run_ :run
6
+ def run(*args)
7
+ return $mini_unit_exit_code
8
+ end
9
+ end
10
+ end
11
+
12
+ def run_all_tests_with_mini_unit
13
+ begin
14
+ test = MiniTest::Unit.new
15
+ args = ARGV.dup
16
+ args << '-v'
17
+ $mini_unit_exit_code = test.run(args)
18
+ exit($mini_unit_exit_code)
19
+ ensure
20
+ disable_mini_unit_auto_run
21
+ end
22
+ end
23
+
24
+ def run_all_tests_with_test_unit
25
+ tests = []
26
+ ObjectSpace.each_object(Class) do |o|
27
+ if o < Test::Unit::TestCase then
28
+ tests << o
29
+ end
30
+ end
31
+
32
+ suite = Test::Unit::TestSuite.new("RubyInternal")
33
+ tests.each do |test|
34
+ test.suite.tests.each do |testcase|
35
+ suite << testcase
36
+ end
37
+ end
38
+
39
+ require 'test/unit/ui/console/testrunner'
40
+
41
+ verbose = nil
42
+ begin
43
+ verbose = Test::Unit::UI.const_get(:VERBOSE)
44
+ rescue NameError
45
+ verbose = Test::Unit::UI::Console::TestRunner.const_get(:VERBOSE)
46
+ end
47
+
48
+ result = Test::Unit::UI::Console::TestRunner.run(
49
+ suite,
50
+ verbose)
51
+ exit(result.error_count + result.failure_count)
52
+ end
53
+
54
+ def run_all_tests
55
+ if defined?(MiniTest) then
56
+ run_all_tests_with_mini_unit
57
+ else
58
+ run_all_tests_with_test_unit
59
+ end
60
+ end
61
+
@@ -0,0 +1,72 @@
1
+ require 'test/unit'
2
+ require 'rbconfig'
3
+
4
+ dir = File.dirname(__FILE__)
5
+ $:.unshift(dir) if not $:.include?(dir)
6
+ $:.unshift("#{dir}/../lib") if not $:.include?("#{dir}/../lib")
7
+ $:.unshift("#{dir}/../ext") if not $:.include?("#{dir}/../ext")
8
+
9
+ require 'internal/method'
10
+
11
+ require "node_samples"
12
+
13
+ $stdout.sync = true
14
+ $stderr.sync = true
15
+
16
+ class TC_Method < Test::Unit::TestCase
17
+ module Foo
18
+ def foo(n=1)
19
+ # A fancy way to return 42
20
+ if false then
21
+ answer = 0
22
+ else
23
+ answer = 0
24
+ (1..42).each do |i|
25
+ answer += (i / i)
26
+ end
27
+ end
28
+ return n * answer
29
+ end
30
+ end
31
+
32
+ class MarshalMethodHelper
33
+ include Foo
34
+ end
35
+
36
+ include Foo
37
+
38
+ def test_method_node
39
+ m = method(:foo)
40
+ n = m.body
41
+ if defined?(RubyVM::InstructionSequence) then
42
+ # YARV
43
+ assert_equal Node::METHOD, n.class
44
+ else
45
+ # pre-YARV
46
+ assert_equal Node::SCOPE, n.class
47
+ end
48
+ end
49
+
50
+ def test_marshal_method
51
+ o = MarshalMethodHelper.new
52
+ m = o.method(:foo)
53
+ d = Marshal.dump(m)
54
+ m2 = Marshal.load(d)
55
+ assert_equal m.call, m2.call
56
+ end
57
+
58
+ def test_marshal_unbound_method
59
+ o = MarshalMethodHelper.new
60
+ u = o.method(:foo).unbind
61
+ d = Marshal.dump(u)
62
+ u2 = Marshal.load(d)
63
+ m = u.bind(o)
64
+ m2 = u.bind(o)
65
+ assert_equal m.call, m2.call
66
+ end
67
+ end
68
+
69
+ if __FILE__ == $0 then
70
+ exit Test::Unit::AutoRunner.run
71
+ end
72
+
@@ -0,0 +1,267 @@
1
+ require 'test/unit'
2
+
3
+ dir = File.dirname(__FILE__)
4
+ $:.unshift(dir) if not $:.include?(dir)
5
+ $:.unshift("#{dir}/../lib") if not $:.include?("#{dir}/../lib")
6
+ $:.unshift("#{dir}/../ext") if not $:.include?("#{dir}/../ext")
7
+
8
+ require 'internal/method/signature'
9
+
10
+ $stdout.sync = true
11
+ $stderr.sync = true
12
+
13
+ class TC_Methodsig < Test::Unit::TestCase
14
+ def check_args(expected_arg_info, sig)
15
+ expected_arg_info.each do |name, value|
16
+ assert_equal name, sig.args[name].name
17
+ assert_equal value, sig.args[name].to_s
18
+ if value =~ /=/ then
19
+ default = value.sub(/.*=/, '')
20
+ assert_equal default, sig.args[name].default
21
+ assert_equal true, sig.args[name].optional?
22
+ assert_equal false, sig.args[name].required?
23
+ assert_equal false, sig.args[name].rest?
24
+ assert_equal false, sig.args[name].block?
25
+ elsif ?* == value[0] then
26
+ assert_equal nil, sig.args[name].default
27
+ assert_equal true, sig.args[name].optional?
28
+ assert_equal false, sig.args[name].required?
29
+ assert_equal true, sig.args[name].rest?
30
+ assert_equal false, sig.args[name].block?
31
+ elsif ?& == value[0] then
32
+ assert_equal nil, sig.args[name].default
33
+ assert_equal true, sig.args[name].optional?
34
+ assert_equal false, sig.args[name].required?
35
+ assert_equal false, sig.args[name].rest?
36
+ assert_equal true, sig.args[name].block?
37
+ else
38
+ assert_equal nil, sig.args[name].default
39
+ assert_equal false, sig.args[name].optional?
40
+ assert_equal true, sig.args[name].required?
41
+ assert_equal false, sig.args[name].rest?
42
+ assert_equal false, sig.args[name].block?
43
+ end
44
+ end
45
+ assert_equal expected_arg_info.size, sig.args.size
46
+ end
47
+
48
+ def no_args_no_parens
49
+ end
50
+
51
+ def test_no_args_no_parens
52
+ name = :no_args_no_parens
53
+ sig = method(name).signature
54
+ assert_equal self.class, sig.origin_class
55
+ assert_equal name.to_s, sig.name
56
+ assert_equal [], sig.arg_names
57
+ check_args({}, sig)
58
+ assert_equal "#{self.class.name}##{name}()", sig.to_s
59
+ end
60
+
61
+ def no_args_with_parens()
62
+ end
63
+
64
+ def test_no_args_with_parens
65
+ name = :no_args_with_parens
66
+ sig = method(name).signature
67
+ assert_equal self.class, sig.origin_class
68
+ assert_equal name.to_s, sig.name
69
+ assert_equal [], sig.arg_names
70
+ check_args({}, sig)
71
+ assert_equal "#{self.class.name}##{name}()", sig.to_s
72
+ end
73
+
74
+ def one_arg(a)
75
+ end
76
+
77
+ def test_one_arg
78
+ name = :one_arg
79
+ sig = method(name).signature
80
+ assert_equal self.class, sig.origin_class
81
+ assert_equal name.to_s, sig.name
82
+ assert_equal [:a], sig.arg_names
83
+ check_args({:a => "a"}, sig)
84
+ assert_equal "#{self.class.name}##{name}(a)", sig.to_s
85
+ end
86
+
87
+ def two_args(a, b)
88
+ end
89
+
90
+ def test_two_args
91
+ name = :two_args
92
+ sig = method(name).signature
93
+ assert_equal self.class, sig.origin_class
94
+ assert_equal name.to_s, sig.name
95
+ assert_equal [:a, :b], sig.arg_names
96
+ check_args({:a=>"a", :b=>"b"}, sig)
97
+ assert_equal "#{self.class.name}##{name}(a, b)", sig.to_s
98
+ end
99
+
100
+ def two_args_with_locals(a, b)
101
+ x = 1
102
+ y = 2
103
+ end
104
+
105
+ def test_two_args_with_locals
106
+ name = :two_args_with_locals
107
+ sig = method(name).signature
108
+ assert_equal self.class, sig.origin_class
109
+ assert_equal name.to_s, sig.name
110
+ assert_equal [:a, :b], sig.arg_names
111
+ check_args({:a=>"a", :b=>"b"}, sig)
112
+ assert_equal "#{self.class.name}##{name}(a, b)", sig.to_s
113
+ end
114
+
115
+ def three_args(a, b, c)
116
+ end
117
+
118
+ def test_three_args
119
+ name = :three_args
120
+ sig = method(name).signature
121
+ assert_equal self.class, sig.origin_class
122
+ assert_equal name.to_s, sig.name
123
+ assert_equal [:a, :b, :c], sig.arg_names
124
+ check_args({:a=>"a", :b=>"b", :c=>"c"}, sig)
125
+ assert_equal "#{self.class.name}##{name}(a, b, c)", sig.to_s
126
+ end
127
+
128
+ def block_arg(&b)
129
+ end
130
+
131
+ def test_block_arg
132
+ name = :block_arg
133
+ sig = method(name).signature
134
+ assert_equal self.class, sig.origin_class
135
+ assert_equal name.to_s, sig.name
136
+ assert_equal [:b], sig.arg_names
137
+ check_args({:b=>"&b"}, sig)
138
+ assert_equal "#{self.class.name}##{name}(&b)", sig.to_s
139
+ end
140
+
141
+ def rest_arg(*r)
142
+ end
143
+
144
+ def test_rest_arg
145
+ name = :rest_arg
146
+ sig = method(name).signature
147
+ assert_equal self.class, sig.origin_class
148
+ assert_equal name.to_s, sig.name
149
+ assert_equal [:r], sig.arg_names
150
+ check_args({:r=>"*r"}, sig)
151
+ assert_equal "#{self.class.name}##{name}(*r)", sig.to_s
152
+ end
153
+
154
+ def block_and_rest_arg(*r, &b)
155
+ end
156
+
157
+ def test_block_and_rest_arg
158
+ name = :block_and_rest_arg
159
+ sig = method(name).signature
160
+ assert_equal self.class, sig.origin_class
161
+ assert_equal name.to_s, sig.name
162
+ assert_equal [:r, :b], sig.arg_names
163
+ check_args({:r=>"*r", :b=>"&b"}, sig)
164
+ assert_equal "#{self.class.name}##{name}(*r, &b)", sig.to_s
165
+ end
166
+
167
+ def default_arg(a = 1)
168
+ end
169
+
170
+ def test_default_arg
171
+ name = :default_arg
172
+ sig = method(name).signature
173
+ assert_equal self.class, sig.origin_class
174
+ assert_equal name.to_s, sig.name
175
+ assert_equal [:a], sig.arg_names
176
+ check_args({:a=>"a=1"}, sig)
177
+ assert_equal "#{self.class.name}##{name}(a=1)", sig.to_s
178
+ end
179
+
180
+ def default_and_nondefault_arg(a, b = 42)
181
+ end
182
+
183
+ def test_default_and_nondefault_arg
184
+ name = :default_and_nondefault_arg
185
+ sig = method(name).signature
186
+ assert_equal self.class, sig.origin_class
187
+ assert_equal name.to_s, sig.name
188
+ assert_equal [:a, :b], sig.arg_names
189
+ check_args({:a=>"a", :b=>"b=42"}, sig)
190
+ assert_equal "#{self.class.name}##{name}(a, b=42)", sig.to_s
191
+ end
192
+
193
+ def default_and_rest(a = 42, *r)
194
+ end
195
+
196
+ def test_default_and_rest
197
+ name = :default_and_rest
198
+ sig = method(name).signature
199
+ assert_equal self.class, sig.origin_class
200
+ assert_equal name.to_s, sig.name
201
+ assert_equal [:a, :r], sig.arg_names
202
+ check_args({:a=>"a=42", :r=>"*r"}, sig)
203
+ assert_equal "#{self.class.name}##{name}(a=42, *r)", sig.to_s
204
+ end
205
+
206
+ def default_and_rest_and_block(a = 42, *r, &b)
207
+ end
208
+
209
+ def test_default_and_rest_and_block
210
+ name = :default_and_rest_and_block
211
+ sig = method(name).signature
212
+ assert_equal self.class, sig.origin_class
213
+ assert_equal name.to_s, sig.name
214
+ assert_equal [:a, :r, :b], sig.arg_names
215
+ check_args({:a=>"a=42", :r=>"*r", :b=>"&b"}, sig)
216
+ assert_equal "#{self.class.name}##{name}(a=42, *r, &b)", sig.to_s
217
+ end
218
+
219
+ def nondefault_and_default_and_rest_and_block(a, b = 42, *r, &block)
220
+ end
221
+
222
+ def test_nondefault_and_default_and_rest_and_block
223
+ name = :nondefault_and_default_and_rest_and_block
224
+ sig = method(name).signature
225
+ assert_equal self.class, sig.origin_class
226
+ assert_equal name.to_s, sig.name
227
+ assert_equal [:a, :b, :r, :block], sig.arg_names
228
+ check_args({:a=>"a", :b=>"b=42", :r=>"*r", :block=>"&block"}, sig)
229
+ assert_equal "#{self.class.name}##{name}(a, b=42, *r, &block)", sig.to_s
230
+ end
231
+
232
+ def nondefault_and_default_and_rest_and_block_with_locals(a, b = 42, *r, &block)
233
+ x = 1
234
+ y = 2
235
+ end
236
+
237
+ def test_nondefault_and_default_and_rest_and_block_with_locals
238
+ name = :nondefault_and_default_and_rest_and_block_with_locals
239
+ sig = method(name).signature
240
+ assert_equal self.class, sig.origin_class
241
+ assert_equal name.to_s, sig.name
242
+ assert_equal [:a, :b, :r, :block], sig.arg_names
243
+ check_args({:a=>"a", :b=>"b=42", :r=>"*r", :block=>"&block"}, sig)
244
+ assert_equal "#{self.class.name}##{name}(a, b=42, *r, &block)", sig.to_s
245
+ end
246
+
247
+ def three_default_and_rest_and_block_with_locals(a = 42, b = 43, c = 44, *r, &block)
248
+ x = 1
249
+ y = 2
250
+ end
251
+
252
+ def test_three_default_and_rest_and_block_with_locals
253
+ name = :three_default_and_rest_and_block_with_locals
254
+ sig = method(name).signature
255
+ assert_equal self.class, sig.origin_class
256
+ assert_equal name.to_s, sig.name
257
+ assert_equal [:a, :b, :c, :r, :block], sig.arg_names
258
+ check_args({:a=>"a=42", :b=>"b=43", :c=>"c=44", :r=>"*r", :block=>"&block"}, sig)
259
+ assert_equal "#{self.class.name}##{name}(a=42, b=43, c=44, *r, &block)", sig.to_s
260
+ end
261
+ end
262
+
263
+ if __FILE__ == $0 then
264
+ require 'test_helpers'
265
+ run_all_tests()
266
+ end
267
+