rhodes 3.1.1 → 3.2.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2987) hide show
  1. data/CHANGELOG +5 -2
  2. data/doc/alert-api.txt +51 -0
  3. data/doc/build.txt +52 -43
  4. data/doc/configuration.txt +9 -5
  5. data/doc/connect-to-web-services.txt +4 -4
  6. data/doc/device-caps.txt +80 -28
  7. data/doc/extensions.txt +1 -1
  8. data/doc/install.txt +1 -1
  9. data/doc/introduction.txt +1 -1
  10. data/doc/rhodes-api.txt +62 -62
  11. data/doc/rhom.txt +36 -23
  12. data/doc/{rhodes-api/ringtonemanager-api.txt → ringtonemanager-api.txt} +0 -0
  13. data/doc/scanner.txt +507 -0
  14. data/doc/simulator.txt +6 -1
  15. data/doc/synchronization.txt +32 -27
  16. data/doc/{rhodes-api/timer-api.txt → timer-api.txt} +1 -1
  17. data/doc/tutorial.txt +8 -8
  18. data/installer/OLD-README.html +81 -0
  19. data/installer/README.html +6 -4
  20. data/installer/RHOSTUDIO-LICENSE.txt +675 -0
  21. data/installer/rhostudio.nsi +147 -20
  22. data/lib/build/compileRB/compileRB.rb +5 -2
  23. data/lib/build/jake.rb +3 -2
  24. data/lib/extensions/barcode/ext/barcode/platform/android/Rakefile +1 -1
  25. data/lib/extensions/barcode/ext/barcode/platform/bb/Rakefile +1 -1
  26. data/lib/extensions/barcode/ext/barcode/shared/ruby/barcode_wrap.c +391 -111
  27. data/lib/extensions/digest-md5/ext/Rakefile +1 -1
  28. data/lib/extensions/digest-sha1/ext/Rakefile +1 -1
  29. data/lib/extensions/digest/ext/Rakefile +1 -1
  30. data/lib/extensions/fcntl/ext/Rakefile +1 -1
  31. data/lib/extensions/mspec/mspec/expectations/expectations.rb +4 -4
  32. data/lib/extensions/mspec/mspec/expectations/should.rb +9 -8
  33. data/lib/extensions/mspec/mspec/guards.rb +3 -0
  34. data/lib/extensions/mspec/mspec/guards/conflict.rb +7 -2
  35. data/lib/extensions/mspec/mspec/guards/endian.rb +7 -10
  36. data/lib/extensions/mspec/mspec/guards/feature.rb +47 -0
  37. data/lib/extensions/mspec/mspec/guards/guard.rb +18 -13
  38. data/lib/extensions/mspec/mspec/guards/platform.rb +4 -0
  39. data/lib/extensions/mspec/mspec/guards/specified.rb +66 -0
  40. data/lib/extensions/mspec/mspec/guards/user.rb +17 -0
  41. data/lib/extensions/mspec/mspec/helpers.rb +6 -4
  42. data/lib/extensions/mspec/mspec/helpers/const_lookup.rb +2 -1
  43. data/lib/extensions/mspec/mspec/helpers/datetime.rb +30 -0
  44. data/lib/extensions/mspec/mspec/helpers/ducktype.rb +4 -4
  45. data/lib/extensions/mspec/mspec/helpers/encode.rb +21 -0
  46. data/lib/extensions/mspec/mspec/helpers/environment.rb +13 -9
  47. data/lib/extensions/mspec/mspec/helpers/fixture.rb +2 -1
  48. data/lib/extensions/mspec/mspec/helpers/flunk.rb +1 -1
  49. data/lib/extensions/mspec/mspec/helpers/fmode.rb +15 -0
  50. data/lib/extensions/mspec/mspec/helpers/io.rb +21 -2
  51. data/lib/extensions/mspec/mspec/helpers/language_version.rb +13 -3
  52. data/lib/extensions/mspec/mspec/helpers/numeric.rb +89 -0
  53. data/lib/extensions/mspec/mspec/helpers/ruby_exe.rb +138 -123
  54. data/lib/extensions/mspec/mspec/helpers/singleton_class.rb +7 -0
  55. data/lib/extensions/mspec/mspec/helpers/stasy.rb +33 -0
  56. data/lib/extensions/mspec/mspec/helpers/tmp.rb +34 -26
  57. data/lib/extensions/mspec/mspec/matchers.rb +9 -0
  58. data/lib/extensions/mspec/mspec/matchers/base.rb +14 -14
  59. data/lib/extensions/mspec/mspec/matchers/be_computed_by.rb +36 -0
  60. data/lib/extensions/mspec/mspec/matchers/be_computed_by_function.rb +35 -0
  61. data/lib/extensions/mspec/mspec/matchers/be_valid_dns_name.rb +24 -0
  62. data/lib/extensions/mspec/mspec/matchers/equal_utf16.rb +5 -7
  63. data/lib/extensions/mspec/mspec/matchers/have_class_variable.rb +12 -0
  64. data/lib/extensions/mspec/mspec/matchers/have_constant.rb +6 -24
  65. data/lib/extensions/mspec/mspec/matchers/have_data.rb +49 -0
  66. data/lib/extensions/mspec/mspec/matchers/have_instance_method.rb +1 -1
  67. data/lib/extensions/mspec/mspec/matchers/have_instance_variable.rb +12 -0
  68. data/lib/extensions/mspec/mspec/matchers/have_method.rb +1 -1
  69. data/lib/extensions/mspec/mspec/matchers/have_private_instance_method.rb +1 -1
  70. data/lib/extensions/mspec/mspec/matchers/have_private_method.rb +24 -0
  71. data/lib/extensions/mspec/mspec/matchers/have_protected_instance_method.rb +24 -0
  72. data/lib/extensions/mspec/mspec/matchers/have_public_instance_method.rb +1 -1
  73. data/lib/extensions/mspec/mspec/matchers/have_singleton_method.rb +24 -0
  74. data/lib/extensions/mspec/mspec/matchers/output_to_fd.rb +71 -71
  75. data/lib/extensions/mspec/mspec/matchers/raise_error.rb +4 -3
  76. data/lib/extensions/mspec/mspec/matchers/stringsymboladapter.rb +1 -1
  77. data/lib/extensions/mspec/mspec/matchers/variable.rb +28 -0
  78. data/lib/extensions/mspec/mspec/mocks/mock.rb +102 -60
  79. data/lib/extensions/mspec/mspec/mocks/object.rb +5 -1
  80. data/lib/extensions/mspec/mspec/mocks/proxy.rb +41 -6
  81. data/lib/extensions/mspec/mspec/runner.rb +1 -0
  82. data/lib/extensions/mspec/mspec/runner/actions/debug.rb +2 -0
  83. data/lib/extensions/mspec/mspec/runner/context.rb +58 -13
  84. data/lib/extensions/mspec/mspec/runner/exception.rb +7 -6
  85. data/lib/extensions/mspec/mspec/runner/formatters.rb +1 -0
  86. data/lib/extensions/mspec/mspec/runner/formatters/dotted.rb +15 -3
  87. data/lib/extensions/mspec/mspec/runner/formatters/profile.rb +70 -0
  88. data/lib/extensions/mspec/mspec/runner/mspec.rb +32 -19
  89. data/lib/extensions/mspec/mspec/runner/object.rb +4 -0
  90. data/lib/extensions/mspec/mspec/runner/shared.rb +1 -1
  91. data/lib/extensions/mspec/mspec/utils/name_map.rb +8 -1
  92. data/lib/extensions/mspec/mspec/utils/options.rb +25 -8
  93. data/lib/extensions/mspec/mspec/utils/ruby_name.rb +1 -1
  94. data/lib/extensions/mspec/mspec/utils/script.rb +4 -4
  95. data/lib/extensions/mspec/mspec/version.rb +1 -1
  96. data/lib/extensions/nfc/ext/nfc/platform/android/Rakefile +1 -1
  97. data/lib/extensions/nfc/ext/nfc/shared/ruby/nfc_wrap.c +427 -149
  98. data/lib/extensions/set/tsort.rb +242 -0
  99. data/lib/extensions/thread/monitor.rb +277 -0
  100. data/lib/extensions/thread/thread.rb +357 -0
  101. data/lib/framework/base64.rb +4 -4
  102. data/lib/framework/date/format.rb +36 -64
  103. data/lib/framework/dateOrig.rb +40 -23
  104. data/lib/framework/ostruct.rb +14 -8
  105. data/lib/framework/rational.rb +2 -2
  106. data/lib/framework/rbconfig.rb +71 -0
  107. data/lib/framework/rho/rho.rb +46 -43
  108. data/lib/framework/rho/rhocontact.rb +60 -36
  109. data/lib/framework/rho/rhofsconnector.rb +2 -2
  110. data/lib/framework/rho/rhoutils.rb +10 -6
  111. data/lib/framework/rhodes.rb +1 -1
  112. data/lib/framework/rhoframework.rb +0 -13
  113. data/lib/framework/rhom/rhom.rb +64 -1
  114. data/lib/framework/rhom/rhom_object_factory.rb +4 -4
  115. data/lib/framework/rhosystem.rb +27 -25
  116. data/lib/framework/time.rb +48 -16
  117. data/lib/framework/version.rb +1 -1
  118. data/lib/rhodes.rb +1 -1
  119. data/lib/test/framework_test.rb +1 -1
  120. data/platform/android/Rhodes/AndroidManifest.xml +35 -9
  121. data/platform/android/Rhodes/default.properties +1 -1
  122. data/platform/android/Rhodes/jni/Android.mk +5 -4
  123. data/platform/android/Rhodes/jni/include/rhodes.h +65 -3
  124. data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +3 -1
  125. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_geolocation_GeoLocationImpl.h +12 -2
  126. data/platform/android/Rhodes/jni/src/callbacks.cpp +6 -2
  127. data/platform/android/Rhodes/jni/src/event.cpp +60 -1
  128. data/platform/android/Rhodes/jni/src/geolocation.cpp +42 -13
  129. data/platform/android/Rhodes/jni/src/mapview.cpp +169 -42
  130. data/platform/android/Rhodes/jni/src/phonebook.cpp +90 -74
  131. data/platform/android/Rhodes/jni/src/rhodes.cpp +91 -3
  132. data/platform/android/Rhodes/jni/src/rhodesapp.cpp +1 -1
  133. data/platform/android/Rhodes/res/drawable/callout_a1.png +0 -0
  134. data/platform/android/Rhodes/res/drawable/callout_a2.png +0 -0
  135. data/platform/android/Rhodes/res/drawable/callout_a3.png +0 -0
  136. data/platform/android/Rhodes/res/drawable/callout_b1.png +0 -0
  137. data/platform/android/Rhodes/res/drawable/callout_b2.png +0 -0
  138. data/platform/android/Rhodes/res/drawable/callout_b3.png +0 -0
  139. data/platform/android/Rhodes/res/drawable/callout_c1.png +0 -0
  140. data/platform/android/Rhodes/res/drawable/callout_c2.png +0 -0
  141. data/platform/android/Rhodes/res/drawable/callout_c3.png +0 -0
  142. data/platform/android/Rhodes/res/drawable/callout_d.png +0 -0
  143. data/platform/android/Rhodes/res/drawable/google.png +0 -0
  144. data/platform/android/Rhodes/res/drawable/location.png +0 -0
  145. data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +12 -0
  146. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +44 -21
  147. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +12 -25
  148. data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/PopupActivity.java +2 -1
  149. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java +2 -1
  150. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraSettings.java +11 -0
  151. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +13 -3
  152. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +7 -0
  153. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +127 -37
  154. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +69 -23
  155. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +287 -124
  156. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Annotation.java +6 -0
  157. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/AnnotationsOverlay.java +57 -6
  158. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Callout.java +296 -0
  159. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/CalloutOverlay.java +143 -0
  160. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/GoogleMapView.java +109 -3
  161. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +53 -5
  162. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Contact.java +16 -119
  163. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessor.java +4 -1
  164. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorNew.java +284 -120
  165. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorOld.java +58 -23
  166. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Phonebook.java +42 -77
  167. data/platform/android/Rhodes/src/com/rhomobile/rhodes/util/PerformOnUiThread.java +1 -1
  168. data/platform/android/build/RhodesSRC_build.files +2 -0
  169. data/platform/android/build/android.rake +90 -40
  170. data/platform/android/build/android_tools.rb +16 -0
  171. data/platform/android/build/androidcommon.rb +2 -0
  172. data/platform/android/build/librhocommon_build.files +3 -0
  173. data/platform/android/build/libruby_build.files +2 -1
  174. data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +6 -2
  175. data/platform/bb/RubyVM/src/com/rho/sync/ClientRegister.java +3 -2
  176. data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +17 -24
  177. data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +26 -2
  178. data/platform/bb/RubyVM/src/com/rho/sync/SyncProtocol_3.java +6 -1
  179. data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +4 -0
  180. data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +50 -54
  181. data/platform/bb/build/bb.rake +4 -4
  182. data/platform/bb/rhodes/src/com/rho/rubyext/RhoPhonebook.java +6 -6
  183. data/platform/bb/rhodes/src/rhomobile/camera/Camera.java +7 -0
  184. data/platform/bb/rhodes/src/rhomobile/mapview/MapView.java +10 -0
  185. data/platform/iphone/Classes/AppManager/AppManager.m +29 -0
  186. data/platform/iphone/Classes/Dispatcher/Dispatcher.c +1 -1
  187. data/platform/iphone/Classes/GeoLocation/LocationController.h +2 -1
  188. data/platform/iphone/Classes/GeoLocation/LocationController.m +23 -0
  189. data/platform/iphone/Classes/MapView/MapAnnotation.h +6 -0
  190. data/platform/iphone/Classes/MapView/MapAnnotation.m +5 -1
  191. data/platform/iphone/Classes/MapView/MapViewController.m +48 -4
  192. data/platform/iphone/Classes/MapView/MapViewManager.m +7 -0
  193. data/platform/iphone/Classes/Phonebook/phonebook.m +44 -0
  194. data/platform/iphone/Classes/Rhodes.m +1 -1
  195. data/platform/iphone/Info.plist +1 -1
  196. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +3 -3
  197. data/platform/iphone/curl/curl.xcodeproj/project.pbxproj +3 -3
  198. data/platform/iphone/rbuild/iphone.rake +3 -1
  199. data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +3 -3
  200. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +18 -7
  201. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +3 -2
  202. data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +3 -3
  203. data/platform/linux/files.txt +2 -2
  204. data/platform/linux/target/compiler/rubylinux +0 -0
  205. data/platform/mac/RubyMac/RubyMac.xcodeproj/project.pbxproj +8 -2
  206. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
  207. data/platform/osx/build/osx.rake +1 -3
  208. data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +65 -26
  209. data/platform/shared/RhoConnectClient/RhoConnectClient.h +5 -1
  210. data/platform/shared/common/Android.mk +3 -0
  211. data/platform/shared/common/AppMenu.cpp +2 -2
  212. data/platform/shared/common/RhoPort.h +2 -2
  213. data/platform/shared/common/RhodesApp.cpp +20 -2
  214. data/platform/shared/common/RhodesApp.h +1 -0
  215. data/platform/shared/common/ThreadQueue.cpp +5 -0
  216. data/platform/shared/common/ThreadQueue.h +1 -0
  217. data/platform/shared/common/map/BaseMapEngine.cpp +1393 -0
  218. data/platform/shared/common/map/BaseMapEngine.h +368 -0
  219. data/platform/shared/common/map/ESRIMapEngine.cpp +23 -896
  220. data/platform/shared/common/map/ESRIMapEngine.h +11 -243
  221. data/platform/shared/common/map/GeocodingMapEngine.cpp +200 -0
  222. data/platform/shared/common/map/GeocodingMapEngine.h +86 -0
  223. data/platform/shared/common/map/GoogleMapEngine.cpp +70 -135
  224. data/platform/shared/common/map/GoogleMapEngine.h +21 -38
  225. data/platform/shared/common/map/MapEngine.cpp +145 -24
  226. data/platform/shared/common/map/MapEngine.h +156 -54
  227. data/platform/shared/common/map/OSMMapEngine.cpp +94 -0
  228. data/platform/shared/common/map/OSMMapEngine.h +65 -0
  229. data/platform/shared/curl/lib/config-symbian.h +3 -1
  230. data/platform/shared/db/DBAdapter.cpp +30 -4
  231. data/platform/shared/db/DBAdapter.h +24 -1
  232. data/platform/shared/logging/RhoLog.h +26 -0
  233. data/platform/shared/net/AsyncHttp.cpp +6 -2
  234. data/platform/shared/net/CompatWince.cpp +1 -0
  235. data/platform/shared/net/HttpServer.cpp +5 -2
  236. data/platform/shared/qt/rhodes/RhoSimulator.h +1 -1
  237. data/platform/shared/qt/rhodes/impl/GeoLocationImpl.cpp +6 -0
  238. data/platform/shared/qt/rhodes/impl/MapViewImpl.cpp +4 -0
  239. data/platform/shared/qt/rhodes/impl/PhonebookImpl.cpp +12 -0
  240. data/platform/shared/qt/rhodes/impl/SystemImpl.cpp +26 -0
  241. data/platform/shared/qt/rholib/rholib.pro +14 -19
  242. data/platform/shared/qt/rubylib/rubylib.pro +7 -4
  243. data/platform/shared/ruby/Android.mk +3 -2
  244. data/platform/shared/ruby/GPL +340 -0
  245. data/platform/shared/ruby/android/ruby/config.h +283 -0
  246. data/platform/shared/ruby/array.c +1318 -595
  247. data/platform/shared/ruby/bignum.c +1092 -278
  248. data/platform/shared/ruby/class.c +689 -201
  249. data/platform/shared/ruby/compar.c +22 -20
  250. data/platform/shared/ruby/compile.c +327 -249
  251. data/platform/shared/ruby/complex.c +593 -138
  252. data/platform/shared/ruby/cont.c +213 -95
  253. data/platform/shared/ruby/debug.c +15 -10
  254. data/platform/shared/ruby/debug.h +1 -1
  255. data/platform/shared/ruby/dir.c +247 -104
  256. data/platform/shared/ruby/dln.c +102 -309
  257. data/platform/shared/ruby/dln.h +3 -3
  258. data/platform/shared/ruby/dln_find.c +305 -0
  259. data/platform/shared/ruby/dmydln.c +7 -2
  260. data/platform/shared/ruby/dmyversion.c +2 -0
  261. data/platform/shared/ruby/enc/Makefile.in +1 -0
  262. data/platform/shared/ruby/enc/big5.c +142 -5
  263. data/platform/shared/ruby/enc/depend +1 -0
  264. data/platform/shared/ruby/enc/emacs_mule.c +1 -1
  265. data/platform/shared/ruby/enc/encdb.c +3 -1
  266. data/platform/shared/ruby/enc/euc_tw.c +1 -10
  267. data/platform/shared/ruby/enc/iso_2022_jp.h +36 -0
  268. data/platform/shared/ruby/enc/iso_8859_5.c +1 -1
  269. data/platform/shared/ruby/enc/koi8_r.c +1 -1
  270. data/platform/shared/ruby/enc/koi8_u.c +1 -1
  271. data/platform/shared/ruby/enc/prelude.rb +1 -1
  272. data/platform/shared/ruby/enc/shift_jis.c +3 -3
  273. data/platform/shared/ruby/enc/trans/big5-hkscs-tbl.rb +18385 -0
  274. data/platform/shared/ruby/enc/trans/big5-uao-tbl.rb +19784 -0
  275. data/platform/shared/ruby/enc/trans/big5.c +53810 -12566
  276. data/platform/shared/ruby/enc/trans/big5.trans +10 -1
  277. data/platform/shared/ruby/enc/trans/chinese.c +113 -71
  278. data/platform/shared/ruby/enc/trans/chinese.trans +6 -4
  279. data/platform/shared/ruby/enc/trans/escape.c +3 -3
  280. data/platform/shared/ruby/enc/trans/escape.trans +3 -3
  281. data/platform/shared/ruby/enc/trans/gb18030-tbl.rb +32 -0
  282. data/platform/shared/ruby/enc/trans/gb18030.c +17431 -91305
  283. data/platform/shared/ruby/enc/trans/gb18030.trans +105 -5
  284. data/platform/shared/ruby/enc/trans/gbk.c +13 -13
  285. data/platform/shared/ruby/enc/trans/iso2022.c +374 -13
  286. data/platform/shared/ruby/enc/trans/iso2022.trans +313 -0
  287. data/platform/shared/ruby/enc/trans/japanese.c +26 -24
  288. data/platform/shared/ruby/enc/trans/japanese_euc.c +30 -30
  289. data/platform/shared/ruby/enc/trans/japanese_sjis.c +282 -276
  290. data/platform/shared/ruby/enc/trans/korean.c +182 -159
  291. data/platform/shared/ruby/enc/trans/newline.c +18 -14
  292. data/platform/shared/ruby/enc/trans/newline.trans +15 -11
  293. data/platform/shared/ruby/enc/trans/single_byte.c +497 -394
  294. data/platform/shared/ruby/enc/trans/single_byte.trans +1 -2
  295. data/platform/shared/ruby/enc/trans/transdb.c +1 -1
  296. data/platform/shared/ruby/enc/trans/utf8_mac-tbl.rb +945 -0
  297. data/platform/shared/ruby/enc/trans/utf8_mac.c +10853 -0
  298. data/platform/shared/ruby/enc/trans/utf8_mac.trans +242 -0
  299. data/platform/shared/ruby/enc/trans/utf_16_32.c +89 -86
  300. data/platform/shared/ruby/enc/unicode.c +30 -8779
  301. data/platform/shared/ruby/enc/unicode/name2ctype.h +17985 -0
  302. data/platform/shared/ruby/enc/unicode/name2ctype.h.blt +17985 -0
  303. data/platform/shared/ruby/enc/unicode/name2ctype.kwd +16711 -0
  304. data/platform/shared/ruby/enc/unicode/name2ctype.src +16711 -0
  305. data/platform/shared/ruby/enc/utf_16be.c +3 -4
  306. data/platform/shared/ruby/enc/utf_16le.c +3 -4
  307. data/platform/shared/ruby/enc/utf_8.c +3 -1
  308. data/platform/shared/ruby/enc/x_emoji.h +26 -0
  309. data/platform/shared/ruby/encdb.h +18 -2
  310. data/platform/shared/ruby/encoding.c +248 -111
  311. data/platform/shared/ruby/enum.c +1006 -200
  312. data/platform/shared/ruby/enumerator.c +555 -254
  313. data/platform/shared/ruby/error.c +478 -79
  314. data/platform/shared/ruby/eval.c +186 -94
  315. data/platform/shared/ruby/eval_error.c +16 -10
  316. data/platform/shared/ruby/eval_intern.h +24 -9
  317. data/platform/shared/ruby/eval_jump.c +2 -1
  318. data/platform/shared/ruby/ext/geolocation/geolocation.i +10 -1
  319. data/platform/shared/ruby/ext/geolocation/geolocation_wrap.c +49 -6
  320. data/platform/shared/ruby/ext/mapview/mapview.i +6 -0
  321. data/platform/shared/ruby/ext/mapview/mapview_wrap.c +279 -0
  322. data/platform/shared/ruby/ext/nativebar/nativebar_wrap.c +402 -124
  323. data/platform/shared/ruby/ext/phonebook/phonebook.i +41 -7
  324. data/platform/shared/ruby/ext/phonebook/phonebook_wrap.c +216 -47
  325. data/platform/shared/ruby/ext/rho/rhoruby.c +9 -5
  326. data/platform/shared/ruby/ext/rho/rhosupport.c +1 -1
  327. data/platform/shared/ruby/ext/socket/getaddrinfo.c +4 -0
  328. data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +2 -2
  329. data/platform/shared/ruby/ext/syncengine/syncengine.i +14 -5
  330. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +55 -7
  331. data/platform/shared/ruby/ext/system/system.i +7 -2
  332. data/platform/shared/ruby/ext/system/system_wrap.c +28 -2
  333. data/platform/shared/ruby/file.c +1243 -683
  334. data/platform/shared/ruby/gc.c +509 -217
  335. data/platform/shared/ruby/gc.h +7 -5
  336. data/platform/shared/ruby/generated/insns.inc +11 -9
  337. data/platform/shared/ruby/generated/insns_info.inc +69 -62
  338. data/platform/shared/ruby/generated/known_errors.inc +360 -245
  339. data/platform/shared/ruby/generated/lex.c +49 -47
  340. data/platform/shared/ruby/generated/node_name.inc +0 -8
  341. data/platform/shared/ruby/generated/optinsn.inc +1 -1
  342. data/platform/shared/ruby/generated/parse.c +4480 -4162
  343. data/platform/shared/ruby/generated/parse.h +13 -14
  344. data/platform/shared/ruby/generated/vm.inc +485 -269
  345. data/platform/shared/ruby/generated/vmtc.inc +2 -1
  346. data/platform/shared/ruby/golf_prelude.c +21 -4
  347. data/platform/shared/ruby/goruby.c +1 -1
  348. data/platform/shared/ruby/hash.c +429 -180
  349. data/platform/shared/ruby/ia64.s +42 -0
  350. data/platform/shared/ruby/id.c +13 -14
  351. data/platform/shared/ruby/id.h +25 -18
  352. data/platform/shared/ruby/include/ruby.h +1 -1
  353. data/platform/shared/ruby/include/ruby/backward/rubysig.h +2 -2
  354. data/platform/shared/ruby/include/ruby/defines.h +50 -29
  355. data/platform/shared/ruby/include/ruby/encoding.h +40 -14
  356. data/platform/shared/ruby/include/ruby/intern.h +81 -24
  357. data/platform/shared/ruby/include/ruby/io.h +4 -4
  358. data/platform/shared/ruby/include/ruby/missing.h +28 -18
  359. data/platform/shared/ruby/include/ruby/oniguruma.h +22 -7
  360. data/platform/shared/ruby/include/ruby/re.h +4 -4
  361. data/platform/shared/ruby/include/ruby/ruby.h +294 -76
  362. data/platform/shared/ruby/include/ruby/st.h +27 -9
  363. data/platform/shared/ruby/include/ruby/util.h +14 -6
  364. data/platform/shared/ruby/include/ruby/version.h +61 -0
  365. data/platform/shared/ruby/include/ruby/vm.h +21 -1
  366. data/platform/shared/ruby/include/ruby/win32.h +223 -63
  367. data/platform/shared/ruby/inits.c +1 -1
  368. data/platform/shared/ruby/insns.def +236 -111
  369. data/platform/shared/ruby/io.c +2188 -774
  370. data/platform/shared/ruby/iphone/ruby/config.h +75 -45
  371. data/platform/shared/ruby/iseq.c +261 -104
  372. data/platform/shared/ruby/iseq.h +13 -11
  373. data/platform/shared/ruby/linux/ruby/config.h +95 -100
  374. data/platform/shared/ruby/load.c +115 -81
  375. data/platform/shared/ruby/main.c +122 -0
  376. data/platform/shared/ruby/marshal.c +418 -230
  377. data/platform/shared/ruby/math.c +219 -152
  378. data/platform/shared/ruby/method.h +103 -0
  379. data/platform/shared/ruby/miniprelude.c +35 -23
  380. data/platform/shared/ruby/missing/acosh.c +4 -4
  381. data/platform/shared/ruby/missing/alloca.c +4 -1
  382. data/platform/shared/ruby/missing/close.c +67 -0
  383. data/platform/shared/ruby/missing/crypt.c +9 -9
  384. data/platform/shared/ruby/missing/dup2.c +0 -1
  385. data/platform/shared/ruby/missing/langinfo.c +4 -3
  386. data/platform/shared/ruby/missing/signbit.c +19 -0
  387. data/platform/shared/ruby/newline.c +18 -14
  388. data/platform/shared/ruby/node.c +921 -0
  389. data/platform/shared/ruby/node.h +14 -47
  390. data/platform/shared/ruby/numeric.c +544 -302
  391. data/platform/shared/ruby/object.c +430 -426
  392. data/platform/shared/ruby/pack.c +677 -628
  393. data/platform/shared/ruby/parse.y +847 -523
  394. data/platform/shared/ruby/proc.c +631 -341
  395. data/platform/shared/ruby/process.c +811 -421
  396. data/platform/shared/ruby/random.c +858 -177
  397. data/platform/shared/ruby/range.c +234 -133
  398. data/platform/shared/ruby/rational.c +936 -173
  399. data/platform/shared/ruby/re.c +351 -192
  400. data/platform/shared/ruby/regcomp.c +125 -138
  401. data/platform/shared/ruby/regenc.c +26 -25
  402. data/platform/shared/ruby/regenc.h +7 -3
  403. data/platform/shared/ruby/regerror.c +44 -34
  404. data/platform/shared/ruby/regexec.c +31 -38
  405. data/platform/shared/ruby/regint.h +16 -17
  406. data/platform/shared/ruby/regparse.c +266 -136
  407. data/platform/shared/ruby/regparse.h +4 -1
  408. data/platform/shared/ruby/regsyntax.c +2 -2
  409. data/platform/shared/ruby/revision.h +0 -1
  410. data/platform/shared/ruby/ruby.c +276 -248
  411. data/platform/shared/ruby/safe.c +14 -8
  412. data/platform/shared/ruby/signal.c +61 -68
  413. data/platform/shared/ruby/sprintf.c +77 -38
  414. data/platform/shared/ruby/st.c +437 -61
  415. data/platform/shared/ruby/strftime.c +252 -110
  416. data/platform/shared/ruby/string.c +1361 -1009
  417. data/platform/shared/ruby/struct.c +200 -133
  418. data/platform/shared/ruby/symbian/ruby/config.h +56 -24
  419. data/platform/shared/ruby/thread.c +732 -247
  420. data/platform/shared/ruby/thread_pthread.c +122 -69
  421. data/platform/shared/ruby/thread_pthread.h +4 -1
  422. data/platform/shared/ruby/thread_win32.c +73 -41
  423. data/platform/shared/ruby/thread_win32.h +1 -1
  424. data/platform/shared/ruby/time.c +3271 -919
  425. data/platform/shared/ruby/timev.h +21 -0
  426. data/platform/shared/ruby/transcode.c +289 -95
  427. data/platform/shared/ruby/transcode_data.h +17 -14
  428. data/platform/shared/ruby/transdb.h +32 -0
  429. data/platform/shared/ruby/util.c +330 -123
  430. data/platform/shared/ruby/variable.c +294 -176
  431. data/platform/shared/ruby/version.c +71 -2
  432. data/platform/shared/ruby/version.h +22 -19
  433. data/platform/shared/ruby/vm.c +368 -203
  434. data/platform/shared/ruby/vm_core.h +110 -66
  435. data/platform/shared/ruby/vm_dump.c +51 -44
  436. data/platform/shared/ruby/vm_eval.c +547 -230
  437. data/platform/shared/ruby/vm_exec.c +3 -3
  438. data/platform/shared/ruby/vm_insnhelper.c +397 -200
  439. data/platform/shared/ruby/vm_insnhelper.h +27 -14
  440. data/platform/shared/ruby/vm_method.c +493 -296
  441. data/platform/shared/ruby/vm_opts.h +1 -1
  442. data/platform/shared/ruby/{missing/vsnprintf.c → vsnprintf.c} +114 -74
  443. data/platform/shared/ruby/win32/dir.h +5 -4
  444. data/platform/shared/ruby/win32/miniprelude.c +34 -21
  445. data/platform/shared/ruby/win32/newline.c +18 -14
  446. data/platform/shared/ruby/win32/ruby/config.h +58 -20
  447. data/platform/shared/ruby/win32/win32.c +1398 -475
  448. data/platform/shared/ruby/wince/direct.c +17 -1
  449. data/platform/shared/ruby/wince/io_wce.c +16 -8
  450. data/platform/shared/ruby/wince/ruby/config.h +54 -24
  451. data/platform/shared/ruby/wince/sys/stat.c +81 -0
  452. data/platform/shared/ruby/wince/time_wce.c +47 -4
  453. data/platform/shared/ruby/wince/wince.h +16 -0
  454. data/platform/shared/rubyext/Android.mk +1 -1
  455. data/platform/shared/rubyext/GeoLocation.cpp +93 -48
  456. data/platform/shared/rubyext/GeoLocation.h +9 -4
  457. data/platform/shared/rubyext/System.cpp +6 -0
  458. data/platform/shared/sync/ClientRegister.cpp +1 -1
  459. data/platform/shared/sync/SyncEngine.cpp +15 -55
  460. data/platform/shared/sync/SyncEngine.h +4 -4
  461. data/platform/shared/sync/SyncProtocol_3.h +6 -1
  462. data/platform/shared/sync/SyncSource.cpp +6 -1
  463. data/platform/shared/sync/SyncSource.h +1 -0
  464. data/platform/shared/sync/SyncThread.cpp +20 -9
  465. data/platform/shared/sync/SyncThread.h +14 -9
  466. data/platform/shared/wtl80/include/atlapp.h +2 -0
  467. data/platform/symbian/build/symbian.rake +56 -5
  468. data/platform/symbian/curl/curl.pro +4 -0
  469. data/platform/symbian/rhodes/rhodes.pro +16 -4
  470. data/platform/symbian/rhodes/src/phonebook/ruby_phonebook.cpp +10 -0
  471. data/platform/symbian/rholib/rholib.pro +4 -0
  472. data/platform/symbian/rubylib/rubylib.pro +6 -2
  473. data/platform/symbian/sqlite3/sqlite3.pro +2 -1
  474. data/platform/symbian/syncengine/syncengine.pro +4 -0
  475. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  476. data/platform/wm/RhoLib/RhoLib.vcproj +333 -0
  477. data/platform/wm/build/build_inf.js +1 -0
  478. data/platform/wm/build/wm.rake +43 -17
  479. data/platform/wm/rhodes.sln +140 -76
  480. data/platform/wm/rhodes/Alert.cpp +1 -1
  481. data/platform/wm/rhodes/IBrowserEngine.cpp +10 -0
  482. data/platform/wm/rhodes/IBrowserEngine.h +24 -0
  483. data/platform/wm/rhodes/IEBrowserEngine.cpp +179 -0
  484. data/platform/wm/rhodes/IEBrowserEngine.h +36 -0
  485. data/platform/wm/rhodes/MainWindow.cpp +176 -178
  486. data/platform/wm/rhodes/MainWindow.h +78 -20
  487. data/platform/wm/rhodes/MapView/Graphics.h +10 -0
  488. data/platform/wm/rhodes/MapView/MapViewManager.cpp +7 -0
  489. data/platform/wm/rhodes/OutlookApp.cpp +3 -3
  490. data/platform/wm/rhodes/RhoWebKitBrowser.cpp +10 -0
  491. data/platform/wm/rhodes/Rhodes.cpp +499 -443
  492. data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +1 -4
  493. data/platform/wm/rhodes/bluetooth/Bluetooth.h +1 -1
  494. data/platform/wm/rhodes/camera/Camera.cpp +3 -6
  495. data/platform/wm/rhodes/phonebook/phonebook.cpp +20 -11
  496. data/platform/wm/rhodes/phonebook/phonebook.h +4 -2
  497. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +3 -3
  498. data/platform/wm/rhodes/rho/rubyext/GeoLocationImpl.cpp +12 -7
  499. data/platform/wm/rhodes/rho/rubyext/GeoLocationImpl.h +1 -1
  500. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +24 -6
  501. data/platform/wm/rhodes/rho/rubyext/WebView.cpp +0 -32
  502. data/platform/wm/rhodes/rho/rubyext/calendar.cpp +1 -1
  503. data/platform/wm/rhodes/rhodes.vcproj +1792 -129
  504. data/platform/wm/rhodes/rhoelements/RhoWKBrowserEngine.cpp +384 -0
  505. data/platform/wm/rhodes/rhoelements/RhoWKBrowserEngine.h +41 -0
  506. data/platform/wm/rhodes/signature/Signature.cpp +4 -8
  507. data/platform/wm/rhodes/signature/Signature.h +1 -1
  508. data/platform/wm/rhodes/simulator/MainWindowQt.cpp +1 -0
  509. data/platform/wm/rhodes/simulator/MainWindowQt.h +2 -0
  510. data/platform/wm/rhodes/stdafx.h +17 -5
  511. data/platform/wm/rhoelements.sln +447 -0
  512. data/platform/wm/rubylib/rubylib.vcproj +355 -10
  513. data/platform/wm/sqlite3/sqlite3.vcproj +305 -0
  514. data/platform/wm/syncengine/syncengine.vcproj +309 -0
  515. data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.Libraries.dll +0 -0
  516. data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.dll +0 -0
  517. data/platform/wp7/RhoAppRunner/Program.cs +2 -2
  518. data/platform/wp7/RhoRubyExtGen/RhoCamera.cs +59 -0
  519. data/platform/wp7/RhoRubyExtGen/RhoNativeBar.cs +3 -20
  520. data/platform/wp7/RhoRubyExtGen/RhoRubyExtGen.csproj +1 -0
  521. data/platform/wp7/RhoRubyLib/Initializers.Generated.cs +6 -9
  522. data/platform/wp7/RhoRubyLib/RhoRubyLib.csproj +2 -1
  523. data/platform/wp7/RhoRubyLib/rubyext/RhoCamera.cs +130 -0
  524. data/platform/wp7/RhoRubyLib/rubyext/RhoNativeBar.cs +5 -73
  525. data/res/build-tools/RhoRuby.exe +0 -0
  526. data/res/build-tools/RubyMac +0 -0
  527. data/res/build-tools/detool.exe +0 -0
  528. data/res/build-tools/rubylinux +0 -0
  529. data/res/generators/rhogen.rb +5 -0
  530. data/res/generators/templates/application/app/helpers/browser_helper.rb +4 -0
  531. data/res/generators/templates/application/app/index.erb +6 -2
  532. data/res/generators/templates/application/app/layout.erb +8 -5
  533. data/res/generators/templates/application/build.yml +3 -1
  534. data/res/generators/templates/application/gitignore +7 -0
  535. data/res/generators/templates/application/public/css/android.css +366 -5
  536. data/res/generators/templates/application/public/css/blackberry.css +16 -5
  537. data/res/generators/templates/application/public/css/iphone.css +349 -5
  538. data/res/generators/templates/application/public/css/windows_mobile.css +105 -0
  539. data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0b2.css → jquery.mobile-1.0b3.css} +64 -5
  540. data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0b2.js → jquery.mobile-1.0b3.js} +1125 -727
  541. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b3.min.css +8 -0
  542. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b3.min.js +169 -0
  543. data/res/generators/templates/application/public/jquery/{jquery-1.6.2.js → jquery-1.6.3.js} +226 -163
  544. data/res/generators/templates/application/public/jquery/jquery-1.6.3.min.js +4 -0
  545. data/res/generators/templates/application/public/js/wp7.js +5 -0
  546. data/res/generators/templates/model/edit.erb +6 -2
  547. data/res/generators/templates/model/index.erb +8 -4
  548. data/res/generators/templates/model/new.erb +3 -1
  549. data/res/generators/templates/model/show.erb +6 -2
  550. data/rhobuild.yml.example +0 -1
  551. data/rhodes.gemspec +1 -1
  552. data/spec/framework_spec/app/spec/core/argf/argf_spec.rb +1 -1
  553. data/spec/framework_spec/app/spec/core/argf/binmode_spec.rb +19 -7
  554. data/spec/framework_spec/app/spec/core/argf/bytes_spec.rb +3 -3
  555. data/spec/framework_spec/app/spec/core/argf/chars_spec.rb +3 -3
  556. data/spec/framework_spec/app/spec/core/argf/close_spec.rb +31 -5
  557. data/spec/framework_spec/app/spec/core/argf/closed_spec.rb +6 -5
  558. data/spec/framework_spec/app/spec/core/argf/each_byte_spec.rb +2 -2
  559. data/spec/framework_spec/app/spec/core/argf/each_char_spec.rb +3 -3
  560. data/spec/framework_spec/app/spec/core/argf/each_line_spec.rb +2 -2
  561. data/spec/framework_spec/app/spec/core/argf/each_spec.rb +2 -2
  562. data/spec/framework_spec/app/spec/core/argf/eof_spec.rb +2 -2
  563. data/spec/framework_spec/app/spec/core/argf/file_spec.rb +4 -4
  564. data/spec/framework_spec/app/spec/core/argf/filename_spec.rb +2 -2
  565. data/spec/framework_spec/app/spec/core/argf/fileno_spec.rb +2 -2
  566. data/spec/framework_spec/app/spec/core/argf/getc_spec.rb +5 -5
  567. data/spec/framework_spec/app/spec/core/argf/gets_spec.rb +5 -5
  568. data/spec/framework_spec/app/spec/core/argf/lineno_spec.rb +24 -18
  569. data/spec/framework_spec/app/spec/core/argf/path_spec.rb +2 -2
  570. data/spec/framework_spec/app/spec/core/argf/pos_spec.rb +5 -5
  571. data/spec/framework_spec/app/spec/core/argf/read_spec.rb +19 -20
  572. data/spec/framework_spec/app/spec/core/argf/readchar_spec.rb +5 -5
  573. data/spec/framework_spec/app/spec/core/argf/readline_spec.rb +5 -5
  574. data/spec/framework_spec/app/spec/core/argf/readlines_spec.rb +2 -2
  575. data/spec/framework_spec/app/spec/core/argf/rewind_spec.rb +18 -4
  576. data/spec/framework_spec/app/spec/core/argf/seek_spec.rb +6 -4
  577. data/spec/framework_spec/app/spec/core/argf/shared/each_byte.rb +3 -3
  578. data/spec/framework_spec/app/spec/core/argf/shared/each_char.rb +4 -4
  579. data/spec/framework_spec/app/spec/core/argf/shared/each_line.rb +9 -3
  580. data/spec/framework_spec/app/spec/core/argf/shared/eof.rb +3 -3
  581. data/spec/framework_spec/app/spec/core/argf/shared/filename.rb +3 -3
  582. data/spec/framework_spec/app/spec/core/argf/shared/fileno.rb +3 -3
  583. data/spec/framework_spec/app/spec/core/argf/shared/getc.rb +3 -3
  584. data/spec/framework_spec/app/spec/core/argf/shared/gets.rb +41 -43
  585. data/spec/framework_spec/app/spec/core/argf/shared/pos.rb +3 -3
  586. data/spec/framework_spec/app/spec/core/argf/shared/readlines.rb +2 -2
  587. data/spec/framework_spec/app/spec/core/argf/skip_spec.rb +12 -4
  588. data/spec/framework_spec/app/spec/core/argf/tell_spec.rb +2 -2
  589. data/spec/framework_spec/app/spec/core/argf/to_a_spec.rb +2 -2
  590. data/spec/framework_spec/app/spec/core/argf/to_i_spec.rb +2 -2
  591. data/spec/framework_spec/app/spec/core/argf/to_io_spec.rb +4 -4
  592. data/spec/framework_spec/app/spec/core/argf/to_s_spec.rb +4 -4
  593. data/spec/framework_spec/app/spec/core/array/allocate_spec.rb +3 -3
  594. data/spec/framework_spec/app/spec/core/array/append_spec.rb +2 -2
  595. data/spec/framework_spec/app/spec/core/array/array_spec.rb +1 -1
  596. data/spec/framework_spec/app/spec/core/array/assoc_spec.rb +5 -5
  597. data/spec/framework_spec/app/spec/core/array/at_spec.rb +5 -5
  598. data/spec/framework_spec/app/spec/core/array/choice_spec.rb +2 -2
  599. data/spec/framework_spec/app/spec/core/array/clear_spec.rb +3 -3
  600. data/spec/framework_spec/app/spec/core/array/clone_spec.rb +3 -3
  601. data/spec/framework_spec/app/spec/core/array/collect_spec.rb +3 -3
  602. data/spec/framework_spec/app/spec/core/array/combination_spec.rb +38 -13
  603. data/spec/framework_spec/app/spec/core/array/compact_spec.rb +33 -11
  604. data/spec/framework_spec/app/spec/core/array/comparison_spec.rb +11 -5
  605. data/spec/framework_spec/app/spec/core/array/concat_spec.rb +13 -13
  606. data/spec/framework_spec/app/spec/core/array/constructor_spec.rb +4 -4
  607. data/spec/framework_spec/app/spec/core/array/count_spec.rb +7 -0
  608. data/spec/framework_spec/app/spec/core/array/cycle_spec.rb +82 -14
  609. data/spec/framework_spec/app/spec/core/array/delete_at_spec.rb +2 -2
  610. data/spec/framework_spec/app/spec/core/array/delete_if_spec.rb +16 -7
  611. data/spec/framework_spec/app/spec/core/array/delete_spec.rb +8 -2
  612. data/spec/framework_spec/app/spec/core/array/drop_spec.rb +7 -0
  613. data/spec/framework_spec/app/spec/core/array/drop_while_spec.rb +7 -0
  614. data/spec/framework_spec/app/spec/core/array/dup_spec.rb +3 -3
  615. data/spec/framework_spec/app/spec/core/array/each_index_spec.rb +29 -30
  616. data/spec/framework_spec/app/spec/core/array/each_spec.rb +8 -33
  617. data/spec/framework_spec/app/spec/core/array/element_reference_spec.rb +30 -6
  618. data/spec/framework_spec/app/spec/core/array/element_set_spec.rb +19 -2
  619. data/spec/framework_spec/app/spec/core/array/empty_spec.rb +2 -2
  620. data/spec/framework_spec/app/spec/core/array/eql_spec.rb +3 -3
  621. data/spec/framework_spec/app/spec/core/array/equal_value_spec.rb +34 -3
  622. data/spec/framework_spec/app/spec/core/array/fetch_spec.rb +4 -4
  623. data/spec/framework_spec/app/spec/core/array/fill_spec.rb +27 -12
  624. data/spec/framework_spec/app/spec/core/array/find_index_spec.rb +7 -0
  625. data/spec/framework_spec/app/spec/core/array/first_spec.rb +13 -13
  626. data/spec/framework_spec/app/spec/core/array/fixtures/classes.rb +447 -6
  627. data/spec/framework_spec/app/spec/core/array/flatten_spec.rb +42 -19
  628. data/spec/framework_spec/app/spec/core/array/frozen_spec.rb +17 -15
  629. data/spec/framework_spec/app/spec/core/array/hash_spec.rb +22 -3
  630. data/spec/framework_spec/app/spec/core/array/include_spec.rb +3 -3
  631. data/spec/framework_spec/app/spec/core/array/index_spec.rb +1 -1
  632. data/spec/framework_spec/app/spec/core/array/indexes_spec.rb +3 -3
  633. data/spec/framework_spec/app/spec/core/array/indices_spec.rb +3 -3
  634. data/spec/framework_spec/app/spec/core/array/initialize_copy_spec.rb +3 -3
  635. data/spec/framework_spec/app/spec/core/array/initialize_spec.rb +2 -2
  636. data/spec/framework_spec/app/spec/core/array/insert_spec.rb +13 -11
  637. data/spec/framework_spec/app/spec/core/array/inspect_spec.rb +33 -3
  638. data/spec/framework_spec/app/spec/core/array/intersection_spec.rb +13 -13
  639. data/spec/framework_spec/app/spec/core/array/join_spec.rb +24 -4
  640. data/spec/framework_spec/app/spec/core/array/keep_if_spec.rb +12 -0
  641. data/spec/framework_spec/app/spec/core/array/last_spec.rb +11 -11
  642. data/spec/framework_spec/app/spec/core/array/length_spec.rb +3 -3
  643. data/spec/framework_spec/app/spec/core/array/map_spec.rb +3 -3
  644. data/spec/framework_spec/app/spec/core/array/minus_spec.rb +9 -9
  645. data/spec/framework_spec/app/spec/core/array/multiply_spec.rb +23 -10
  646. data/spec/framework_spec/app/spec/core/array/new_spec.rb +4 -4
  647. data/spec/framework_spec/app/spec/core/array/nitems_spec.rb +3 -3
  648. data/spec/framework_spec/app/spec/core/array/pack/a_spec.rb +59 -0
  649. data/spec/framework_spec/app/spec/core/array/pack/at_spec.rb +30 -0
  650. data/spec/framework_spec/app/spec/core/array/pack/b_spec.rb +109 -0
  651. data/spec/framework_spec/app/spec/core/array/pack/c_spec.rb +83 -0
  652. data/spec/framework_spec/app/spec/core/array/pack/comment_spec.rb +25 -0
  653. data/spec/framework_spec/app/spec/core/array/pack/d_spec.rb +39 -0
  654. data/spec/framework_spec/app/spec/core/array/pack/e_spec.rb +25 -0
  655. data/spec/framework_spec/app/spec/core/array/pack/f_spec.rb +39 -0
  656. data/spec/framework_spec/app/spec/core/array/pack/g_spec.rb +25 -0
  657. data/spec/framework_spec/app/spec/core/array/pack/h_spec.rb +201 -0
  658. data/spec/framework_spec/app/spec/core/array/pack/i_spec.rb +73 -0
  659. data/spec/framework_spec/app/spec/core/array/pack/l_spec.rb +193 -0
  660. data/spec/framework_spec/app/spec/core/array/pack/m_spec.rb +337 -0
  661. data/spec/framework_spec/app/spec/core/array/pack/n_spec.rb +25 -0
  662. data/spec/framework_spec/app/spec/core/array/pack/percent_spec.rb +7 -0
  663. data/spec/framework_spec/app/spec/core/array/pack/q_spec.rb +43 -0
  664. data/spec/framework_spec/app/spec/core/array/pack/s_spec.rb +73 -0
  665. data/spec/framework_spec/app/spec/core/array/pack/shared/basic.rb +57 -0
  666. data/spec/framework_spec/app/spec/core/array/pack/shared/encodings.rb +16 -0
  667. data/spec/framework_spec/app/spec/core/array/pack/shared/float.rb +277 -0
  668. data/spec/framework_spec/app/spec/core/array/pack/shared/integer.rb +381 -0
  669. data/spec/framework_spec/app/spec/core/array/pack/shared/numeric_basic.rb +54 -0
  670. data/spec/framework_spec/app/spec/core/array/pack/shared/string.rb +83 -0
  671. data/spec/framework_spec/app/spec/core/array/pack/shared/unicode.rb +89 -0
  672. data/spec/framework_spec/app/spec/core/array/pack/u_spec.rb +130 -0
  673. data/spec/framework_spec/app/spec/core/array/pack/v_spec.rb +25 -0
  674. data/spec/framework_spec/app/spec/core/array/pack/w_spec.rb +44 -0
  675. data/spec/framework_spec/app/spec/core/array/pack/x_spec.rb +64 -0
  676. data/spec/framework_spec/app/spec/core/array/pack/z_spec.rb +32 -0
  677. data/spec/framework_spec/app/spec/core/array/pack_spec.rb +409 -369
  678. data/spec/framework_spec/app/spec/core/array/partition_spec.rb +6 -6
  679. data/spec/framework_spec/app/spec/core/array/permutation_spec.rb +34 -15
  680. data/spec/framework_spec/app/spec/core/array/plus_spec.rb +6 -6
  681. data/spec/framework_spec/app/spec/core/array/pop_spec.rb +17 -4
  682. data/spec/framework_spec/app/spec/core/array/product_spec.rb +49 -5
  683. data/spec/framework_spec/app/spec/core/array/push_spec.rb +4 -4
  684. data/spec/framework_spec/app/spec/core/array/rassoc_spec.rb +2 -2
  685. data/spec/framework_spec/app/spec/core/array/reject_spec.rb +42 -29
  686. data/spec/framework_spec/app/spec/core/array/repeated_combination_spec.rb +59 -0
  687. data/spec/framework_spec/app/spec/core/array/repeated_permutation_spec.rb +72 -0
  688. data/spec/framework_spec/app/spec/core/array/replace_spec.rb +3 -3
  689. data/spec/framework_spec/app/spec/core/array/reverse_each_spec.rb +26 -39
  690. data/spec/framework_spec/app/spec/core/array/reverse_spec.rb +15 -7
  691. data/spec/framework_spec/app/spec/core/array/rindex_spec.rb +28 -16
  692. data/spec/framework_spec/app/spec/core/array/rotate_spec.rb +85 -0
  693. data/spec/framework_spec/app/spec/core/array/sample_spec.rb +4 -10
  694. data/spec/framework_spec/app/spec/core/array/select_spec.rb +16 -3
  695. data/spec/framework_spec/app/spec/core/array/shared/clone.rb +2 -2
  696. data/spec/framework_spec/app/spec/core/array/shared/collect.rb +3 -3
  697. data/spec/framework_spec/app/spec/core/array/shared/enumeratorize.rb +12 -0
  698. data/spec/framework_spec/app/spec/core/array/shared/eql.rb +9 -5
  699. data/spec/framework_spec/app/spec/core/array/shared/indexes.rb +1 -1
  700. data/spec/framework_spec/app/spec/core/array/shared/join.rb +122 -90
  701. data/spec/framework_spec/app/spec/core/array/shared/keep_if.rb +11 -0
  702. data/spec/framework_spec/app/spec/core/array/shared/slice.rb +67 -6
  703. data/spec/framework_spec/app/spec/core/array/shift_spec.rb +18 -4
  704. data/spec/framework_spec/app/spec/core/array/shuffle_spec.rb +23 -14
  705. data/spec/framework_spec/app/spec/core/array/size_spec.rb +3 -3
  706. data/spec/framework_spec/app/spec/core/array/slice_spec.rb +19 -3
  707. data/spec/framework_spec/app/spec/core/array/sort_by_spec.rb +48 -0
  708. data/spec/framework_spec/app/spec/core/array/sort_spec.rb +65 -65
  709. data/spec/framework_spec/app/spec/core/array/take_spec.rb +7 -0
  710. data/spec/framework_spec/app/spec/core/array/take_while_spec.rb +7 -0
  711. data/spec/framework_spec/app/spec/core/array/to_a_spec.rb +7 -8
  712. data/spec/framework_spec/app/spec/core/array/to_ary_spec.rb +2 -2
  713. data/spec/framework_spec/app/spec/core/array/to_s_spec.rb +2 -5
  714. data/spec/framework_spec/app/spec/core/array/transpose_spec.rb +6 -6
  715. data/spec/framework_spec/app/spec/core/array/try_convert_spec.rb +15 -17
  716. data/spec/framework_spec/app/spec/core/array/union_spec.rb +13 -13
  717. data/spec/framework_spec/app/spec/core/array/uniq_spec.rb +41 -15
  718. data/spec/framework_spec/app/spec/core/array/unshift_spec.rb +9 -7
  719. data/spec/framework_spec/app/spec/core/array/values_at_spec.rb +5 -5
  720. data/spec/framework_spec/app/spec/core/array/zip_spec.rb +15 -3
  721. data/spec/framework_spec/app/spec/core/basicobject/__send___spec.rb +9 -0
  722. data/spec/framework_spec/app/spec/core/basicobject/ancestors_spec.rb +9 -0
  723. data/spec/framework_spec/app/spec/core/basicobject/basicobject_spec.rb +67 -0
  724. data/spec/framework_spec/app/spec/core/basicobject/class_spec.rb +9 -0
  725. data/spec/framework_spec/app/spec/core/basicobject/equal_spec.rb +20 -0
  726. data/spec/framework_spec/app/spec/core/basicobject/equal_value_spec.rb +26 -0
  727. data/spec/framework_spec/app/spec/core/basicobject/fixtures/common.rb +5 -0
  728. data/spec/framework_spec/app/spec/core/basicobject/fixtures/remove_method_missing.rb +9 -0
  729. data/spec/framework_spec/app/spec/core/basicobject/initialize_spec.rb +9 -0
  730. data/spec/framework_spec/app/spec/core/basicobject/instance_eval_spec.rb +14 -0
  731. data/spec/framework_spec/app/spec/core/basicobject/instance_exec_spec.rb +19 -0
  732. data/spec/framework_spec/app/spec/core/basicobject/method_missing_spec.rb +15 -0
  733. data/spec/framework_spec/app/spec/core/basicobject/new_spec.rb +7 -5
  734. data/spec/framework_spec/app/spec/core/basicobject/not_equal_spec.rb +26 -0
  735. data/spec/framework_spec/app/spec/core/basicobject/not_spec.rb +13 -0
  736. data/spec/framework_spec/app/spec/core/basicobject/singleton_method_added_spec.rb +8 -0
  737. data/spec/framework_spec/app/spec/core/basicobject/singleton_method_removed_spec.rb +8 -0
  738. data/spec/framework_spec/app/spec/core/basicobject/singleton_method_undefined_spec.rb +7 -0
  739. data/spec/framework_spec/app/spec/core/basicobject/superclass_spec.rb +9 -0
  740. data/spec/framework_spec/app/spec/core/bignum/abs_spec.rb +4 -5
  741. data/spec/framework_spec/app/spec/core/bignum/bit_and_spec.rb +4 -4
  742. data/spec/framework_spec/app/spec/core/bignum/bit_or_spec.rb +5 -5
  743. data/spec/framework_spec/app/spec/core/bignum/bit_xor_spec.rb +5 -5
  744. data/spec/framework_spec/app/spec/core/bignum/case_compare_spec.rb +7 -0
  745. data/spec/framework_spec/app/spec/core/bignum/coerce_spec.rb +1 -1
  746. data/spec/framework_spec/app/spec/core/bignum/comparison_spec.rb +143 -20
  747. data/spec/framework_spec/app/spec/core/bignum/complement_spec.rb +1 -1
  748. data/spec/framework_spec/app/spec/core/bignum/div_spec.rb +2 -2
  749. data/spec/framework_spec/app/spec/core/bignum/divide_spec.rb +2 -2
  750. data/spec/framework_spec/app/spec/core/bignum/divmod_spec.rb +11 -6
  751. data/spec/framework_spec/app/spec/core/bignum/element_reference_spec.rb +4 -4
  752. data/spec/framework_spec/app/spec/core/bignum/eql_spec.rb +1 -1
  753. data/spec/framework_spec/app/spec/core/bignum/equal_value_spec.rb +6 -6
  754. data/spec/framework_spec/app/spec/core/bignum/even_spec.rb +21 -0
  755. data/spec/framework_spec/app/spec/core/bignum/exponent_spec.rb +16 -2
  756. data/spec/framework_spec/app/spec/core/bignum/fdiv_spec.rb +7 -0
  757. data/spec/framework_spec/app/spec/core/bignum/gt_spec.rb +3 -3
  758. data/spec/framework_spec/app/spec/core/bignum/gte_spec.rb +2 -2
  759. data/spec/framework_spec/app/spec/core/bignum/hash_spec.rb +1 -1
  760. data/spec/framework_spec/app/spec/core/bignum/left_shift_spec.rb +64 -40
  761. data/spec/framework_spec/app/spec/core/bignum/lt_spec.rb +5 -5
  762. data/spec/framework_spec/app/spec/core/bignum/lte_spec.rb +2 -2
  763. data/spec/framework_spec/app/spec/core/bignum/magnitude_spec.rb +10 -0
  764. data/spec/framework_spec/app/spec/core/bignum/minus_spec.rb +3 -3
  765. data/spec/framework_spec/app/spec/core/bignum/modulo_spec.rb +2 -2
  766. data/spec/framework_spec/app/spec/core/bignum/multiply_spec.rb +2 -2
  767. data/spec/framework_spec/app/spec/core/bignum/odd_spec.rb +21 -0
  768. data/spec/framework_spec/app/spec/core/bignum/plus_spec.rb +3 -3
  769. data/spec/framework_spec/app/spec/core/bignum/quo_spec.rb +1 -1
  770. data/spec/framework_spec/app/spec/core/bignum/remainder_spec.rb +19 -8
  771. data/spec/framework_spec/app/spec/core/bignum/right_shift_spec.rb +93 -34
  772. data/spec/framework_spec/app/spec/core/bignum/shared/abs.rb +6 -0
  773. data/spec/framework_spec/app/spec/core/bignum/shared/divide.rb +2 -2
  774. data/spec/framework_spec/app/spec/core/bignum/shared/modulo.rb +13 -4
  775. data/spec/framework_spec/app/spec/core/bignum/size_spec.rb +15 -1
  776. data/spec/framework_spec/app/spec/core/bignum/to_f_spec.rb +1 -1
  777. data/spec/framework_spec/app/spec/core/bignum/to_s_spec.rb +4 -4
  778. data/spec/framework_spec/app/spec/core/bignum/uminus_spec.rb +2 -2
  779. data/spec/framework_spec/app/spec/core/binding/clone_spec.rb +7 -8
  780. data/spec/framework_spec/app/spec/core/binding/dup_spec.rb +7 -8
  781. data/spec/framework_spec/app/spec/core/binding/eval_spec.rb +19 -25
  782. data/spec/framework_spec/app/spec/core/binding/fixtures/classes.rb +1 -1
  783. data/spec/framework_spec/app/spec/core/builtin_constants/builtin_constants_spec.rb +57 -0
  784. data/spec/framework_spec/app/spec/core/class/allocate_spec.rb +11 -5
  785. data/spec/framework_spec/app/spec/core/class/dup_spec.rb +72 -0
  786. data/spec/framework_spec/app/spec/core/class/fixtures/classes.rb +5 -5
  787. data/spec/framework_spec/app/spec/core/class/inherited_spec.rb +22 -22
  788. data/spec/framework_spec/app/spec/core/class/initialize_copy_spec.rb +22 -1
  789. data/spec/framework_spec/app/spec/core/class/initialize_spec.rb +37 -6
  790. data/spec/framework_spec/app/spec/core/class/new_spec.rb +11 -2
  791. data/spec/framework_spec/app/spec/core/class/superclass_spec.rb +37 -8
  792. data/spec/framework_spec/app/spec/core/comparable/between_spec.rb +3 -3
  793. data/spec/framework_spec/app/spec/core/comparable/equal_value_spec.rb +11 -11
  794. data/spec/framework_spec/app/spec/core/comparable/fixtures/classes.rb +3 -3
  795. data/spec/framework_spec/app/spec/core/comparable/gt_spec.rb +8 -8
  796. data/spec/framework_spec/app/spec/core/comparable/gte_spec.rb +9 -9
  797. data/spec/framework_spec/app/spec/core/comparable/lt_spec.rb +9 -9
  798. data/spec/framework_spec/app/spec/core/comparable/lte_spec.rb +8 -8
  799. data/spec/framework_spec/app/spec/core/complex/Complex_spec.rb +20 -0
  800. data/spec/framework_spec/app/spec/core/complex/abs2_spec.rb +8 -0
  801. data/spec/framework_spec/app/spec/core/complex/abs_spec.rb +8 -0
  802. data/spec/framework_spec/app/spec/core/complex/angle_spec.rb +10 -0
  803. data/spec/framework_spec/app/spec/core/complex/arg_spec.rb +10 -0
  804. data/spec/framework_spec/app/spec/core/complex/coerce_spec.rb +8 -0
  805. data/spec/framework_spec/app/spec/core/complex/conj_spec.rb +10 -0
  806. data/spec/framework_spec/app/spec/core/complex/conjugate_spec.rb +10 -0
  807. data/spec/framework_spec/app/spec/core/complex/denominator_spec.rb +9 -0
  808. data/spec/framework_spec/app/spec/core/complex/divide_spec.rb +24 -0
  809. data/spec/framework_spec/app/spec/core/complex/eql_spec.rb +7 -0
  810. data/spec/framework_spec/app/spec/core/complex/equal_value_spec.rb +16 -0
  811. data/spec/framework_spec/app/spec/core/complex/exponent_spec.rb +24 -0
  812. data/spec/framework_spec/app/spec/core/complex/fdiv_spec.rb +131 -0
  813. data/spec/framework_spec/app/spec/core/complex/hash_spec.rb +8 -0
  814. data/spec/framework_spec/app/spec/core/complex/imag_spec.rb +7 -0
  815. data/spec/framework_spec/app/spec/core/complex/imaginary_spec.rb +7 -0
  816. data/spec/framework_spec/app/spec/core/complex/inspect_spec.rb +7 -0
  817. data/spec/framework_spec/app/spec/core/complex/integer_spec.rb +13 -0
  818. data/spec/framework_spec/app/spec/core/complex/magnitude_spec.rb +8 -0
  819. data/spec/framework_spec/app/spec/core/complex/marshal_dump_spec.rb +7 -0
  820. data/spec/framework_spec/app/spec/core/complex/marshal_load_spec.rb +7 -0
  821. data/spec/framework_spec/app/spec/core/complex/minus_spec.rb +15 -0
  822. data/spec/framework_spec/app/spec/core/complex/multiply_spec.rb +16 -0
  823. data/spec/framework_spec/app/spec/core/complex/numerator_spec.rb +7 -0
  824. data/spec/framework_spec/app/spec/core/complex/phase_spec.rb +7 -0
  825. data/spec/framework_spec/app/spec/core/complex/plus_spec.rb +16 -0
  826. data/spec/framework_spec/app/spec/core/complex/polar_spec.rb +17 -0
  827. data/spec/framework_spec/app/spec/core/complex/quo_spec.rb +7 -0
  828. data/spec/framework_spec/app/spec/core/complex/rationalize_spec.rb +15 -0
  829. data/spec/framework_spec/app/spec/core/complex/real_spec.rb +26 -0
  830. data/spec/framework_spec/app/spec/core/complex/rect_spec.rb +11 -0
  831. data/spec/framework_spec/app/spec/core/complex/rectangular_spec.rb +14 -0
  832. data/spec/framework_spec/app/spec/core/complex/to_f_spec.rb +7 -0
  833. data/spec/framework_spec/app/spec/core/complex/to_i_spec.rb +7 -0
  834. data/spec/framework_spec/app/spec/core/complex/to_r_spec.rb +7 -0
  835. data/spec/framework_spec/app/spec/core/complex/to_s_spec.rb +12 -0
  836. data/spec/framework_spec/app/spec/core/complex/uminus_spec.rb +7 -0
  837. data/spec/framework_spec/app/spec/core/continuation/call_spec.rb +8 -1
  838. data/spec/framework_spec/app/spec/core/continuation/element_reference_spec.rb +8 -1
  839. data/spec/framework_spec/app/spec/core/continuation/new_spec.rb +8 -0
  840. data/spec/framework_spec/app/spec/core/dir/chdir_spec.rb +64 -17
  841. data/spec/framework_spec/app/spec/core/dir/chroot_spec.rb +50 -26
  842. data/spec/framework_spec/app/spec/core/dir/close_spec.rb +32 -16
  843. data/spec/framework_spec/app/spec/core/dir/delete_spec.rb +11 -3
  844. data/spec/framework_spec/app/spec/core/dir/dir_spec.rb +1 -1
  845. data/spec/framework_spec/app/spec/core/dir/each_spec.rb +24 -8
  846. data/spec/framework_spec/app/spec/core/dir/element_reference_spec.rb +19 -3
  847. data/spec/framework_spec/app/spec/core/dir/entries_spec.rb +19 -3
  848. data/spec/framework_spec/app/spec/core/dir/exist_spec.rb +17 -0
  849. data/spec/framework_spec/app/spec/core/dir/exists_spec.rb +17 -0
  850. data/spec/framework_spec/app/spec/core/dir/fixtures/common.rb +96 -73
  851. data/spec/framework_spec/app/spec/core/dir/foreach_spec.rb +20 -4
  852. data/spec/framework_spec/app/spec/core/dir/getwd_spec.rb +12 -4
  853. data/spec/framework_spec/app/spec/core/dir/glob_spec.rb +60 -8
  854. data/spec/framework_spec/app/spec/core/dir/home_spec.rb +15 -6
  855. data/spec/framework_spec/app/spec/core/dir/initialize_spec.rb +29 -2
  856. data/spec/framework_spec/app/spec/core/dir/inspect_spec.rb +26 -0
  857. data/spec/framework_spec/app/spec/core/dir/mkdir_spec.rb +56 -21
  858. data/spec/framework_spec/app/spec/core/dir/open_spec.rb +11 -3
  859. data/spec/framework_spec/app/spec/core/dir/path_spec.rb +8 -24
  860. data/spec/framework_spec/app/spec/core/dir/pos_spec.rb +28 -4
  861. data/spec/framework_spec/app/spec/core/dir/pwd_spec.rb +44 -20
  862. data/spec/framework_spec/app/spec/core/dir/read_spec.rb +11 -5
  863. data/spec/framework_spec/app/spec/core/dir/rewind_spec.rb +13 -7
  864. data/spec/framework_spec/app/spec/core/dir/rmdir_spec.rb +11 -3
  865. data/spec/framework_spec/app/spec/core/dir/seek_spec.rb +11 -3
  866. data/spec/framework_spec/app/spec/core/dir/shared/chroot.rb +43 -0
  867. data/spec/framework_spec/app/spec/core/dir/shared/delete.rb +27 -8
  868. data/spec/framework_spec/app/spec/core/dir/shared/exists.rb +53 -0
  869. data/spec/framework_spec/app/spec/core/dir/shared/glob.rb +61 -8
  870. data/spec/framework_spec/app/spec/core/dir/shared/open.rb +18 -2
  871. data/spec/framework_spec/app/spec/core/dir/shared/path.rb +29 -0
  872. data/spec/framework_spec/app/spec/core/dir/shared/pos.rb +1 -1
  873. data/spec/framework_spec/app/spec/core/dir/shared/pwd.rb +13 -13
  874. data/spec/framework_spec/app/spec/core/dir/tell_spec.rb +12 -6
  875. data/spec/framework_spec/app/spec/core/dir/to_path.rb +17 -0
  876. data/spec/framework_spec/app/spec/core/dir/to_path_spec.rb +7 -0
  877. data/spec/framework_spec/app/spec/core/dir/unlink_spec.rb +11 -3
  878. data/spec/framework_spec/app/spec/core/encoding/_dump_spec.rb +7 -0
  879. data/spec/framework_spec/app/spec/core/encoding/_load_spec.rb +7 -0
  880. data/spec/framework_spec/app/spec/core/encoding/aliases_spec.rb +45 -0
  881. data/spec/framework_spec/app/spec/core/encoding/ascii_compatible_spec.rb +13 -0
  882. data/spec/framework_spec/app/spec/core/encoding/compatible_spec.rb +26 -0
  883. data/spec/framework_spec/app/spec/core/encoding/converter/asciicompat_encoding_spec.rb +48 -0
  884. data/spec/framework_spec/app/spec/core/encoding/converter/constants_spec.rb +133 -0
  885. data/spec/framework_spec/app/spec/core/encoding/converter/convert_spec.rb +46 -0
  886. data/spec/framework_spec/app/spec/core/encoding/converter/convpath_spec.rb +65 -0
  887. data/spec/framework_spec/app/spec/core/encoding/converter/destination_encoding_spec.rb +13 -0
  888. data/spec/framework_spec/app/spec/core/encoding/converter/finish_spec.rb +38 -0
  889. data/spec/framework_spec/app/spec/core/encoding/converter/insert_output_spec.rb +7 -0
  890. data/spec/framework_spec/app/spec/core/encoding/converter/inspect_spec.rb +7 -0
  891. data/spec/framework_spec/app/spec/core/encoding/converter/last_error_spec.rb +84 -0
  892. data/spec/framework_spec/app/spec/core/encoding/converter/primitive_convert_spec.rb +137 -0
  893. data/spec/framework_spec/app/spec/core/encoding/converter/primitive_errinfo_spec.rb +71 -0
  894. data/spec/framework_spec/app/spec/core/encoding/converter/putback_spec.rb +49 -0
  895. data/spec/framework_spec/app/spec/core/encoding/converter/replacement_spec.rb +63 -0
  896. data/spec/framework_spec/app/spec/core/encoding/converter/search_convpath_spec.rb +73 -0
  897. data/spec/framework_spec/app/spec/core/encoding/converter/source_encoding_spec.rb +13 -0
  898. data/spec/framework_spec/app/spec/core/encoding/default_external_spec.rb +57 -0
  899. data/spec/framework_spec/app/spec/core/encoding/default_internal_spec.rb +83 -0
  900. data/spec/framework_spec/app/spec/core/encoding/dummy_spec.rb +16 -0
  901. data/spec/framework_spec/app/spec/core/encoding/find_spec.rb +82 -0
  902. data/spec/framework_spec/app/spec/core/encoding/fixtures/classes.rb +48 -0
  903. data/spec/framework_spec/app/spec/core/encoding/inspect_spec.rb +21 -0
  904. data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/destination_encoding_name_spec.rb +20 -0
  905. data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/destination_encoding_spec.rb +20 -0
  906. data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/error_bytes_spec.rb +31 -0
  907. data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/incomplete_input_spec.rb +30 -0
  908. data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/readagain_bytes_spec.rb +31 -0
  909. data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/source_encoding_name_spec.rb +30 -0
  910. data/spec/framework_spec/app/spec/core/encoding/invalid_byte_sequence_error/source_encoding_spec.rb +35 -0
  911. data/spec/framework_spec/app/spec/core/encoding/list_spec.rb +43 -0
  912. data/spec/framework_spec/app/spec/core/encoding/locale_charmap_spec.rb +38 -0
  913. data/spec/framework_spec/app/spec/core/encoding/name_list_spec.rb +25 -0
  914. data/spec/framework_spec/app/spec/core/encoding/name_spec.rb +7 -0
  915. data/spec/framework_spec/app/spec/core/encoding/names_spec.rb +37 -0
  916. data/spec/framework_spec/app/spec/core/encoding/replicate_spec.rb +34 -0
  917. data/spec/framework_spec/app/spec/core/encoding/shared/name.rb +15 -0
  918. data/spec/framework_spec/app/spec/core/encoding/to_s_spec.rb +7 -0
  919. data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/destination_encoding_name_spec.rb +17 -0
  920. data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/destination_encoding_spec.rb +17 -0
  921. data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/error_char_spec.rb +29 -0
  922. data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/source_encoding_name_spec.rb +30 -0
  923. data/spec/framework_spec/app/spec/core/encoding/undefined_conversion_error/source_encoding_spec.rb +31 -0
  924. data/spec/framework_spec/app/spec/core/enumerable/all_spec.rb +2 -15
  925. data/spec/framework_spec/app/spec/core/enumerable/any_spec.rb +2 -7
  926. data/spec/framework_spec/app/spec/core/enumerable/chunk_spec.rb +44 -0
  927. data/spec/framework_spec/app/spec/core/enumerable/collect_concat_spec.rb +9 -0
  928. data/spec/framework_spec/app/spec/core/enumerable/collect_spec.rb +4 -4
  929. data/spec/framework_spec/app/spec/core/enumerable/count_spec.rb +4 -4
  930. data/spec/framework_spec/app/spec/core/enumerable/cycle_spec.rb +20 -6
  931. data/spec/framework_spec/app/spec/core/enumerable/detect_spec.rb +4 -4
  932. data/spec/framework_spec/app/spec/core/enumerable/drop_spec.rb +2 -2
  933. data/spec/framework_spec/app/spec/core/enumerable/drop_while_spec.rb +5 -5
  934. data/spec/framework_spec/app/spec/core/enumerable/each_cons_spec.rb +8 -8
  935. data/spec/framework_spec/app/spec/core/enumerable/each_entry_spec.rb +40 -0
  936. data/spec/framework_spec/app/spec/core/enumerable/each_slice_spec.rb +8 -8
  937. data/spec/framework_spec/app/spec/core/enumerable/each_with_index_spec.rb +15 -15
  938. data/spec/framework_spec/app/spec/core/enumerable/each_with_object_spec.rb +6 -6
  939. data/spec/framework_spec/app/spec/core/enumerable/entries_spec.rb +5 -5
  940. data/spec/framework_spec/app/spec/core/enumerable/find_all_spec.rb +4 -4
  941. data/spec/framework_spec/app/spec/core/enumerable/{find_index.rb → find_index_spec.rb} +5 -5
  942. data/spec/framework_spec/app/spec/core/enumerable/find_spec.rb +4 -4
  943. data/spec/framework_spec/app/spec/core/enumerable/first_spec.rb +6 -6
  944. data/spec/framework_spec/app/spec/core/enumerable/fixtures/classes.rb +67 -16
  945. data/spec/framework_spec/app/spec/core/enumerable/flat_map_spec.rb +9 -0
  946. data/spec/framework_spec/app/spec/core/enumerable/grep_spec.rb +12 -7
  947. data/spec/framework_spec/app/spec/core/enumerable/group_by_spec.rb +5 -5
  948. data/spec/framework_spec/app/spec/core/enumerable/include_spec.rb +4 -4
  949. data/spec/framework_spec/app/spec/core/enumerable/inject_spec.rb +4 -4
  950. data/spec/framework_spec/app/spec/core/enumerable/map_spec.rb +5 -5
  951. data/spec/framework_spec/app/spec/core/enumerable/max_by_spec.rb +4 -4
  952. data/spec/framework_spec/app/spec/core/enumerable/max_spec.rb +27 -12
  953. data/spec/framework_spec/app/spec/core/enumerable/member_spec.rb +4 -4
  954. data/spec/framework_spec/app/spec/core/enumerable/min_by_spec.rb +4 -4
  955. data/spec/framework_spec/app/spec/core/enumerable/min_spec.rb +27 -11
  956. data/spec/framework_spec/app/spec/core/enumerable/minmax_by_spec.rb +4 -4
  957. data/spec/framework_spec/app/spec/core/enumerable/minmax_spec.rb +26 -10
  958. data/spec/framework_spec/app/spec/core/enumerable/none_spec.rb +42 -0
  959. data/spec/framework_spec/app/spec/core/enumerable/one_spec.rb +5 -0
  960. data/spec/framework_spec/app/spec/core/enumerable/partition_spec.rb +4 -4
  961. data/spec/framework_spec/app/spec/core/enumerable/reduce_spec.rb +4 -4
  962. data/spec/framework_spec/app/spec/core/enumerable/reject_spec.rb +5 -5
  963. data/spec/framework_spec/app/spec/core/enumerable/reverse_each_spec.rb +4 -4
  964. data/spec/framework_spec/app/spec/core/enumerable/select_spec.rb +4 -4
  965. data/spec/framework_spec/app/spec/core/enumerable/shared/collect.rb +13 -5
  966. data/spec/framework_spec/app/spec/core/enumerable/shared/collect_concat.rb +27 -0
  967. data/spec/framework_spec/app/spec/core/enumerable/shared/entries.rb +5 -1
  968. data/spec/framework_spec/app/spec/core/enumerable/shared/find.rb +24 -11
  969. data/spec/framework_spec/app/spec/core/enumerable/shared/find_all.rb +9 -3
  970. data/spec/framework_spec/app/spec/core/enumerable/shared/include.rb +14 -3
  971. data/spec/framework_spec/app/spec/core/enumerable/shared/inject.rb +8 -8
  972. data/spec/framework_spec/app/spec/core/enumerable/shared/take.rb +5 -3
  973. data/spec/framework_spec/app/spec/core/enumerable/slice_before_spec.rb +77 -0
  974. data/spec/framework_spec/app/spec/core/enumerable/sort_by_spec.rb +10 -2
  975. data/spec/framework_spec/app/spec/core/enumerable/sort_spec.rb +22 -9
  976. data/spec/framework_spec/app/spec/core/enumerable/take_spec.rb +5 -5
  977. data/spec/framework_spec/app/spec/core/enumerable/take_while_spec.rb +3 -3
  978. data/spec/framework_spec/app/spec/core/enumerable/to_a_spec.rb +5 -5
  979. data/spec/framework_spec/app/spec/core/enumerable/zip_spec.rb +18 -7
  980. data/spec/framework_spec/app/spec/core/enumerator/each_spec.rb +7 -0
  981. data/spec/framework_spec/app/spec/core/enumerator/each_with_index_spec.rb +25 -0
  982. data/spec/framework_spec/app/spec/core/enumerator/each_with_object_spec.rb +8 -0
  983. data/spec/framework_spec/app/spec/core/enumerator/enum_for_spec.rb +9 -0
  984. data/spec/framework_spec/app/spec/core/enumerator/feed_spec.rb +7 -0
  985. data/spec/framework_spec/app/spec/core/enumerator/generator/each_spec.rb +7 -0
  986. data/spec/framework_spec/app/spec/core/enumerator/inspect_spec.rb +7 -0
  987. data/spec/framework_spec/app/spec/core/enumerator/new_spec.rb +28 -0
  988. data/spec/framework_spec/app/spec/core/enumerator/next_spec.rb +9 -0
  989. data/spec/framework_spec/app/spec/core/enumerator/next_values_spec.rb +7 -0
  990. data/spec/framework_spec/app/spec/core/enumerator/peek_spec.rb +38 -0
  991. data/spec/framework_spec/app/spec/core/enumerator/peek_values_spec.rb +7 -0
  992. data/spec/framework_spec/app/spec/core/enumerator/rewind_spec.rb +27 -0
  993. data/spec/framework_spec/app/spec/core/enumerator/to_enum_spec.rb +9 -0
  994. data/spec/framework_spec/app/spec/core/enumerator/with_index_spec.rb +68 -0
  995. data/spec/framework_spec/app/spec/core/enumerator/with_object_spec.rb +8 -0
  996. data/spec/framework_spec/app/spec/core/enumerator/yielder/append_spec.rb +19 -0
  997. data/spec/framework_spec/app/spec/core/enumerator/yielder/yield_spec.rb +18 -0
  998. data/spec/framework_spec/app/spec/core/env/clear_spec.rb +19 -13
  999. data/spec/framework_spec/app/spec/core/env/delete_if_spec.rb +26 -28
  1000. data/spec/framework_spec/app/spec/core/env/delete_spec.rb +1 -1
  1001. data/spec/framework_spec/app/spec/core/env/each_key_spec.rb +39 -33
  1002. data/spec/framework_spec/app/spec/core/env/each_pair_spec.rb +6 -7
  1003. data/spec/framework_spec/app/spec/core/env/each_spec.rb +6 -7
  1004. data/spec/framework_spec/app/spec/core/env/each_value_spec.rb +39 -33
  1005. data/spec/framework_spec/app/spec/core/env/element_reference_spec.rb +25 -2
  1006. data/spec/framework_spec/app/spec/core/env/element_set_spec.rb +2 -2
  1007. data/spec/framework_spec/app/spec/core/env/empty_spec.rb +23 -24
  1008. data/spec/framework_spec/app/spec/core/env/fetch_spec.rb +6 -1
  1009. data/spec/framework_spec/app/spec/core/env/has_key_spec.rb +2 -2
  1010. data/spec/framework_spec/app/spec/core/env/has_value_spec.rb +6 -7
  1011. data/spec/framework_spec/app/spec/core/env/include_spec.rb +2 -2
  1012. data/spec/framework_spec/app/spec/core/env/index_spec.rb +6 -1
  1013. data/spec/framework_spec/app/spec/core/env/indexes_spec.rb +1 -1
  1014. data/spec/framework_spec/app/spec/core/env/indices_spec.rb +1 -1
  1015. data/spec/framework_spec/app/spec/core/env/inspect_spec.rb +11 -12
  1016. data/spec/framework_spec/app/spec/core/env/invert_spec.rb +12 -13
  1017. data/spec/framework_spec/app/spec/core/env/key_spec.rb +9 -2
  1018. data/spec/framework_spec/app/spec/core/env/keys_spec.rb +16 -9
  1019. data/spec/framework_spec/app/spec/core/env/length_spec.rb +6 -7
  1020. data/spec/framework_spec/app/spec/core/env/member_spec.rb +2 -2
  1021. data/spec/framework_spec/app/spec/core/env/rehash_spec.rb +1 -1
  1022. data/spec/framework_spec/app/spec/core/env/reject_spec.rb +88 -89
  1023. data/spec/framework_spec/app/spec/core/env/replace_spec.rb +15 -16
  1024. data/spec/framework_spec/app/spec/core/env/select_spec.rb +32 -23
  1025. data/spec/framework_spec/app/spec/core/env/shared/each.rb +10 -1
  1026. data/spec/framework_spec/app/spec/core/env/shared/key.rb +15 -0
  1027. data/spec/framework_spec/app/spec/core/env/shared/store.rb +18 -12
  1028. data/spec/framework_spec/app/spec/core/env/shared/value.rb +7 -0
  1029. data/spec/framework_spec/app/spec/core/env/shift_spec.rb +27 -28
  1030. data/spec/framework_spec/app/spec/core/env/size_spec.rb +6 -7
  1031. data/spec/framework_spec/app/spec/core/env/store_spec.rb +2 -2
  1032. data/spec/framework_spec/app/spec/core/env/to_a_spec.rb +21 -13
  1033. data/spec/framework_spec/app/spec/core/env/to_hash_spec.rb +12 -13
  1034. data/spec/framework_spec/app/spec/core/env/to_s_spec.rb +1 -1
  1035. data/spec/framework_spec/app/spec/core/env/update_spec.rb +1 -2
  1036. data/spec/framework_spec/app/spec/core/env/value_spec.rb +6 -7
  1037. data/spec/framework_spec/app/spec/core/env/values_at_spec.rb +7 -1
  1038. data/spec/framework_spec/app/spec/core/env/values_spec.rb +23 -16
  1039. data/spec/framework_spec/app/spec/core/exception/args_spec.rb +5 -0
  1040. data/spec/framework_spec/app/spec/core/exception/arguments_spec.rb +1 -1
  1041. data/spec/framework_spec/app/spec/core/exception/backtrace_spec.rb +51 -1
  1042. data/spec/framework_spec/app/spec/core/exception/case_compare_spec.rb +5 -1
  1043. data/spec/framework_spec/app/spec/core/exception/destination_encoding_name_spec.rb +13 -0
  1044. data/spec/framework_spec/app/spec/core/exception/destination_encoding_spec.rb +13 -0
  1045. data/spec/framework_spec/app/spec/core/exception/equal_value_spec.rb +84 -0
  1046. data/spec/framework_spec/app/spec/core/exception/errno_spec.rb +16 -1
  1047. data/spec/framework_spec/app/spec/core/exception/error_bytes_spec.rb +7 -0
  1048. data/spec/framework_spec/app/spec/core/exception/error_char_spec.rb +7 -0
  1049. data/spec/framework_spec/app/spec/core/exception/exception_spec.rb +69 -5
  1050. data/spec/framework_spec/app/spec/core/exception/exit_value_spec.rb +5 -1
  1051. data/spec/framework_spec/app/spec/core/exception/fixtures/common.rb +33 -1
  1052. data/spec/framework_spec/app/spec/core/exception/incomplete_input_spec.rb +7 -0
  1053. data/spec/framework_spec/app/spec/core/exception/initialize_spec.rb +1 -1
  1054. data/spec/framework_spec/app/spec/core/exception/inspect_spec.rb +2 -2
  1055. data/spec/framework_spec/app/spec/core/exception/io_error_spec.rb +1 -1
  1056. data/spec/framework_spec/app/spec/core/exception/message_spec.rb +14 -4
  1057. data/spec/framework_spec/app/spec/core/exception/name_error_spec.rb +2 -2
  1058. data/spec/framework_spec/app/spec/core/exception/name_spec.rb +5 -1
  1059. data/spec/framework_spec/app/spec/core/exception/new_spec.rb +3 -2
  1060. data/spec/framework_spec/app/spec/core/exception/no_method_error_spec.rb +5 -5
  1061. data/spec/framework_spec/app/spec/core/exception/range_error_spec.rb +1 -1
  1062. data/spec/framework_spec/app/spec/core/exception/readagain_bytes_spec.rb +7 -0
  1063. data/spec/framework_spec/app/spec/core/exception/reason_spec.rb +5 -0
  1064. data/spec/framework_spec/app/spec/core/exception/result_spec.rb +7 -0
  1065. data/spec/framework_spec/app/spec/core/exception/script_error_spec.rb +1 -1
  1066. data/spec/framework_spec/app/spec/core/exception/set_backtrace_spec.rb +10 -1
  1067. data/spec/framework_spec/app/spec/core/exception/shared/new.rb +5 -0
  1068. data/spec/framework_spec/app/spec/core/exception/shared/to_s.rb +3 -3
  1069. data/spec/framework_spec/app/spec/core/exception/signm_spec.rb +5 -0
  1070. data/spec/framework_spec/app/spec/core/exception/signo_spec.rb +5 -0
  1071. data/spec/framework_spec/app/spec/core/exception/source_encoding_name_spec.rb +13 -0
  1072. data/spec/framework_spec/app/spec/core/exception/source_encoding_spec.rb +13 -0
  1073. data/spec/framework_spec/app/spec/core/exception/standard_error_spec.rb +56 -55
  1074. data/spec/framework_spec/app/spec/core/exception/status_spec.rb +5 -0
  1075. data/spec/framework_spec/app/spec/core/exception/success_spec.rb +5 -0
  1076. data/spec/framework_spec/app/spec/core/exception/system_call_error_spec.rb +14 -5
  1077. data/spec/framework_spec/app/spec/core/exception/to_s_spec.rb +7 -3
  1078. data/spec/framework_spec/app/spec/core/exception/to_str_spec.rb +5 -5
  1079. data/spec/framework_spec/app/spec/core/false/and_spec.rb +1 -1
  1080. data/spec/framework_spec/app/spec/core/false/inspect_spec.rb +1 -1
  1081. data/spec/framework_spec/app/spec/core/false/or_spec.rb +1 -1
  1082. data/spec/framework_spec/app/spec/core/false/to_s_spec.rb +1 -1
  1083. data/spec/framework_spec/app/spec/core/false/xor_spec.rb +1 -1
  1084. data/spec/framework_spec/app/spec/core/fiber/new_spec.rb +48 -49
  1085. data/spec/framework_spec/app/spec/core/fiber/resume_spec.rb +39 -23
  1086. data/spec/framework_spec/app/spec/core/fiber/yield_spec.rb +34 -36
  1087. data/spec/framework_spec/app/spec/core/file/absolute_path_spec.rb +31 -0
  1088. data/spec/framework_spec/app/spec/core/file/atime_spec.rb +12 -5
  1089. data/spec/framework_spec/app/spec/core/file/basename_spec.rb +25 -26
  1090. data/spec/framework_spec/app/spec/core/file/blockdev_spec.rb +2 -2
  1091. data/spec/framework_spec/app/spec/core/file/chardev_spec.rb +2 -2
  1092. data/spec/framework_spec/app/spec/core/file/chmod_spec.rb +14 -10
  1093. data/spec/framework_spec/app/spec/core/file/chown_spec.rb +22 -4
  1094. data/spec/framework_spec/app/spec/core/file/constants/constants_spec.rb +7 -7
  1095. data/spec/framework_spec/app/spec/core/file/constants_spec.rb +1 -1
  1096. data/spec/framework_spec/app/spec/core/file/ctime_spec.rb +13 -6
  1097. data/spec/framework_spec/app/spec/core/file/delete_spec.rb +2 -2
  1098. data/spec/framework_spec/app/spec/core/file/directory_spec.rb +6 -2
  1099. data/spec/framework_spec/app/spec/core/file/dirname_spec.rb +12 -2
  1100. data/spec/framework_spec/app/spec/core/file/executable_real_spec.rb +2 -2
  1101. data/spec/framework_spec/app/spec/core/file/executable_spec.rb +2 -2
  1102. data/spec/framework_spec/app/spec/core/file/exist_spec.rb +2 -2
  1103. data/spec/framework_spec/app/spec/core/file/exists_spec.rb +2 -2
  1104. data/spec/framework_spec/app/spec/core/file/expand_path_spec.rb +133 -31
  1105. data/spec/framework_spec/app/spec/core/file/extname_spec.rb +7 -1
  1106. data/spec/framework_spec/app/spec/core/file/file_spec.rb +2 -2
  1107. data/spec/framework_spec/app/spec/core/file/fixtures/common.rb +22 -0
  1108. data/spec/framework_spec/app/spec/core/file/fixtures/file_types.rb +3 -9
  1109. data/spec/framework_spec/app/spec/core/file/flock_spec.rb +56 -18
  1110. data/spec/framework_spec/app/spec/core/file/fnmatch_spec.rb +2 -2
  1111. data/spec/framework_spec/app/spec/core/file/ftype_spec.rb +43 -45
  1112. data/spec/framework_spec/app/spec/core/file/grpowned_spec.rb +2 -2
  1113. data/spec/framework_spec/app/spec/core/file/identical_spec.rb +2 -2
  1114. data/spec/framework_spec/app/spec/core/file/initialize_spec.rb +25 -1
  1115. data/spec/framework_spec/app/spec/core/file/inspect_spec.rb +14 -7
  1116. data/spec/framework_spec/app/spec/core/file/join_spec.rb +37 -10
  1117. data/spec/framework_spec/app/spec/core/file/lchmod_spec.rb +13 -13
  1118. data/spec/framework_spec/app/spec/core/file/lchown_spec.rb +12 -6
  1119. data/spec/framework_spec/app/spec/core/file/link_spec.rb +7 -9
  1120. data/spec/framework_spec/app/spec/core/file/lstat_spec.rb +16 -11
  1121. data/spec/framework_spec/app/spec/core/file/mtime_spec.rb +7 -6
  1122. data/spec/framework_spec/app/spec/core/file/new_spec.rb +60 -44
  1123. data/spec/framework_spec/app/spec/core/file/open_spec.rb +104 -120
  1124. data/spec/framework_spec/app/spec/core/file/owned_spec.rb +26 -3
  1125. data/spec/framework_spec/app/spec/core/file/path_spec.rb +11 -10
  1126. data/spec/framework_spec/app/spec/core/file/pipe_spec.rb +25 -3
  1127. data/spec/framework_spec/app/spec/core/file/read_spec.rb +6 -0
  1128. data/spec/framework_spec/app/spec/core/file/readable_real_spec.rb +2 -2
  1129. data/spec/framework_spec/app/spec/core/file/readable_spec.rb +2 -2
  1130. data/spec/framework_spec/app/spec/core/file/readlink_spec.rb +17 -13
  1131. data/spec/framework_spec/app/spec/core/file/realdirpath_spec.rb +7 -0
  1132. data/spec/framework_spec/app/spec/core/file/realpath_spec.rb +7 -0
  1133. data/spec/framework_spec/app/spec/core/file/rename_spec.rb +24 -27
  1134. data/spec/framework_spec/app/spec/core/file/reopen_spec.rb +27 -0
  1135. data/spec/framework_spec/app/spec/core/file/setgid_spec.rb +21 -21
  1136. data/spec/framework_spec/app/spec/core/file/setuid_spec.rb +21 -21
  1137. data/spec/framework_spec/app/spec/core/file/shared/fnmatch.rb +11 -5
  1138. data/spec/framework_spec/app/spec/core/file/shared/open.rb +9 -0
  1139. data/spec/framework_spec/app/spec/core/file/shared/read.rb +21 -0
  1140. data/spec/framework_spec/app/spec/core/file/shared/stat.rb +31 -17
  1141. data/spec/framework_spec/app/spec/core/file/shared/unlink.rb +8 -4
  1142. data/spec/framework_spec/app/spec/core/file/size_spec.rb +111 -22
  1143. data/spec/framework_spec/app/spec/core/file/socket_spec.rb +24 -3
  1144. data/spec/framework_spec/app/spec/core/file/split_spec.rb +12 -7
  1145. data/spec/framework_spec/app/spec/core/file/stat/atime_spec.rb +6 -6
  1146. data/spec/framework_spec/app/spec/core/file/stat/blksize_spec.rb +6 -5
  1147. data/spec/framework_spec/app/spec/core/file/stat/blockdev_spec.rb +3 -3
  1148. data/spec/framework_spec/app/spec/core/file/stat/blocks_spec.rb +6 -5
  1149. data/spec/framework_spec/app/spec/core/file/stat/chardev_spec.rb +4 -4
  1150. data/spec/framework_spec/app/spec/core/file/stat/comparison_spec.rb +14 -9
  1151. data/spec/framework_spec/app/spec/core/file/stat/ctime_spec.rb +6 -6
  1152. data/spec/framework_spec/app/spec/core/file/stat/dev_major_spec.rb +12 -3
  1153. data/spec/framework_spec/app/spec/core/file/stat/dev_minor_spec.rb +13 -3
  1154. data/spec/framework_spec/app/spec/core/file/stat/dev_spec.rb +10 -2
  1155. data/spec/framework_spec/app/spec/core/file/stat/directory_spec.rb +3 -3
  1156. data/spec/framework_spec/app/spec/core/file/stat/executable_real_spec.rb +3 -3
  1157. data/spec/framework_spec/app/spec/core/file/stat/executable_spec.rb +3 -3
  1158. data/spec/framework_spec/app/spec/core/file/stat/file_spec.rb +3 -3
  1159. data/spec/framework_spec/app/spec/core/file/stat/ftype_spec.rb +14 -17
  1160. data/spec/framework_spec/app/spec/core/file/stat/gid_spec.rb +5 -5
  1161. data/spec/framework_spec/app/spec/core/file/stat/grpowned_spec.rb +3 -3
  1162. data/spec/framework_spec/app/spec/core/file/stat/ino_spec.rb +6 -5
  1163. data/spec/framework_spec/app/spec/core/file/stat/inspect_spec.rb +8 -10
  1164. data/spec/framework_spec/app/spec/core/file/stat/mode_spec.rb +6 -5
  1165. data/spec/framework_spec/app/spec/core/file/stat/mtime_spec.rb +6 -6
  1166. data/spec/framework_spec/app/spec/core/file/stat/new_spec.rb +11 -4
  1167. data/spec/framework_spec/app/spec/core/file/stat/nlink_spec.rb +5 -6
  1168. data/spec/framework_spec/app/spec/core/file/stat/owned_spec.rb +24 -4
  1169. data/spec/framework_spec/app/spec/core/file/stat/pipe_spec.rb +25 -4
  1170. data/spec/framework_spec/app/spec/core/file/stat/rdev_major_spec.rb +11 -3
  1171. data/spec/framework_spec/app/spec/core/file/stat/rdev_minor_spec.rb +13 -3
  1172. data/spec/framework_spec/app/spec/core/file/stat/rdev_spec.rb +10 -2
  1173. data/spec/framework_spec/app/spec/core/file/stat/readable_real_spec.rb +3 -3
  1174. data/spec/framework_spec/app/spec/core/file/stat/readable_spec.rb +3 -3
  1175. data/spec/framework_spec/app/spec/core/file/stat/setgid_spec.rb +3 -3
  1176. data/spec/framework_spec/app/spec/core/file/stat/setuid_spec.rb +3 -3
  1177. data/spec/framework_spec/app/spec/core/file/stat/size_spec.rb +18 -4
  1178. data/spec/framework_spec/app/spec/core/file/stat/socket_spec.rb +3 -3
  1179. data/spec/framework_spec/app/spec/core/file/stat/sticky_spec.rb +3 -3
  1180. data/spec/framework_spec/app/spec/core/file/stat/symlink_spec.rb +3 -3
  1181. data/spec/framework_spec/app/spec/core/file/stat/uid_spec.rb +5 -5
  1182. data/spec/framework_spec/app/spec/core/file/stat/world_readable_spec.rb +15 -0
  1183. data/spec/framework_spec/app/spec/core/file/stat/world_writable_spec.rb +17 -0
  1184. data/spec/framework_spec/app/spec/core/file/stat/writable_real_spec.rb +3 -3
  1185. data/spec/framework_spec/app/spec/core/file/stat/writable_spec.rb +3 -3
  1186. data/spec/framework_spec/app/spec/core/file/stat/zero_spec.rb +3 -3
  1187. data/spec/framework_spec/app/spec/core/file/stat_spec.rb +23 -6
  1188. data/spec/framework_spec/app/spec/core/file/sticky_spec.rb +49 -3
  1189. data/spec/framework_spec/app/spec/core/file/symlink_spec.rb +18 -11
  1190. data/spec/framework_spec/app/spec/core/file/to_path_spec.rb +48 -0
  1191. data/spec/framework_spec/app/spec/core/file/truncate_spec.rb +34 -39
  1192. data/spec/framework_spec/app/spec/core/file/umask_spec.rb +20 -21
  1193. data/spec/framework_spec/app/spec/core/file/unlink_spec.rb +2 -2
  1194. data/spec/framework_spec/app/spec/core/file/utime_spec.rb +20 -5
  1195. data/spec/framework_spec/app/spec/core/file/world_readable_spec.rb +14 -0
  1196. data/spec/framework_spec/app/spec/core/file/world_writable_spec.rb +16 -0
  1197. data/spec/framework_spec/app/spec/core/file/writable_real_spec.rb +2 -2
  1198. data/spec/framework_spec/app/spec/core/file/writable_spec.rb +2 -2
  1199. data/spec/framework_spec/app/spec/core/file/zero_spec.rb +2 -2
  1200. data/spec/framework_spec/app/spec/core/filetest/blockdev_spec.rb +2 -2
  1201. data/spec/framework_spec/app/spec/core/filetest/chardev_spec.rb +3 -3
  1202. data/spec/framework_spec/app/spec/core/filetest/directory_spec.rb +6 -2
  1203. data/spec/framework_spec/app/spec/core/filetest/executable_real_spec.rb +2 -2
  1204. data/spec/framework_spec/app/spec/core/filetest/executable_spec.rb +2 -2
  1205. data/spec/framework_spec/app/spec/core/filetest/exist_spec.rb +2 -2
  1206. data/spec/framework_spec/app/spec/core/filetest/exists_spec.rb +2 -2
  1207. data/spec/framework_spec/app/spec/core/filetest/file_spec.rb +6 -2
  1208. data/spec/framework_spec/app/spec/core/filetest/grpowned_spec.rb +6 -2
  1209. data/spec/framework_spec/app/spec/core/filetest/identical_spec.rb +2 -2
  1210. data/spec/framework_spec/app/spec/core/filetest/owned_spec.rb +6 -2
  1211. data/spec/framework_spec/app/spec/core/filetest/pipe_spec.rb +6 -2
  1212. data/spec/framework_spec/app/spec/core/filetest/readable_real_spec.rb +2 -2
  1213. data/spec/framework_spec/app/spec/core/filetest/readable_spec.rb +2 -2
  1214. data/spec/framework_spec/app/spec/core/filetest/setgid_spec.rb +6 -2
  1215. data/spec/framework_spec/app/spec/core/filetest/setuid_spec.rb +6 -2
  1216. data/spec/framework_spec/app/spec/core/filetest/size_spec.rb +31 -4
  1217. data/spec/framework_spec/app/spec/core/filetest/socket_spec.rb +6 -2
  1218. data/spec/framework_spec/app/spec/core/filetest/sticky_spec.rb +3 -2
  1219. data/spec/framework_spec/app/spec/core/filetest/symlink_spec.rb +5 -2
  1220. data/spec/framework_spec/app/spec/core/filetest/world_readable_spec.rb +7 -0
  1221. data/spec/framework_spec/app/spec/core/filetest/world_writable_spec.rb +7 -0
  1222. data/spec/framework_spec/app/spec/core/filetest/writable_real_spec.rb +2 -2
  1223. data/spec/framework_spec/app/spec/core/filetest/writable_spec.rb +2 -2
  1224. data/spec/framework_spec/app/spec/core/filetest/zero_spec.rb +2 -2
  1225. data/spec/framework_spec/app/spec/core/fixnum/abs_spec.rb +4 -8
  1226. data/spec/framework_spec/app/spec/core/fixnum/bit_and_spec.rb +6 -6
  1227. data/spec/framework_spec/app/spec/core/fixnum/bit_or_spec.rb +6 -6
  1228. data/spec/framework_spec/app/spec/core/fixnum/bit_xor_spec.rb +9 -9
  1229. data/spec/framework_spec/app/spec/core/fixnum/case_compare_spec.rb +7 -0
  1230. data/spec/framework_spec/app/spec/core/fixnum/coerce_spec.rb +2 -2
  1231. data/spec/framework_spec/app/spec/core/fixnum/comparison_spec.rb +3 -3
  1232. data/spec/framework_spec/app/spec/core/fixnum/complement_spec.rb +1 -1
  1233. data/spec/framework_spec/app/spec/core/fixnum/div_spec.rb +17 -7
  1234. data/spec/framework_spec/app/spec/core/fixnum/divide_spec.rb +7 -3
  1235. data/spec/framework_spec/app/spec/core/fixnum/divmod_spec.rb +16 -6
  1236. data/spec/framework_spec/app/spec/core/fixnum/element_reference_spec.rb +45 -19
  1237. data/spec/framework_spec/app/spec/core/fixnum/equal_value_spec.rb +5 -5
  1238. data/spec/framework_spec/app/spec/core/fixnum/even_spec.rb +7 -0
  1239. data/spec/framework_spec/app/spec/core/fixnum/exponent_spec.rb +59 -7
  1240. data/spec/framework_spec/app/spec/core/fixnum/fdiv_spec.rb +7 -0
  1241. data/spec/framework_spec/app/spec/core/fixnum/gt_spec.rb +4 -4
  1242. data/spec/framework_spec/app/spec/core/fixnum/gte_spec.rb +3 -3
  1243. data/spec/framework_spec/app/spec/core/fixnum/hash_spec.rb +1 -1
  1244. data/spec/framework_spec/app/spec/core/fixnum/id2name_spec.rb +15 -13
  1245. data/spec/framework_spec/app/spec/core/fixnum/induced_from_spec.rb +36 -35
  1246. data/spec/framework_spec/app/spec/core/fixnum/left_shift_spec.rb +72 -42
  1247. data/spec/framework_spec/app/spec/core/fixnum/lt_spec.rb +4 -4
  1248. data/spec/framework_spec/app/spec/core/fixnum/lte_spec.rb +3 -3
  1249. data/spec/framework_spec/app/spec/core/fixnum/magnitude_spec.rb +8 -0
  1250. data/spec/framework_spec/app/spec/core/fixnum/minus_spec.rb +3 -3
  1251. data/spec/framework_spec/app/spec/core/fixnum/modulo_spec.rb +2 -2
  1252. data/spec/framework_spec/app/spec/core/fixnum/multiply_spec.rb +3 -3
  1253. data/spec/framework_spec/app/spec/core/fixnum/odd_spec.rb +7 -0
  1254. data/spec/framework_spec/app/spec/core/fixnum/plus_spec.rb +1 -1
  1255. data/spec/framework_spec/app/spec/core/fixnum/quo_spec.rb +16 -6
  1256. data/spec/framework_spec/app/spec/core/fixnum/right_shift_spec.rb +84 -40
  1257. data/spec/framework_spec/app/spec/core/fixnum/shared/abs.rb +9 -0
  1258. data/spec/framework_spec/app/spec/core/fixnum/shared/modulo.rb +17 -7
  1259. data/spec/framework_spec/app/spec/core/fixnum/size_spec.rb +1 -1
  1260. data/spec/framework_spec/app/spec/core/fixnum/succ_spec.rb +7 -0
  1261. data/spec/framework_spec/app/spec/core/fixnum/to_f_spec.rb +1 -1
  1262. data/spec/framework_spec/app/spec/core/fixnum/to_s_spec.rb +2 -2
  1263. data/spec/framework_spec/app/spec/core/fixnum/to_sym_spec.rb +16 -14
  1264. data/spec/framework_spec/app/spec/core/fixnum/uminus_spec.rb +1 -1
  1265. data/spec/framework_spec/app/spec/core/fixnum/zero_spec.rb +2 -2
  1266. data/spec/framework_spec/app/spec/core/float/abs_spec.rb +2 -6
  1267. data/spec/framework_spec/app/spec/core/float/angle_spec.rb +7 -0
  1268. data/spec/framework_spec/app/spec/core/float/arg_spec.rb +7 -0
  1269. data/spec/framework_spec/app/spec/core/float/case_compare_spec.rb +7 -0
  1270. data/spec/framework_spec/app/spec/core/float/ceil_spec.rb +1 -1
  1271. data/spec/framework_spec/app/spec/core/float/coerce_spec.rb +1 -1
  1272. data/spec/framework_spec/app/spec/core/float/comparison_spec.rb +52 -1
  1273. data/spec/framework_spec/app/spec/core/float/constants_spec.rb +25 -17
  1274. data/spec/framework_spec/app/spec/core/float/denominator_spec.rb +31 -0
  1275. data/spec/framework_spec/app/spec/core/float/divide_spec.rb +7 -3
  1276. data/spec/framework_spec/app/spec/core/float/divmod_spec.rb +26 -1
  1277. data/spec/framework_spec/app/spec/core/float/eql_spec.rb +1 -1
  1278. data/spec/framework_spec/app/spec/core/float/equal_value_spec.rb +1 -1
  1279. data/spec/framework_spec/app/spec/core/float/exponent_spec.rb +10 -2
  1280. data/spec/framework_spec/app/spec/core/float/fdiv_spec.rb +68 -0
  1281. data/spec/framework_spec/app/spec/core/float/finite_spec.rb +3 -1
  1282. data/spec/framework_spec/app/spec/core/float/fixtures/coerce.rb +15 -0
  1283. data/spec/framework_spec/app/spec/core/float/floor_spec.rb +1 -1
  1284. data/spec/framework_spec/app/spec/core/float/gt_spec.rb +1 -1
  1285. data/spec/framework_spec/app/spec/core/float/gte_spec.rb +1 -1
  1286. data/spec/framework_spec/app/spec/core/float/hash_spec.rb +1 -1
  1287. data/spec/framework_spec/app/spec/core/float/induced_from_spec.rb +38 -37
  1288. data/spec/framework_spec/app/spec/core/float/infinite_spec.rb +1 -1
  1289. data/spec/framework_spec/app/spec/core/float/lt_spec.rb +1 -1
  1290. data/spec/framework_spec/app/spec/core/float/lte_spec.rb +1 -1
  1291. data/spec/framework_spec/app/spec/core/float/magnitude_spec.rb +7 -0
  1292. data/spec/framework_spec/app/spec/core/float/minus_spec.rb +1 -1
  1293. data/spec/framework_spec/app/spec/core/float/modulo_spec.rb +2 -2
  1294. data/spec/framework_spec/app/spec/core/float/multiply_spec.rb +4 -4
  1295. data/spec/framework_spec/app/spec/core/float/nan_spec.rb +1 -1
  1296. data/spec/framework_spec/app/spec/core/float/numerator_spec.rb +47 -0
  1297. data/spec/framework_spec/app/spec/core/float/phase_spec.rb +7 -0
  1298. data/spec/framework_spec/app/spec/core/float/plus_spec.rb +1 -1
  1299. data/spec/framework_spec/app/spec/core/float/quo_spec.rb +7 -0
  1300. data/spec/framework_spec/app/spec/core/float/rationalize_spec.rb +40 -0
  1301. data/spec/framework_spec/app/spec/core/float/round_spec.rb +32 -6
  1302. data/spec/framework_spec/app/spec/core/float/shared/abs.rb +9 -0
  1303. data/spec/framework_spec/app/spec/core/float/shared/modulo.rb +14 -3
  1304. data/spec/framework_spec/app/spec/core/float/to_f_spec.rb +1 -1
  1305. data/spec/framework_spec/app/spec/core/float/to_i_spec.rb +2 -2
  1306. data/spec/framework_spec/app/spec/core/float/to_int_spec.rb +6 -2
  1307. data/spec/framework_spec/app/spec/core/float/to_r_spec.rb +7 -0
  1308. data/spec/framework_spec/app/spec/core/float/to_s_spec.rb +93 -18
  1309. data/spec/framework_spec/app/spec/core/float/truncate_spec.rb +2 -2
  1310. data/spec/framework_spec/app/spec/core/float/uminus_spec.rb +1 -1
  1311. data/spec/framework_spec/app/spec/core/float/uplus_spec.rb +4 -4
  1312. data/spec/framework_spec/app/spec/core/float/zero_spec.rb +1 -1
  1313. data/spec/framework_spec/app/spec/core/gc/count_spec.rb +7 -0
  1314. data/spec/framework_spec/app/spec/core/gc/disable_spec.rb +17 -1
  1315. data/spec/framework_spec/app/spec/core/gc/enable_spec.rb +12 -1
  1316. data/spec/framework_spec/app/spec/core/gc/garbage_collect_spec.rb +15 -1
  1317. data/spec/framework_spec/app/spec/core/gc/profiler/clear_spec.rb +7 -0
  1318. data/spec/framework_spec/app/spec/core/gc/profiler/disable_spec.rb +7 -0
  1319. data/spec/framework_spec/app/spec/core/gc/profiler/enable_spec.rb +7 -0
  1320. data/spec/framework_spec/app/spec/core/gc/profiler/enabled_spec.rb +7 -0
  1321. data/spec/framework_spec/app/spec/core/gc/profiler/report_spec.rb +7 -0
  1322. data/spec/framework_spec/app/spec/core/gc/profiler/result_spec.rb +7 -0
  1323. data/spec/framework_spec/app/spec/core/gc/profiler/total_time_spec.rb +7 -0
  1324. data/spec/framework_spec/app/spec/core/gc/start_spec.rb +8 -1
  1325. data/spec/framework_spec/app/spec/core/gc/stress_spec.rb +30 -0
  1326. data/spec/framework_spec/app/spec/core/hash/allocate_spec.rb +2 -2
  1327. data/spec/framework_spec/app/spec/core/hash/assoc_spec.rb +43 -0
  1328. data/spec/framework_spec/app/spec/core/hash/clear_spec.rb +2 -2
  1329. data/spec/framework_spec/app/spec/core/hash/clone_spec.rb +1 -1
  1330. data/spec/framework_spec/app/spec/core/hash/compare_by_identity_spec.rb +109 -0
  1331. data/spec/framework_spec/app/spec/core/hash/constructor_spec.rb +8 -4
  1332. data/spec/framework_spec/app/spec/core/hash/default_proc_spec.rb +24 -4
  1333. data/spec/framework_spec/app/spec/core/hash/default_spec.rb +4 -4
  1334. data/spec/framework_spec/app/spec/core/hash/delete_if_spec.rb +3 -3
  1335. data/spec/framework_spec/app/spec/core/hash/delete_spec.rb +2 -2
  1336. data/spec/framework_spec/app/spec/core/hash/each_key_spec.rb +3 -3
  1337. data/spec/framework_spec/app/spec/core/hash/each_pair_spec.rb +5 -5
  1338. data/spec/framework_spec/app/spec/core/hash/each_spec.rb +4 -4
  1339. data/spec/framework_spec/app/spec/core/hash/each_value_spec.rb +3 -3
  1340. data/spec/framework_spec/app/spec/core/hash/element_reference_spec.rb +111 -115
  1341. data/spec/framework_spec/app/spec/core/hash/element_set_spec.rb +7 -8
  1342. data/spec/framework_spec/app/spec/core/hash/empty_spec.rb +2 -2
  1343. data/spec/framework_spec/app/spec/core/hash/eql_spec.rb +18 -19
  1344. data/spec/framework_spec/app/spec/core/hash/equal_value_spec.rb +18 -14
  1345. data/spec/framework_spec/app/spec/core/hash/fetch_spec.rb +2 -2
  1346. data/spec/framework_spec/app/spec/core/hash/fixtures/classes.rb +1 -1
  1347. data/spec/framework_spec/app/spec/core/hash/flatten_spec.rb +64 -0
  1348. data/spec/framework_spec/app/spec/core/hash/has_key_spec.rb +8 -9
  1349. data/spec/framework_spec/app/spec/core/hash/has_value_spec.rb +3 -3
  1350. data/spec/framework_spec/app/spec/core/hash/hash_spec.rb +20 -1
  1351. data/spec/framework_spec/app/spec/core/hash/include_spec.rb +7 -8
  1352. data/spec/framework_spec/app/spec/core/hash/index_spec.rb +3 -3
  1353. data/spec/framework_spec/app/spec/core/hash/indexes_spec.rb +3 -3
  1354. data/spec/framework_spec/app/spec/core/hash/indices_spec.rb +3 -3
  1355. data/spec/framework_spec/app/spec/core/hash/initialize_copy_spec.rb +3 -3
  1356. data/spec/framework_spec/app/spec/core/hash/initialize_spec.rb +8 -3
  1357. data/spec/framework_spec/app/spec/core/hash/inspect_spec.rb +3 -41
  1358. data/spec/framework_spec/app/spec/core/hash/invert_spec.rb +2 -2
  1359. data/spec/framework_spec/app/spec/core/hash/keep_if_spec.rb +31 -0
  1360. data/spec/framework_spec/app/spec/core/hash/key_spec.rb +14 -15
  1361. data/spec/framework_spec/app/spec/core/hash/keys_spec.rb +4 -4
  1362. data/spec/framework_spec/app/spec/core/hash/length_spec.rb +3 -3
  1363. data/spec/framework_spec/app/spec/core/hash/member_spec.rb +7 -8
  1364. data/spec/framework_spec/app/spec/core/hash/merge_spec.rb +10 -17
  1365. data/spec/framework_spec/app/spec/core/hash/new_spec.rb +2 -2
  1366. data/spec/framework_spec/app/spec/core/hash/rassoc_spec.rb +39 -0
  1367. data/spec/framework_spec/app/spec/core/hash/rehash_spec.rb +51 -60
  1368. data/spec/framework_spec/app/spec/core/hash/reject_spec.rb +18 -12
  1369. data/spec/framework_spec/app/spec/core/hash/replace_spec.rb +3 -3
  1370. data/spec/framework_spec/app/spec/core/hash/select_spec.rb +38 -5
  1371. data/spec/framework_spec/app/spec/core/hash/shared/each.rb +46 -6
  1372. data/spec/framework_spec/app/spec/core/hash/shared/eql.rb +14 -1
  1373. data/spec/framework_spec/app/spec/core/hash/shared/index.rb +2 -2
  1374. data/spec/framework_spec/app/spec/core/hash/shared/iteration.rb +2 -2
  1375. data/spec/framework_spec/app/spec/core/hash/shared/key.rb +5 -3
  1376. data/spec/framework_spec/app/spec/core/hash/shared/replace.rb +22 -11
  1377. data/spec/framework_spec/app/spec/core/hash/shared/store.rb +14 -1
  1378. data/spec/framework_spec/app/spec/core/hash/shared/to_s.rb +22 -21
  1379. data/spec/framework_spec/app/spec/core/hash/shared/update.rb +27 -8
  1380. data/spec/framework_spec/app/spec/core/hash/shift_spec.rb +3 -3
  1381. data/spec/framework_spec/app/spec/core/hash/size_spec.rb +3 -3
  1382. data/spec/framework_spec/app/spec/core/hash/sort_spec.rb +2 -2
  1383. data/spec/framework_spec/app/spec/core/hash/store_spec.rb +7 -8
  1384. data/spec/framework_spec/app/spec/core/hash/to_a_spec.rb +16 -3
  1385. data/spec/framework_spec/app/spec/core/hash/to_hash_spec.rb +2 -2
  1386. data/spec/framework_spec/app/spec/core/hash/to_s_spec.rb +5 -5
  1387. data/spec/framework_spec/app/spec/core/hash/try_convert_spec.rb +32 -0
  1388. data/spec/framework_spec/app/spec/core/hash/update_spec.rb +3 -3
  1389. data/spec/framework_spec/app/spec/core/hash/value_spec.rb +3 -3
  1390. data/spec/framework_spec/app/spec/core/hash/values_at_spec.rb +4 -4
  1391. data/spec/framework_spec/app/spec/core/hash/values_spec.rb +3 -3
  1392. data/spec/framework_spec/app/spec/core/integer/ceil_spec.rb +2 -2
  1393. data/spec/framework_spec/app/spec/core/integer/chr_spec.rb +141 -18
  1394. data/spec/framework_spec/app/spec/core/integer/denominator_spec.rb +22 -0
  1395. data/spec/framework_spec/app/spec/core/integer/downto_spec.rb +5 -5
  1396. data/spec/framework_spec/app/spec/core/integer/even_spec.rb +2 -2
  1397. data/spec/framework_spec/app/spec/core/integer/floor_spec.rb +2 -2
  1398. data/spec/framework_spec/app/spec/core/integer/gcd_spec.rb +60 -0
  1399. data/spec/framework_spec/app/spec/core/integer/gcdlcm_spec.rb +55 -0
  1400. data/spec/framework_spec/app/spec/core/integer/induced_from_spec.rb +43 -42
  1401. data/spec/framework_spec/app/spec/core/integer/integer_spec.rb +2 -2
  1402. data/spec/framework_spec/app/spec/core/integer/lcm_spec.rb +60 -0
  1403. data/spec/framework_spec/app/spec/core/integer/next_spec.rb +2 -2
  1404. data/spec/framework_spec/app/spec/core/integer/numerator_spec.rb +20 -0
  1405. data/spec/framework_spec/app/spec/core/integer/odd_spec.rb +1 -1
  1406. data/spec/framework_spec/app/spec/core/integer/ord_spec.rb +4 -4
  1407. data/spec/framework_spec/app/spec/core/integer/pred_spec.rb +3 -3
  1408. data/spec/framework_spec/app/spec/core/integer/rationalize_spec.rb +7 -0
  1409. data/spec/framework_spec/app/spec/core/integer/round_spec.rb +35 -2
  1410. data/spec/framework_spec/app/spec/core/integer/shared/next.rb +1 -1
  1411. data/spec/framework_spec/app/spec/core/integer/succ_spec.rb +2 -2
  1412. data/spec/framework_spec/app/spec/core/integer/times_spec.rb +9 -9
  1413. data/spec/framework_spec/app/spec/core/integer/to_i_spec.rb +2 -2
  1414. data/spec/framework_spec/app/spec/core/integer/to_int_spec.rb +2 -2
  1415. data/spec/framework_spec/app/spec/core/integer/to_r_spec.rb +28 -0
  1416. data/spec/framework_spec/app/spec/core/integer/truncate_spec.rb +2 -2
  1417. data/spec/framework_spec/app/spec/core/integer/upto_spec.rb +8 -8
  1418. data/spec/framework_spec/app/spec/core/io/binmode_spec.rb +21 -5
  1419. data/spec/framework_spec/app/spec/core/io/binread_spec.rb +7 -0
  1420. data/spec/framework_spec/app/spec/core/io/bytes_spec.rb +27 -16
  1421. data/spec/framework_spec/app/spec/core/io/chars_spec.rb +35 -19
  1422. data/spec/framework_spec/app/spec/core/io/close_on_exec_spec.rb +13 -0
  1423. data/spec/framework_spec/app/spec/core/io/close_read_spec.rb +29 -29
  1424. data/spec/framework_spec/app/spec/core/io/close_spec.rb +15 -19
  1425. data/spec/framework_spec/app/spec/core/io/close_write_spec.rb +13 -14
  1426. data/spec/framework_spec/app/spec/core/io/closed_spec.rb +15 -7
  1427. data/spec/framework_spec/app/spec/core/io/codepoints_spec.rb +29 -0
  1428. data/spec/framework_spec/app/spec/core/io/constants_spec.rb +1 -1
  1429. data/spec/framework_spec/app/spec/core/io/copy_stream_spec.rb +50 -0
  1430. data/spec/framework_spec/app/spec/core/io/dup_spec.rb +5 -5
  1431. data/spec/framework_spec/app/spec/core/io/each_byte_spec.rb +32 -26
  1432. data/spec/framework_spec/app/spec/core/io/each_char_spec.rb +35 -22
  1433. data/spec/framework_spec/app/spec/core/io/each_codepoint_spec.rb +34 -0
  1434. data/spec/framework_spec/app/spec/core/io/each_line_spec.rb +7 -5
  1435. data/spec/framework_spec/app/spec/core/io/each_spec.rb +8 -6
  1436. data/spec/framework_spec/app/spec/core/io/eof_spec.rb +59 -45
  1437. data/spec/framework_spec/app/spec/core/io/external_encoding_spec.rb +7 -0
  1438. data/spec/framework_spec/app/spec/core/io/fcntl_spec.rb +5 -5
  1439. data/spec/framework_spec/app/spec/core/io/fdatasync_spec.rb +7 -0
  1440. data/spec/framework_spec/app/spec/core/io/fileno_spec.rb +5 -5
  1441. data/spec/framework_spec/app/spec/core/io/fixtures/classes.rb +57 -15
  1442. data/spec/framework_spec/app/spec/core/io/fixtures/empty.txt +0 -0
  1443. data/spec/framework_spec/app/spec/core/io/fixtures/{gets.txt → lines.txt} +0 -0
  1444. data/spec/framework_spec/app/spec/core/io/fixtures/reopen_stdout.rb +3 -0
  1445. data/spec/framework_spec/app/spec/core/io/flush_spec.rb +5 -5
  1446. data/spec/framework_spec/app/spec/core/io/for_fd_spec.rb +6 -2
  1447. data/spec/framework_spec/app/spec/core/io/foreach_spec.rb +132 -90
  1448. data/spec/framework_spec/app/spec/core/io/fsync_spec.rb +15 -15
  1449. data/spec/framework_spec/app/spec/core/io/getbyte_spec.rb +27 -21
  1450. data/spec/framework_spec/app/spec/core/io/getc_spec.rb +30 -24
  1451. data/spec/framework_spec/app/spec/core/io/gets_spec.rb +144 -127
  1452. data/spec/framework_spec/app/spec/core/io/initialize_copy_spec.rb +1 -1
  1453. data/spec/framework_spec/app/spec/core/io/initialize_spec.rb +33 -16
  1454. data/spec/framework_spec/app/spec/core/io/inspect_spec.rb +4 -15
  1455. data/spec/framework_spec/app/spec/core/io/internal_encoding_spec.rb +7 -0
  1456. data/spec/framework_spec/app/spec/core/io/io_spec.rb +1 -5
  1457. data/spec/framework_spec/app/spec/core/io/ioctl_spec.rb +42 -5
  1458. data/spec/framework_spec/app/spec/core/io/isatty_spec.rb +2 -2
  1459. data/spec/framework_spec/app/spec/core/io/lineno_spec.rb +65 -52
  1460. data/spec/framework_spec/app/spec/core/io/lines_spec.rb +28 -22
  1461. data/spec/framework_spec/app/spec/core/io/new_spec.rb +6 -2
  1462. data/spec/framework_spec/app/spec/core/io/open_spec.rb +52 -49
  1463. data/spec/framework_spec/app/spec/core/io/output_spec.rb +22 -14
  1464. data/spec/framework_spec/app/spec/core/io/pid_spec.rb +20 -11
  1465. data/spec/framework_spec/app/spec/core/io/pipe_spec.rb +10 -1
  1466. data/spec/framework_spec/app/spec/core/io/popen_spec.rb +107 -37
  1467. data/spec/framework_spec/app/spec/core/io/pos_spec.rb +5 -44
  1468. data/spec/framework_spec/app/spec/core/io/print_spec.rb +56 -59
  1469. data/spec/framework_spec/app/spec/core/io/printf_spec.rb +25 -19
  1470. data/spec/framework_spec/app/spec/core/io/putc_spec.rb +5 -43
  1471. data/spec/framework_spec/app/spec/core/io/puts_spec.rb +28 -16
  1472. data/spec/framework_spec/app/spec/core/io/read_nonblock_spec.rb +54 -3
  1473. data/spec/framework_spec/app/spec/core/io/read_spec.rb +127 -50
  1474. data/spec/framework_spec/app/spec/core/io/readbyte_spec.rb +29 -0
  1475. data/spec/framework_spec/app/spec/core/io/readchar_spec.rb +31 -31
  1476. data/spec/framework_spec/app/spec/core/io/readline_spec.rb +29 -25
  1477. data/spec/framework_spec/app/spec/core/io/readlines_spec.rb +174 -146
  1478. data/spec/framework_spec/app/spec/core/io/readpartial_spec.rb +16 -4
  1479. data/spec/framework_spec/app/spec/core/io/reopen_spec.rb +226 -82
  1480. data/spec/framework_spec/app/spec/core/io/rewind_spec.rb +8 -9
  1481. data/spec/framework_spec/app/spec/core/io/seek_spec.rb +21 -29
  1482. data/spec/framework_spec/app/spec/core/io/select_spec.rb +34 -7
  1483. data/spec/framework_spec/app/spec/core/io/set_encoding_spec.rb +7 -0
  1484. data/spec/framework_spec/app/spec/core/io/shared/codepoints.rb +46 -0
  1485. data/spec/framework_spec/app/spec/core/io/shared/each.rb +97 -112
  1486. data/spec/framework_spec/app/spec/core/io/shared/gets_ascii.rb +27 -0
  1487. data/spec/framework_spec/app/spec/core/io/shared/new.rb +74 -99
  1488. data/spec/framework_spec/app/spec/core/io/shared/pos.rb +43 -4
  1489. data/spec/framework_spec/app/spec/core/io/shared/tty.rb +10 -7
  1490. data/spec/framework_spec/app/spec/core/io/shared/write.rb +4 -4
  1491. data/spec/framework_spec/app/spec/core/io/stat_spec.rb +20 -7
  1492. data/spec/framework_spec/app/spec/core/io/sync_spec.rb +12 -10
  1493. data/spec/framework_spec/app/spec/core/io/sysopen_spec.rb +32 -14
  1494. data/spec/framework_spec/app/spec/core/io/sysread_spec.rb +12 -10
  1495. data/spec/framework_spec/app/spec/core/io/sysseek_spec.rb +17 -42
  1496. data/spec/framework_spec/app/spec/core/io/syswrite_spec.rb +10 -9
  1497. data/spec/framework_spec/app/spec/core/io/tell_spec.rb +3 -3
  1498. data/spec/framework_spec/app/spec/core/io/to_i_spec.rb +5 -5
  1499. data/spec/framework_spec/app/spec/core/io/to_io_spec.rb +15 -10
  1500. data/spec/framework_spec/app/spec/core/io/try_convert_spec.rb +47 -0
  1501. data/spec/framework_spec/app/spec/core/io/tty_spec.rb +2 -2
  1502. data/spec/framework_spec/app/spec/core/io/ungetbyte_spec.rb +7 -0
  1503. data/spec/framework_spec/app/spec/core/io/ungetc_spec.rb +55 -48
  1504. data/spec/framework_spec/app/spec/core/io/write_nonblock_spec.rb +6 -5
  1505. data/spec/framework_spec/app/spec/core/io/write_spec.rb +17 -12
  1506. data/spec/framework_spec/app/spec/core/kernel/Array_spec.rb +76 -31
  1507. data/spec/framework_spec/app/spec/core/kernel/Complex_spec.rb +7 -0
  1508. data/spec/framework_spec/app/spec/core/kernel/Float_spec.rb +18 -13
  1509. data/spec/framework_spec/app/spec/core/kernel/Integer_spec.rb +243 -7
  1510. data/spec/framework_spec/app/spec/core/kernel/Rational_spec.rb +7 -0
  1511. data/spec/framework_spec/app/spec/core/kernel/String_spec.rb +65 -33
  1512. data/spec/framework_spec/app/spec/core/kernel/__callee___spec.rb +9 -0
  1513. data/spec/framework_spec/app/spec/core/kernel/__id___spec.rb +4 -4
  1514. data/spec/framework_spec/app/spec/core/kernel/__method___spec.rb +41 -0
  1515. data/spec/framework_spec/app/spec/core/kernel/__send___spec.rb +2 -2
  1516. data/spec/framework_spec/app/spec/core/kernel/abort_spec.rb +6 -3
  1517. data/spec/framework_spec/app/spec/core/kernel/at_exit_spec.rb +16 -11
  1518. data/spec/framework_spec/app/spec/core/kernel/autoload_spec.rb +127 -114
  1519. data/spec/framework_spec/app/spec/core/kernel/backtick_spec.rb +24 -24
  1520. data/spec/framework_spec/app/spec/core/kernel/binding_spec.rb +45 -23
  1521. data/spec/framework_spec/app/spec/core/kernel/block_given_spec.rb +3 -3
  1522. data/spec/framework_spec/app/spec/core/kernel/callcc_spec.rb +9 -65
  1523. data/spec/framework_spec/app/spec/core/kernel/caller_spec.rb +162 -91
  1524. data/spec/framework_spec/app/spec/core/kernel/case_compare_spec.rb +2 -2
  1525. data/spec/framework_spec/app/spec/core/kernel/catch_spec.rb +70 -13
  1526. data/spec/framework_spec/app/spec/core/kernel/chomp_spec.rb +19 -15
  1527. data/spec/framework_spec/app/spec/core/kernel/chop_spec.rb +19 -15
  1528. data/spec/framework_spec/app/spec/core/kernel/class_spec.rb +2 -2
  1529. data/spec/framework_spec/app/spec/core/kernel/clone_spec.rb +8 -2
  1530. data/spec/framework_spec/app/spec/core/kernel/comparison_spec.rb +33 -0
  1531. data/spec/framework_spec/app/spec/core/kernel/const_lookup_spec.rb +7 -0
  1532. data/spec/framework_spec/app/spec/core/kernel/{define_singleton_method.rb → define_singleton_method_spec.rb} +31 -9
  1533. data/spec/framework_spec/app/spec/core/kernel/display_spec.rb +2 -2
  1534. data/spec/framework_spec/app/spec/core/kernel/dup_spec.rb +2 -2
  1535. data/spec/framework_spec/app/spec/core/kernel/enum_for_spec.rb +7 -0
  1536. data/spec/framework_spec/app/spec/core/kernel/eql_spec.rb +5 -5
  1537. data/spec/framework_spec/app/spec/core/kernel/equal_spec.rb +32 -3
  1538. data/spec/framework_spec/app/spec/core/kernel/equal_value_spec.rb +4 -4
  1539. data/spec/framework_spec/app/spec/core/kernel/eval_spec.rb +285 -182
  1540. data/spec/framework_spec/app/spec/core/kernel/exec_spec.rb +18 -5
  1541. data/spec/framework_spec/app/spec/core/kernel/exit_spec.rb +70 -4
  1542. data/spec/framework_spec/app/spec/core/kernel/extend_spec.rb +29 -7
  1543. data/spec/framework_spec/app/spec/core/kernel/fail_spec.rb +4 -4
  1544. data/spec/framework_spec/app/spec/core/kernel/fixtures/__method__.rb +25 -0
  1545. data/spec/framework_spec/app/spec/core/kernel/fixtures/autoload_d.rb +5 -0
  1546. data/spec/framework_spec/app/spec/core/kernel/fixtures/caller_fixture1.rb +1 -1
  1547. data/spec/framework_spec/app/spec/core/kernel/fixtures/classes.rb +173 -67
  1548. data/spec/framework_spec/app/spec/core/kernel/fixtures/eval_locals.rb +6 -0
  1549. data/spec/framework_spec/app/spec/core/kernel/fixtures/test.rb +80 -80
  1550. data/spec/framework_spec/app/spec/core/kernel/fork_spec.rb +10 -8
  1551. data/spec/framework_spec/app/spec/core/kernel/format_spec.rb +2 -2
  1552. data/spec/framework_spec/app/spec/core/kernel/freeze_spec.rb +75 -37
  1553. data/spec/framework_spec/app/spec/core/kernel/frozen_spec.rb +2 -2
  1554. data/spec/framework_spec/app/spec/core/kernel/getc_spec.rb +10 -8
  1555. data/spec/framework_spec/app/spec/core/kernel/gets_spec.rb +2 -2
  1556. data/spec/framework_spec/app/spec/core/kernel/global_variables_spec.rb +24 -12
  1557. data/spec/framework_spec/app/spec/core/kernel/gsub_spec.rb +76 -72
  1558. data/spec/framework_spec/app/spec/core/kernel/hash_spec.rb +2 -2
  1559. data/spec/framework_spec/app/spec/core/kernel/id_spec.rb +2 -2
  1560. data/spec/framework_spec/app/spec/core/kernel/initialize_clone_spec.rb +7 -0
  1561. data/spec/framework_spec/app/spec/core/kernel/initialize_copy_spec.rb +2 -2
  1562. data/spec/framework_spec/app/spec/core/kernel/initialize_dup_spec.rb +7 -0
  1563. data/spec/framework_spec/app/spec/core/kernel/inspect_spec.rb +2 -2
  1564. data/spec/framework_spec/app/spec/core/kernel/instance_eval_spec.rb +154 -113
  1565. data/spec/framework_spec/app/spec/core/kernel/instance_of_spec.rb +1 -1
  1566. data/spec/framework_spec/app/spec/core/kernel/instance_variable_defined_spec.rb +1 -1
  1567. data/spec/framework_spec/app/spec/core/kernel/instance_variable_get_spec.rb +16 -2
  1568. data/spec/framework_spec/app/spec/core/kernel/instance_variable_set_spec.rb +25 -12
  1569. data/spec/framework_spec/app/spec/core/kernel/instance_variables_spec.rb +48 -3
  1570. data/spec/framework_spec/app/spec/core/kernel/is_a_spec.rb +1 -1
  1571. data/spec/framework_spec/app/spec/core/kernel/iterator_spec.rb +2 -2
  1572. data/spec/framework_spec/app/spec/core/kernel/kind_of_spec.rb +1 -1
  1573. data/spec/framework_spec/app/spec/core/kernel/lambda_spec.rb +68 -7
  1574. data/spec/framework_spec/app/spec/core/kernel/load_spec.rb +22 -217
  1575. data/spec/framework_spec/app/spec/core/kernel/local_variables_spec.rb +38 -18
  1576. data/spec/framework_spec/app/spec/core/kernel/loop_spec.rb +3 -3
  1577. data/spec/framework_spec/app/spec/core/kernel/match_spec.rb +2 -2
  1578. data/spec/framework_spec/app/spec/core/kernel/method_missing_spec.rb +9 -54
  1579. data/spec/framework_spec/app/spec/core/kernel/method_spec.rb +29 -31
  1580. data/spec/framework_spec/app/spec/core/kernel/methods_spec.rb +93 -78
  1581. data/spec/framework_spec/app/spec/core/kernel/nil_spec.rb +2 -2
  1582. data/spec/framework_spec/app/spec/core/kernel/not_match_spec.rb +7 -0
  1583. data/spec/framework_spec/app/spec/core/kernel/object_id_spec.rb +4 -4
  1584. data/spec/framework_spec/app/spec/core/kernel/open_spec.rb +30 -32
  1585. data/spec/framework_spec/app/spec/core/kernel/p_spec.rb +29 -29
  1586. data/spec/framework_spec/app/spec/core/kernel/print_spec.rb +2 -2
  1587. data/spec/framework_spec/app/spec/core/kernel/printf_spec.rb +2 -2
  1588. data/spec/framework_spec/app/spec/core/kernel/private_methods_spec.rb +82 -14
  1589. data/spec/framework_spec/app/spec/core/kernel/proc_spec.rb +22 -4
  1590. data/spec/framework_spec/app/spec/core/kernel/protected_methods_spec.rb +44 -2
  1591. data/spec/framework_spec/app/spec/core/kernel/public_method_spec.rb +37 -0
  1592. data/spec/framework_spec/app/spec/core/kernel/public_methods_spec.rb +70 -12
  1593. data/spec/framework_spec/app/spec/core/kernel/public_send_spec.rb +76 -0
  1594. data/spec/framework_spec/app/spec/core/kernel/putc_spec.rb +31 -4
  1595. data/spec/framework_spec/app/spec/core/kernel/puts_spec.rb +100 -87
  1596. data/spec/framework_spec/app/spec/core/kernel/raise_spec.rb +3 -3
  1597. data/spec/framework_spec/app/spec/core/kernel/rand_spec.rb +39 -13
  1598. data/spec/framework_spec/app/spec/core/kernel/readline_spec.rb +2 -2
  1599. data/spec/framework_spec/app/spec/core/kernel/readlines_spec.rb +2 -2
  1600. data/spec/framework_spec/app/spec/core/kernel/remove_instance_variable_spec.rb +32 -2
  1601. data/spec/framework_spec/app/spec/core/kernel/require_relative_spec.rb +154 -0
  1602. data/spec/framework_spec/app/spec/core/kernel/require_spec.rb +20 -289
  1603. data/spec/framework_spec/app/spec/core/kernel/respond_to_missing_spec.rb +88 -0
  1604. data/spec/framework_spec/app/spec/core/kernel/respond_to_spec.rb +41 -33
  1605. data/spec/framework_spec/app/spec/core/kernel/scan_spec.rb +10 -8
  1606. data/spec/framework_spec/app/spec/core/kernel/select_spec.rb +2 -2
  1607. data/spec/framework_spec/app/spec/core/kernel/send_spec.rb +31 -65
  1608. data/spec/framework_spec/app/spec/core/kernel/set_trace_func_spec.rb +2 -2
  1609. data/spec/framework_spec/app/spec/core/kernel/shared/__method__.rb +6 -7
  1610. data/spec/framework_spec/app/spec/core/kernel/shared/abort.rb +26 -0
  1611. data/spec/framework_spec/app/spec/core/kernel/shared/lambda.rb +12 -25
  1612. data/spec/framework_spec/app/spec/core/kernel/shared/load.rb +93 -0
  1613. data/spec/framework_spec/app/spec/core/kernel/shared/method.rb +59 -0
  1614. data/spec/framework_spec/app/spec/core/kernel/shared/object_id.rb +22 -6
  1615. data/spec/framework_spec/app/spec/core/kernel/shared/require.rb +529 -0
  1616. data/spec/framework_spec/app/spec/core/kernel/shared/send.rb +110 -0
  1617. data/spec/framework_spec/app/spec/core/kernel/singleton_class_spec.rb +30 -0
  1618. data/spec/framework_spec/app/spec/core/kernel/singleton_method_added_spec.rb +6 -5
  1619. data/spec/framework_spec/app/spec/core/kernel/singleton_method_removed_spec.rb +5 -5
  1620. data/spec/framework_spec/app/spec/core/kernel/singleton_method_undefined_spec.rb +4 -5
  1621. data/spec/framework_spec/app/spec/core/kernel/singleton_methods_spec.rb +179 -58
  1622. data/spec/framework_spec/app/spec/core/kernel/sleep_spec.rb +18 -19
  1623. data/spec/framework_spec/app/spec/core/kernel/spawn_spec.rb +152 -0
  1624. data/spec/framework_spec/app/spec/core/kernel/split_spec.rb +10 -8
  1625. data/spec/framework_spec/app/spec/core/kernel/sprintf_spec.rb +351 -5
  1626. data/spec/framework_spec/app/spec/core/kernel/srand_spec.rb +33 -6
  1627. data/spec/framework_spec/app/spec/core/kernel/sub_spec.rb +19 -15
  1628. data/spec/framework_spec/app/spec/core/kernel/syscall_spec.rb +2 -2
  1629. data/spec/framework_spec/app/spec/core/kernel/system_spec.rb +90 -61
  1630. data/spec/framework_spec/app/spec/core/kernel/taint_spec.rb +9 -4
  1631. data/spec/framework_spec/app/spec/core/kernel/tainted_spec.rb +3 -3
  1632. data/spec/framework_spec/app/spec/core/kernel/tap_spec.rb +5 -5
  1633. data/spec/framework_spec/app/spec/core/kernel/test_spec.rb +36 -16
  1634. data/spec/framework_spec/app/spec/core/kernel/throw_spec.rb +29 -24
  1635. data/spec/framework_spec/app/spec/core/kernel/to_a_spec.rb +17 -15
  1636. data/spec/framework_spec/app/spec/core/kernel/to_enum_spec.rb +7 -0
  1637. data/spec/framework_spec/app/spec/core/kernel/to_s_spec.rb +2 -2
  1638. data/spec/framework_spec/app/spec/core/kernel/trace_var_spec.rb +2 -2
  1639. data/spec/framework_spec/app/spec/core/kernel/trap_spec.rb +2 -2
  1640. data/spec/framework_spec/app/spec/core/kernel/trust_spec.rb +2 -2
  1641. data/spec/framework_spec/app/spec/core/kernel/type_spec.rb +2 -2
  1642. data/spec/framework_spec/app/spec/core/kernel/untaint_spec.rb +2 -2
  1643. data/spec/framework_spec/app/spec/core/kernel/untrace_var_spec.rb +2 -2
  1644. data/spec/framework_spec/app/spec/core/kernel/untrust_spec.rb +2 -2
  1645. data/spec/framework_spec/app/spec/core/kernel/untrusted_spec.rb +2 -2
  1646. data/spec/framework_spec/app/spec/core/kernel/warn_spec.rb +59 -60
  1647. data/spec/framework_spec/app/spec/core/marshal/dump_spec.rb +314 -70
  1648. data/spec/framework_spec/app/spec/core/marshal/fixtures/marshal_data.rb +165 -0
  1649. data/spec/framework_spec/app/spec/core/marshal/fixtures/random.dump +0 -0
  1650. data/spec/framework_spec/app/spec/core/marshal/load_spec.rb +483 -170
  1651. data/spec/framework_spec/app/spec/core/marshal/restore_spec.rb +5 -1
  1652. data/spec/framework_spec/app/spec/core/matchdata/begin_spec.rb +1 -1
  1653. data/spec/framework_spec/app/spec/core/matchdata/captures_spec.rb +1 -1
  1654. data/spec/framework_spec/app/spec/core/matchdata/element_reference_spec.rb +3 -1
  1655. data/spec/framework_spec/app/spec/core/matchdata/end_spec.rb +2 -2
  1656. data/spec/framework_spec/app/spec/core/matchdata/eql_spec.rb +8 -0
  1657. data/spec/framework_spec/app/spec/core/matchdata/equal_value_spec.rb +8 -0
  1658. data/spec/framework_spec/app/spec/core/matchdata/hash_spec.rb +7 -0
  1659. data/spec/framework_spec/app/spec/core/matchdata/initialize_copy_spec.rb +1 -1
  1660. data/spec/framework_spec/app/spec/core/matchdata/inspect_spec.rb +19 -1
  1661. data/spec/framework_spec/app/spec/core/matchdata/length_spec.rb +2 -2
  1662. data/spec/framework_spec/app/spec/core/matchdata/names_spec.rb +3 -0
  1663. data/spec/framework_spec/app/spec/core/matchdata/offset_spec.rb +1 -1
  1664. data/spec/framework_spec/app/spec/core/matchdata/post_match_spec.rb +2 -2
  1665. data/spec/framework_spec/app/spec/core/matchdata/pre_match_spec.rb +1 -1
  1666. data/spec/framework_spec/app/spec/core/matchdata/regexp_spec.rb +15 -0
  1667. data/spec/framework_spec/app/spec/core/matchdata/select_spec.rb +1 -1
  1668. data/spec/framework_spec/app/spec/core/matchdata/shared/eql.rb +26 -0
  1669. data/spec/framework_spec/app/spec/core/matchdata/size_spec.rb +2 -2
  1670. data/spec/framework_spec/app/spec/core/matchdata/string_spec.rb +1 -1
  1671. data/spec/framework_spec/app/spec/core/matchdata/to_a_spec.rb +2 -2
  1672. data/spec/framework_spec/app/spec/core/matchdata/to_s_spec.rb +1 -1
  1673. data/spec/framework_spec/app/spec/core/matchdata/values_at_spec.rb +1 -1
  1674. data/spec/framework_spec/app/spec/core/matchdata/versions/element_reference_1.9.rb +35 -0
  1675. data/spec/framework_spec/app/spec/core/matchdata/versions/names_1.9.rb +33 -0
  1676. data/spec/framework_spec/app/spec/core/math/acos_spec.rb +31 -31
  1677. data/spec/framework_spec/app/spec/core/math/acosh_spec.rb +6 -6
  1678. data/spec/framework_spec/app/spec/core/math/asin_spec.rb +15 -15
  1679. data/spec/framework_spec/app/spec/core/math/asinh_spec.rb +7 -7
  1680. data/spec/framework_spec/app/spec/core/math/atan2_spec.rb +6 -6
  1681. data/spec/framework_spec/app/spec/core/math/atan_spec.rb +13 -13
  1682. data/spec/framework_spec/app/spec/core/math/atanh_spec.rb +8 -64
  1683. data/spec/framework_spec/app/spec/core/math/cbrt_spec.rb +7 -0
  1684. data/spec/framework_spec/app/spec/core/math/constants_spec.rb +3 -3
  1685. data/spec/framework_spec/app/spec/core/math/cos_spec.rb +13 -13
  1686. data/spec/framework_spec/app/spec/core/math/cosh_spec.rb +7 -7
  1687. data/spec/framework_spec/app/spec/core/math/erf_spec.rb +14 -14
  1688. data/spec/framework_spec/app/spec/core/math/erfc_spec.rb +12 -12
  1689. data/spec/framework_spec/app/spec/core/math/exp_spec.rb +7 -7
  1690. data/spec/framework_spec/app/spec/core/math/fixtures/classes.rb +2 -2
  1691. data/spec/framework_spec/app/spec/core/math/frexp_spec.rb +6 -6
  1692. data/spec/framework_spec/app/spec/core/math/gamma_spec.rb +71 -0
  1693. data/spec/framework_spec/app/spec/core/math/hypot_spec.rb +11 -11
  1694. data/spec/framework_spec/app/spec/core/math/ldexp_spec.rb +10 -10
  1695. data/spec/framework_spec/app/spec/core/math/lgamma_spec.rb +87 -0
  1696. data/spec/framework_spec/app/spec/core/math/log10_spec.rb +7 -7
  1697. data/spec/framework_spec/app/spec/core/math/log2_spec.rb +30 -3
  1698. data/spec/framework_spec/app/spec/core/math/log_spec.rb +30 -11
  1699. data/spec/framework_spec/app/spec/core/math/sin_spec.rb +15 -15
  1700. data/spec/framework_spec/app/spec/core/math/sinh_spec.rb +8 -8
  1701. data/spec/framework_spec/app/spec/core/math/sqrt_spec.rb +5 -5
  1702. data/spec/framework_spec/app/spec/core/math/tan_spec.rb +6 -6
  1703. data/spec/framework_spec/app/spec/core/math/tanh_spec.rb +6 -6
  1704. data/spec/framework_spec/app/spec/core/method/arity_spec.rb +9 -2
  1705. data/spec/framework_spec/app/spec/core/method/call_spec.rb +3 -3
  1706. data/spec/framework_spec/app/spec/core/method/clone_spec.rb +2 -2
  1707. data/spec/framework_spec/app/spec/core/method/element_reference_spec.rb +3 -3
  1708. data/spec/framework_spec/app/spec/core/method/eql_spec.rb +8 -0
  1709. data/spec/framework_spec/app/spec/core/method/equal_value_spec.rb +3 -40
  1710. data/spec/framework_spec/app/spec/core/method/fixtures/classes.rb +104 -13
  1711. data/spec/framework_spec/app/spec/core/method/fixtures/classes_1.9.rb +12 -0
  1712. data/spec/framework_spec/app/spec/core/method/hash_spec.rb +7 -0
  1713. data/spec/framework_spec/app/spec/core/method/inspect_spec.rb +2 -2
  1714. data/spec/framework_spec/app/spec/core/method/name_spec.rb +19 -5
  1715. data/spec/framework_spec/app/spec/core/method/owner_spec.rb +4 -4
  1716. data/spec/framework_spec/app/spec/core/method/parameters_spec.rb +3 -0
  1717. data/spec/framework_spec/app/spec/core/method/receiver_spec.rb +4 -4
  1718. data/spec/framework_spec/app/spec/core/method/shared/call.rb +2 -2
  1719. data/spec/framework_spec/app/spec/core/method/shared/eql.rb +102 -0
  1720. data/spec/framework_spec/app/spec/core/method/shared/to_s.rb +5 -5
  1721. data/spec/framework_spec/app/spec/core/method/source_location_spec.rb +50 -0
  1722. data/spec/framework_spec/app/spec/core/method/to_proc_spec.rb +20 -2
  1723. data/spec/framework_spec/app/spec/core/method/to_s_spec.rb +2 -2
  1724. data/spec/framework_spec/app/spec/core/method/unbind_spec.rb +3 -3
  1725. data/spec/framework_spec/app/spec/core/method/versions/parameters_1.9.rb +189 -0
  1726. data/spec/framework_spec/app/spec/core/module/alias_method_spec.rb +20 -8
  1727. data/spec/framework_spec/app/spec/core/module/allocate_spec.rb +2 -2
  1728. data/spec/framework_spec/app/spec/core/module/ancestors_spec.rb +3 -3
  1729. data/spec/framework_spec/app/spec/core/module/append_features_spec.rb +15 -4
  1730. data/spec/framework_spec/app/spec/core/module/attr_accessor_spec.rb +16 -7
  1731. data/spec/framework_spec/app/spec/core/module/attr_reader_spec.rb +14 -5
  1732. data/spec/framework_spec/app/spec/core/module/attr_spec.rb +61 -63
  1733. data/spec/framework_spec/app/spec/core/module/attr_writer_spec.rb +23 -12
  1734. data/spec/framework_spec/app/spec/core/module/autoload_spec.rb +177 -84
  1735. data/spec/framework_spec/app/spec/core/module/case_compare_spec.rb +4 -4
  1736. data/spec/framework_spec/app/spec/core/module/class_eval_spec.rb +7 -8
  1737. data/spec/framework_spec/app/spec/core/module/class_exec_spec.rb +7 -0
  1738. data/spec/framework_spec/app/spec/core/module/class_variable_defined_spec.rb +22 -7
  1739. data/spec/framework_spec/app/spec/core/module/class_variable_get_spec.rb +27 -12
  1740. data/spec/framework_spec/app/spec/core/module/class_variable_set_spec.rb +37 -15
  1741. data/spec/framework_spec/app/spec/core/module/class_variables_spec.rb +50 -17
  1742. data/spec/framework_spec/app/spec/core/module/comparison_spec.rb +6 -6
  1743. data/spec/framework_spec/app/spec/core/module/const_defined_spec.rb +41 -5
  1744. data/spec/framework_spec/app/spec/core/module/const_get_spec.rb +14 -2
  1745. data/spec/framework_spec/app/spec/core/module/const_missing_spec.rb +8 -2
  1746. data/spec/framework_spec/app/spec/core/module/const_set_spec.rb +2 -2
  1747. data/spec/framework_spec/app/spec/core/module/constants_spec.rb +26 -2
  1748. data/spec/framework_spec/app/spec/core/module/define_method_spec.rb +283 -15
  1749. data/spec/framework_spec/app/spec/core/module/eql_spec.rb +3 -3
  1750. data/spec/framework_spec/app/spec/core/module/equal_spec.rb +3 -3
  1751. data/spec/framework_spec/app/spec/core/module/equal_value_spec.rb +3 -3
  1752. data/spec/framework_spec/app/spec/core/module/extend_object_spec.rb +23 -28
  1753. data/spec/framework_spec/app/spec/core/module/extended_spec.rb +18 -10
  1754. data/spec/framework_spec/app/spec/core/module/fixtures/autoload.rb +1 -1
  1755. data/spec/framework_spec/app/spec/core/module/fixtures/autoload_ex1.rb +16 -0
  1756. data/spec/framework_spec/app/spec/core/module/fixtures/autoload_k.rb +3 -1
  1757. data/spec/framework_spec/app/spec/core/module/fixtures/autoload_s.rb +5 -0
  1758. data/spec/framework_spec/app/spec/core/module/fixtures/autoload_w2.rb +1 -0
  1759. data/spec/framework_spec/app/spec/core/module/fixtures/classes.rb +97 -0
  1760. data/spec/framework_spec/app/spec/core/module/fixtures/name.rb +10 -0
  1761. data/spec/framework_spec/app/spec/core/module/freeze_spec.rb +33 -13
  1762. data/spec/framework_spec/app/spec/core/module/gt_spec.rb +5 -5
  1763. data/spec/framework_spec/app/spec/core/module/gte_spec.rb +4 -4
  1764. data/spec/framework_spec/app/spec/core/module/include_spec.rb +159 -33
  1765. data/spec/framework_spec/app/spec/core/module/included_modules_spec.rb +2 -2
  1766. data/spec/framework_spec/app/spec/core/module/included_spec.rb +12 -4
  1767. data/spec/framework_spec/app/spec/core/module/initialize_copy_spec.rb +2 -2
  1768. data/spec/framework_spec/app/spec/core/module/initialize_spec.rb +3 -3
  1769. data/spec/framework_spec/app/spec/core/module/instance_method_spec.rb +16 -7
  1770. data/spec/framework_spec/app/spec/core/module/instance_methods_spec.rb +51 -17
  1771. data/spec/framework_spec/app/spec/core/module/lt_spec.rb +5 -5
  1772. data/spec/framework_spec/app/spec/core/module/lte_spec.rb +4 -4
  1773. data/spec/framework_spec/app/spec/core/module/method_added_spec.rb +8 -8
  1774. data/spec/framework_spec/app/spec/core/module/method_defined_spec.rb +13 -6
  1775. data/spec/framework_spec/app/spec/core/module/method_removed_spec.rb +4 -4
  1776. data/spec/framework_spec/app/spec/core/module/method_undefined_spec.rb +4 -4
  1777. data/spec/framework_spec/app/spec/core/module/module_eval_spec.rb +7 -8
  1778. data/spec/framework_spec/app/spec/core/module/module_exec_spec.rb +7 -0
  1779. data/spec/framework_spec/app/spec/core/module/module_function_spec.rb +82 -76
  1780. data/spec/framework_spec/app/spec/core/module/name_spec.rb +24 -6
  1781. data/spec/framework_spec/app/spec/core/module/nesting_spec.rb +13 -9
  1782. data/spec/framework_spec/app/spec/core/module/new_spec.rb +3 -3
  1783. data/spec/framework_spec/app/spec/core/module/private_class_method_spec.rb +4 -4
  1784. data/spec/framework_spec/app/spec/core/module/private_instance_methods_spec.rb +26 -2
  1785. data/spec/framework_spec/app/spec/core/module/private_method_defined_spec.rb +16 -6
  1786. data/spec/framework_spec/app/spec/core/module/private_spec.rb +21 -3
  1787. data/spec/framework_spec/app/spec/core/module/protected_instance_methods_spec.rb +66 -18
  1788. data/spec/framework_spec/app/spec/core/module/protected_method_defined_spec.rb +40 -18
  1789. data/spec/framework_spec/app/spec/core/module/protected_spec.rb +24 -7
  1790. data/spec/framework_spec/app/spec/core/module/public_class_method_spec.rb +3 -3
  1791. data/spec/framework_spec/app/spec/core/module/public_instance_method_spec.rb +7 -0
  1792. data/spec/framework_spec/app/spec/core/module/public_instance_methods_spec.rb +38 -14
  1793. data/spec/framework_spec/app/spec/core/module/public_method_defined_spec.rb +28 -6
  1794. data/spec/framework_spec/app/spec/core/module/public_spec.rb +26 -2
  1795. data/spec/framework_spec/app/spec/core/module/remove_class_variable_spec.rb +46 -2
  1796. data/spec/framework_spec/app/spec/core/module/remove_const_spec.rb +10 -3
  1797. data/spec/framework_spec/app/spec/core/module/remove_method_spec.rb +10 -10
  1798. data/spec/framework_spec/app/spec/core/module/shared/class_eval.rb +36 -14
  1799. data/spec/framework_spec/app/spec/core/module/shared/class_exec.rb +24 -0
  1800. data/spec/framework_spec/app/spec/core/module/shared/equal_value.rb +1 -1
  1801. data/spec/framework_spec/app/spec/core/module/to_s_spec.rb +6 -2
  1802. data/spec/framework_spec/app/spec/core/module/undef_method_spec.rb +2 -2
  1803. data/spec/framework_spec/app/spec/core/mutex/lock_spec.rb +7 -0
  1804. data/spec/framework_spec/app/spec/core/mutex/locked_spec.rb +7 -0
  1805. data/spec/framework_spec/app/spec/core/mutex/sleep_spec.rb +7 -0
  1806. data/spec/framework_spec/app/spec/core/mutex/synchronize_spec.rb +7 -0
  1807. data/spec/framework_spec/app/spec/core/mutex/try_lock_spec.rb +7 -0
  1808. data/spec/framework_spec/app/spec/core/mutex/unlock_spec.rb +7 -0
  1809. data/spec/framework_spec/app/spec/core/nil/and_spec.rb +1 -1
  1810. data/spec/framework_spec/app/spec/core/nil/inspect_spec.rb +1 -1
  1811. data/spec/framework_spec/app/spec/core/nil/nil_spec.rb +1 -1
  1812. data/spec/framework_spec/app/spec/core/nil/or_spec.rb +1 -1
  1813. data/spec/framework_spec/app/spec/core/nil/rationalize_spec.rb +13 -0
  1814. data/spec/framework_spec/app/spec/core/nil/to_a_spec.rb +1 -1
  1815. data/spec/framework_spec/app/spec/core/nil/to_c_spec.rb +7 -0
  1816. data/spec/framework_spec/app/spec/core/nil/to_f_spec.rb +2 -2
  1817. data/spec/framework_spec/app/spec/core/nil/to_i_spec.rb +2 -2
  1818. data/spec/framework_spec/app/spec/core/nil/to_r_spec.rb +9 -0
  1819. data/spec/framework_spec/app/spec/core/nil/to_s_spec.rb +1 -1
  1820. data/spec/framework_spec/app/spec/core/nil/xor_spec.rb +1 -1
  1821. data/spec/framework_spec/app/spec/core/numeric/abs2_spec.rb +36 -0
  1822. data/spec/framework_spec/app/spec/core/numeric/abs_spec.rb +3 -17
  1823. data/spec/framework_spec/app/spec/core/numeric/angle_spec.rb +8 -0
  1824. data/spec/framework_spec/app/spec/core/numeric/arg_spec.rb +8 -0
  1825. data/spec/framework_spec/app/spec/core/numeric/ceil_spec.rb +10 -9
  1826. data/spec/framework_spec/app/spec/core/numeric/coerce_spec.rb +23 -6
  1827. data/spec/framework_spec/app/spec/core/numeric/comparison_spec.rb +35 -6
  1828. data/spec/framework_spec/app/spec/core/numeric/conj_spec.rb +8 -0
  1829. data/spec/framework_spec/app/spec/core/numeric/conjugate_spec.rb +8 -0
  1830. data/spec/framework_spec/app/spec/core/numeric/denominator_spec.rb +26 -0
  1831. data/spec/framework_spec/app/spec/core/numeric/div_spec.rb +22 -10
  1832. data/spec/framework_spec/app/spec/core/numeric/divmod_spec.rb +19 -8
  1833. data/spec/framework_spec/app/spec/core/numeric/eql_spec.rb +5 -5
  1834. data/spec/framework_spec/app/spec/core/numeric/fdiv_spec.rb +37 -0
  1835. data/spec/framework_spec/app/spec/core/numeric/fixtures/classes.rb +16 -4
  1836. data/spec/framework_spec/app/spec/core/numeric/floor_spec.rb +5 -5
  1837. data/spec/framework_spec/app/spec/core/numeric/i_spec.rb +17 -0
  1838. data/spec/framework_spec/app/spec/core/numeric/imag_spec.rb +8 -0
  1839. data/spec/framework_spec/app/spec/core/numeric/imaginary_spec.rb +8 -0
  1840. data/spec/framework_spec/app/spec/core/numeric/initialize_copy_spec.rb +5 -5
  1841. data/spec/framework_spec/app/spec/core/numeric/integer_spec.rb +5 -5
  1842. data/spec/framework_spec/app/spec/core/numeric/magnitude_spec.rb +7 -0
  1843. data/spec/framework_spec/app/spec/core/numeric/modulo_spec.rb +33 -9
  1844. data/spec/framework_spec/app/spec/core/numeric/nonzero_spec.rb +6 -6
  1845. data/spec/framework_spec/app/spec/core/numeric/numerator_spec.rb +35 -0
  1846. data/spec/framework_spec/app/spec/core/numeric/phase_spec.rb +8 -0
  1847. data/spec/framework_spec/app/spec/core/numeric/polar_spec.rb +8 -0
  1848. data/spec/framework_spec/app/spec/core/numeric/quo_spec.rb +5 -5
  1849. data/spec/framework_spec/app/spec/core/numeric/rationalize_spec.rb +32 -0
  1850. data/spec/framework_spec/app/spec/core/numeric/real_spec.rb +14 -0
  1851. data/spec/framework_spec/app/spec/core/numeric/rect_spec.rb +8 -0
  1852. data/spec/framework_spec/app/spec/core/numeric/rectangular_spec.rb +8 -0
  1853. data/spec/framework_spec/app/spec/core/numeric/remainder_spec.rb +11 -11
  1854. data/spec/framework_spec/app/spec/core/numeric/round_spec.rb +5 -5
  1855. data/spec/framework_spec/app/spec/core/numeric/shared/abs.rb +19 -0
  1856. data/spec/framework_spec/app/spec/core/numeric/shared/rect.rb +48 -0
  1857. data/spec/framework_spec/app/spec/core/numeric/singleton_method_added_spec.rb +9 -9
  1858. data/spec/framework_spec/app/spec/core/numeric/step_spec.rb +215 -162
  1859. data/spec/framework_spec/app/spec/core/numeric/to_c_spec.rb +47 -0
  1860. data/spec/framework_spec/app/spec/core/numeric/to_int_spec.rb +5 -5
  1861. data/spec/framework_spec/app/spec/core/numeric/truncate_spec.rb +4 -4
  1862. data/spec/framework_spec/app/spec/core/numeric/uminus_spec.rb +9 -9
  1863. data/spec/framework_spec/app/spec/core/numeric/uplus_spec.rb +4 -4
  1864. data/spec/framework_spec/app/spec/core/numeric/zero_spec.rb +5 -5
  1865. data/spec/framework_spec/app/spec/core/object/clone_spec.rb +2 -2
  1866. data/spec/framework_spec/app/spec/core/object/dup_spec.rb +2 -2
  1867. data/spec/framework_spec/app/spec/core/object/fixtures/classes.rb +17 -0
  1868. data/spec/framework_spec/app/spec/core/object/initialize_spec.rb +1 -1
  1869. data/spec/framework_spec/app/spec/core/object/instance_exec_spec.rb +101 -0
  1870. data/spec/framework_spec/app/spec/core/object/instance_of_spec.rb +6 -6
  1871. data/spec/framework_spec/app/spec/core/object/is_a_spec.rb +2 -2
  1872. data/spec/framework_spec/app/spec/core/object/kind_of_spec.rb +2 -2
  1873. data/spec/framework_spec/app/spec/core/object/match_spec.rb +25 -10
  1874. data/spec/framework_spec/app/spec/core/object/metaclass_spec.rb +9 -9
  1875. data/spec/framework_spec/app/spec/core/object/new_spec.rb +18 -2
  1876. data/spec/framework_spec/app/spec/core/object/shared/kind_of.rb +3 -3
  1877. data/spec/framework_spec/app/spec/core/objectspace/_id2ref_spec.rb +1 -1
  1878. data/spec/framework_spec/app/spec/core/objectspace/add_finalizer_spec.rb +5 -1
  1879. data/spec/framework_spec/app/spec/core/objectspace/call_finalizer_spec.rb +5 -1
  1880. data/spec/framework_spec/app/spec/core/objectspace/count_objects_spec.rb +7 -0
  1881. data/spec/framework_spec/app/spec/core/objectspace/define_finalizer_spec.rb +44 -3
  1882. data/spec/framework_spec/app/spec/core/objectspace/each_object_spec.rb +27 -5
  1883. data/spec/framework_spec/app/spec/core/objectspace/finalizers_spec.rb +5 -1
  1884. data/spec/framework_spec/app/spec/core/objectspace/fixtures.rb +5 -0
  1885. data/spec/framework_spec/app/spec/core/objectspace/garbage_collect_spec.rb +22 -1
  1886. data/spec/framework_spec/app/spec/core/objectspace/remove_finalizer_spec.rb +5 -1
  1887. data/spec/framework_spec/app/spec/core/objectspace/undefine_finalizer_spec.rb +5 -1
  1888. data/spec/framework_spec/app/spec/core/precision/included_spec.rb +14 -12
  1889. data/spec/framework_spec/app/spec/core/precision/prec_f_spec.rb +9 -8
  1890. data/spec/framework_spec/app/spec/core/precision/prec_i_spec.rb +10 -8
  1891. data/spec/framework_spec/app/spec/core/precision/prec_spec.rb +19 -14
  1892. data/spec/framework_spec/app/spec/core/proc/arity_spec.rb +104 -53
  1893. data/spec/framework_spec/app/spec/core/proc/binding_spec.rb +14 -14
  1894. data/spec/framework_spec/app/spec/core/proc/block_pass_spec.rb +21 -1
  1895. data/spec/framework_spec/app/spec/core/proc/call_spec.rb +9 -2
  1896. data/spec/framework_spec/app/spec/core/proc/case_compare_spec.rb +19 -0
  1897. data/spec/framework_spec/app/spec/core/proc/clone_spec.rb +3 -3
  1898. data/spec/framework_spec/app/spec/core/proc/curry_spec.rb +142 -0
  1899. data/spec/framework_spec/app/spec/core/proc/dup_spec.rb +3 -3
  1900. data/spec/framework_spec/app/spec/core/proc/element_reference_spec.rb +8 -2
  1901. data/spec/framework_spec/app/spec/core/proc/eql_spec.rb +8 -0
  1902. data/spec/framework_spec/app/spec/core/proc/equal_value_spec.rb +4 -12
  1903. data/spec/framework_spec/app/spec/core/proc/fixtures/common.rb +42 -0
  1904. data/spec/framework_spec/app/spec/core/proc/fixtures/source_location.rb +51 -0
  1905. data/spec/framework_spec/app/spec/core/proc/hash_spec.rb +24 -0
  1906. data/spec/framework_spec/app/spec/core/proc/lambda_spec.rb +62 -0
  1907. data/spec/framework_spec/app/spec/core/proc/new_spec.rb +135 -46
  1908. data/spec/framework_spec/app/spec/core/proc/parameters_spec.rb +2 -0
  1909. data/spec/framework_spec/app/spec/core/proc/shared/call.rb +86 -34
  1910. data/spec/framework_spec/app/spec/core/proc/shared/call_arguments.rb +7 -0
  1911. data/spec/framework_spec/app/spec/core/proc/shared/equal.rb +93 -0
  1912. data/spec/framework_spec/app/spec/core/proc/source_location_spec.rb +64 -0
  1913. data/spec/framework_spec/app/spec/core/proc/to_proc_spec.rb +1 -1
  1914. data/spec/framework_spec/app/spec/core/proc/to_s_spec.rb +16 -5
  1915. data/spec/framework_spec/app/spec/core/proc/versions/call_1.8.7.rb +1 -0
  1916. data/spec/framework_spec/app/spec/core/proc/versions/call_1.9.rb +1 -0
  1917. data/spec/framework_spec/app/spec/core/proc/versions/parameters_1.9.rb +73 -0
  1918. data/spec/framework_spec/app/spec/core/proc/yield_spec.rb +19 -0
  1919. data/spec/framework_spec/app/spec/core/process/abort_spec.rb +16 -9
  1920. data/spec/framework_spec/app/spec/core/process/constants_spec.rb +6 -6
  1921. data/spec/framework_spec/app/spec/core/process/daemon_spec.rb +7 -0
  1922. data/spec/framework_spec/app/spec/core/process/detach_spec.rb +5 -9
  1923. data/spec/framework_spec/app/spec/core/process/egid_spec.rb +5 -1
  1924. data/spec/framework_spec/app/spec/core/process/euid_spec.rb +6 -2
  1925. data/spec/framework_spec/app/spec/core/process/exec_spec.rb +7 -0
  1926. data/spec/framework_spec/app/spec/core/process/exit_spec.rb +9 -1
  1927. data/spec/framework_spec/app/spec/core/process/fork_spec.rb +38 -26
  1928. data/spec/framework_spec/app/spec/core/process/getpgid_spec.rb +5 -5
  1929. data/spec/framework_spec/app/spec/core/process/getpgrp_spec.rb +5 -1
  1930. data/spec/framework_spec/app/spec/core/process/getpriority_spec.rb +8 -9
  1931. data/spec/framework_spec/app/spec/core/process/getrlimit_spec.rb +5 -1
  1932. data/spec/framework_spec/app/spec/core/process/gid/change_privilege_spec.rb +5 -0
  1933. data/spec/framework_spec/app/spec/core/process/gid/eid_spec.rb +9 -0
  1934. data/spec/framework_spec/app/spec/core/process/gid/grant_privilege_spec.rb +5 -0
  1935. data/spec/framework_spec/app/spec/core/process/gid/re_exchange_spec.rb +5 -0
  1936. data/spec/framework_spec/app/spec/core/process/gid/re_exchangeable_spec.rb +5 -0
  1937. data/spec/framework_spec/app/spec/core/process/gid/rid_spec.rb +5 -0
  1938. data/spec/framework_spec/app/spec/core/process/gid/sid_available_spec.rb +5 -0
  1939. data/spec/framework_spec/app/spec/core/process/gid/switch_spec.rb +5 -0
  1940. data/spec/framework_spec/app/spec/core/process/gid_spec.rb +11 -7
  1941. data/spec/framework_spec/app/spec/core/process/groups_spec.rb +15 -17
  1942. data/spec/framework_spec/app/spec/core/process/initgroups_spec.rb +3 -6
  1943. data/spec/framework_spec/app/spec/core/process/kill_spec.rb +21 -17
  1944. data/spec/framework_spec/app/spec/core/process/maxgroups_spec.rb +12 -5
  1945. data/spec/framework_spec/app/spec/core/process/pid_spec.rb +3 -3
  1946. data/spec/framework_spec/app/spec/core/process/ppid_spec.rb +16 -15
  1947. data/spec/framework_spec/app/spec/core/process/setpgid_spec.rb +16 -21
  1948. data/spec/framework_spec/app/spec/core/process/setpgrp_spec.rb +3 -8
  1949. data/spec/framework_spec/app/spec/core/process/setpriority_spec.rb +42 -60
  1950. data/spec/framework_spec/app/spec/core/process/setrlimit_spec.rb +38 -46
  1951. data/spec/framework_spec/app/spec/core/process/setsid_spec.rb +20 -22
  1952. data/spec/framework_spec/app/spec/core/process/spawn_spec.rb +32 -0
  1953. data/spec/framework_spec/app/spec/core/process/status/_spec.rb +5 -0
  1954. data/spec/framework_spec/app/spec/core/process/status/coredump_spec.rb +5 -0
  1955. data/spec/framework_spec/app/spec/core/process/status/equal_value_spec.rb +5 -0
  1956. data/spec/framework_spec/app/spec/core/process/status/exited_spec.rb +38 -0
  1957. data/spec/framework_spec/app/spec/core/process/status/exitstatus_spec.rb +13 -0
  1958. data/spec/framework_spec/app/spec/core/process/status/inspect_spec.rb +5 -0
  1959. data/spec/framework_spec/app/spec/core/process/status/pid_spec.rb +13 -0
  1960. data/spec/framework_spec/app/spec/core/process/status/right_shift_spec.rb +5 -0
  1961. data/spec/framework_spec/app/spec/core/process/status/signaled_spec.rb +36 -0
  1962. data/spec/framework_spec/app/spec/core/process/status/stopped_spec.rb +5 -0
  1963. data/spec/framework_spec/app/spec/core/process/status/stopsig_spec.rb +5 -0
  1964. data/spec/framework_spec/app/spec/core/process/status/success_spec.rb +53 -0
  1965. data/spec/framework_spec/app/spec/core/process/status/termsig_spec.rb +41 -0
  1966. data/spec/framework_spec/app/spec/core/process/status/to_i_spec.rb +5 -0
  1967. data/spec/framework_spec/app/spec/core/process/status/to_int_spec.rb +5 -0
  1968. data/spec/framework_spec/app/spec/core/process/status/to_s_spec.rb +5 -0
  1969. data/spec/framework_spec/app/spec/core/process/sys/getegid_spec.rb +5 -0
  1970. data/spec/framework_spec/app/spec/core/process/sys/geteuid_spec.rb +5 -0
  1971. data/spec/framework_spec/app/spec/core/process/sys/getgid_spec.rb +5 -0
  1972. data/spec/framework_spec/app/spec/core/process/sys/getuid_spec.rb +5 -0
  1973. data/spec/framework_spec/app/spec/core/process/sys/issetugid_spec.rb +5 -0
  1974. data/spec/framework_spec/app/spec/core/process/sys/setegid_spec.rb +5 -0
  1975. data/spec/framework_spec/app/spec/core/process/sys/seteuid_spec.rb +5 -0
  1976. data/spec/framework_spec/app/spec/core/process/sys/setgid_spec.rb +5 -0
  1977. data/spec/framework_spec/app/spec/core/process/sys/setregid_spec.rb +5 -0
  1978. data/spec/framework_spec/app/spec/core/process/sys/setresgid_spec.rb +5 -0
  1979. data/spec/framework_spec/app/spec/core/process/sys/setresuid_spec.rb +5 -0
  1980. data/spec/framework_spec/app/spec/core/process/sys/setreuid_spec.rb +5 -0
  1981. data/spec/framework_spec/app/spec/core/process/sys/setrgid_spec.rb +5 -0
  1982. data/spec/framework_spec/app/spec/core/process/sys/setruid_spec.rb +5 -0
  1983. data/spec/framework_spec/app/spec/core/process/sys/setuid_spec.rb +5 -0
  1984. data/spec/framework_spec/app/spec/core/process/times_spec.rb +2 -2
  1985. data/spec/framework_spec/app/spec/core/process/uid/change_privilege_spec.rb +5 -0
  1986. data/spec/framework_spec/app/spec/core/process/uid/eid_spec.rb +9 -0
  1987. data/spec/framework_spec/app/spec/core/process/uid/grant_privilege_spec.rb +5 -0
  1988. data/spec/framework_spec/app/spec/core/process/uid/re_exchange_spec.rb +5 -0
  1989. data/spec/framework_spec/app/spec/core/process/uid/re_exchangeable_spec.rb +5 -0
  1990. data/spec/framework_spec/app/spec/core/process/uid/rid_spec.rb +5 -0
  1991. data/spec/framework_spec/app/spec/core/process/uid/sid_available_spec.rb +5 -0
  1992. data/spec/framework_spec/app/spec/core/process/uid/switch_spec.rb +5 -0
  1993. data/spec/framework_spec/app/spec/core/process/uid_spec.rb +11 -7
  1994. data/spec/framework_spec/app/spec/core/process/wait2_spec.rb +7 -6
  1995. data/spec/framework_spec/app/spec/core/process/wait_spec.rb +25 -7
  1996. data/spec/framework_spec/app/spec/core/process/waitall_spec.rb +10 -8
  1997. data/spec/framework_spec/app/spec/core/process/waitpid2_spec.rb +5 -1
  1998. data/spec/framework_spec/app/spec/core/process/waitpid_spec.rb +5 -1
  1999. data/spec/framework_spec/app/spec/core/random/bytes_spec.rb +40 -0
  2000. data/spec/framework_spec/app/spec/core/random/equal_value_spec.rb +39 -0
  2001. data/spec/framework_spec/app/spec/core/random/new_seed_spec.rb +27 -0
  2002. data/spec/framework_spec/app/spec/core/random/new_spec.rb +33 -0
  2003. data/spec/framework_spec/app/spec/core/random/rand_spec.rb +218 -0
  2004. data/spec/framework_spec/app/spec/core/random/seed_spec.rb +32 -0
  2005. data/spec/framework_spec/app/spec/core/random/srand_spec.rb +43 -0
  2006. data/spec/framework_spec/app/spec/core/range/begin_spec.rb +2 -2
  2007. data/spec/framework_spec/app/spec/core/range/case_compare_spec.rb +2 -2
  2008. data/spec/framework_spec/app/spec/core/range/cover_spec.rb +57 -0
  2009. data/spec/framework_spec/app/spec/core/range/each_spec.rb +5 -4
  2010. data/spec/framework_spec/app/spec/core/range/end_spec.rb +2 -2
  2011. data/spec/framework_spec/app/spec/core/range/eql_spec.rb +2 -2
  2012. data/spec/framework_spec/app/spec/core/range/equal_value_spec.rb +2 -2
  2013. data/spec/framework_spec/app/spec/core/range/exclude_end_spec.rb +1 -1
  2014. data/spec/framework_spec/app/spec/core/range/first_spec.rb +2 -2
  2015. data/spec/framework_spec/app/spec/core/range/hash_spec.rb +2 -2
  2016. data/spec/framework_spec/app/spec/core/range/include_spec.rb +2 -2
  2017. data/spec/framework_spec/app/spec/core/range/initialize_spec.rb +1 -1
  2018. data/spec/framework_spec/app/spec/core/range/inspect_spec.rb +2 -2
  2019. data/spec/framework_spec/app/spec/core/range/last_spec.rb +2 -2
  2020. data/spec/framework_spec/app/spec/core/range/max_spec.rb +55 -0
  2021. data/spec/framework_spec/app/spec/core/range/member_spec.rb +2 -2
  2022. data/spec/framework_spec/app/spec/core/range/min_spec.rb +55 -0
  2023. data/spec/framework_spec/app/spec/core/range/new_spec.rb +9 -9
  2024. data/spec/framework_spec/app/spec/core/range/shared/equal_value.rb +2 -2
  2025. data/spec/framework_spec/app/spec/core/range/shared/include.rb +9 -0
  2026. data/spec/framework_spec/app/spec/core/range/step_spec.rb +4 -3
  2027. data/spec/framework_spec/app/spec/core/range/to_a_spec.rb +10 -3
  2028. data/spec/framework_spec/app/spec/core/range/to_s_spec.rb +1 -1
  2029. data/spec/framework_spec/app/spec/core/rational/Rational_spec.rb +35 -0
  2030. data/spec/framework_spec/app/spec/core/rational/abs_spec.rb +7 -0
  2031. data/spec/framework_spec/app/spec/core/rational/ceil_spec.rb +7 -0
  2032. data/spec/framework_spec/app/spec/core/rational/coerce_spec.rb +7 -0
  2033. data/spec/framework_spec/app/spec/core/rational/comparison_spec.rb +23 -0
  2034. data/spec/framework_spec/app/spec/core/rational/denominator_spec.rb +7 -0
  2035. data/spec/framework_spec/app/spec/core/rational/div_spec.rb +19 -0
  2036. data/spec/framework_spec/app/spec/core/rational/divide_spec.rb +19 -0
  2037. data/spec/framework_spec/app/spec/core/rational/divmod_spec.rb +15 -0
  2038. data/spec/framework_spec/app/spec/core/rational/equal_value_spec.rb +19 -0
  2039. data/spec/framework_spec/app/spec/core/rational/exponent_spec.rb +19 -0
  2040. data/spec/framework_spec/app/spec/core/rational/fdiv_spec.rb +7 -0
  2041. data/spec/framework_spec/app/spec/core/rational/floor_spec.rb +7 -0
  2042. data/spec/framework_spec/app/spec/core/rational/hash_spec.rb +7 -0
  2043. data/spec/framework_spec/app/spec/core/rational/initialize_spec.rb +7 -0
  2044. data/spec/framework_spec/app/spec/core/rational/inspect_spec.rb +7 -0
  2045. data/spec/framework_spec/app/spec/core/rational/integer_spec.rb +13 -0
  2046. data/spec/framework_spec/app/spec/core/rational/magnitude_spec.rb +7 -0
  2047. data/spec/framework_spec/app/spec/core/rational/marshal_dump_spec.rb +7 -0
  2048. data/spec/framework_spec/app/spec/core/rational/marshal_load_spec.rb +7 -0
  2049. data/spec/framework_spec/app/spec/core/rational/minus_spec.rb +7 -0
  2050. data/spec/framework_spec/app/spec/core/rational/modulo_spec.rb +7 -0
  2051. data/spec/framework_spec/app/spec/core/rational/multiply_spec.rb +19 -0
  2052. data/spec/framework_spec/app/spec/core/rational/numerator_spec.rb +7 -0
  2053. data/spec/framework_spec/app/spec/core/rational/plus_spec.rb +18 -0
  2054. data/spec/framework_spec/app/spec/core/rational/quo_spec.rb +7 -0
  2055. data/spec/framework_spec/app/spec/core/rational/rationalize_spec.rb +33 -0
  2056. data/spec/framework_spec/app/spec/core/rational/remainder_spec.rb +7 -0
  2057. data/spec/framework_spec/app/spec/core/rational/round_spec.rb +7 -0
  2058. data/spec/framework_spec/app/spec/core/rational/to_f_spec.rb +7 -0
  2059. data/spec/framework_spec/app/spec/core/rational/to_i_spec.rb +7 -0
  2060. data/spec/framework_spec/app/spec/core/rational/to_r_spec.rb +7 -0
  2061. data/spec/framework_spec/app/spec/core/rational/to_s_spec.rb +7 -0
  2062. data/spec/framework_spec/app/spec/core/rational/truncate_spec.rb +7 -0
  2063. data/spec/framework_spec/app/spec/core/rational/zero_spec.rb +15 -0
  2064. data/spec/framework_spec/app/spec/core/regexp/case_compare_spec.rb +2 -2
  2065. data/spec/framework_spec/app/spec/core/regexp/casefold_spec.rb +1 -1
  2066. data/spec/framework_spec/app/spec/core/regexp/compile_spec.rb +2 -2
  2067. data/spec/framework_spec/app/spec/core/regexp/encoding_spec.rb +56 -0
  2068. data/spec/framework_spec/app/spec/core/regexp/eql_spec.rb +2 -2
  2069. data/spec/framework_spec/app/spec/core/regexp/equal_value_spec.rb +2 -2
  2070. data/spec/framework_spec/app/spec/core/regexp/escape_spec.rb +6 -2
  2071. data/spec/framework_spec/app/spec/core/regexp/fixed_encoding_spec.rb +36 -0
  2072. data/spec/framework_spec/app/spec/core/regexp/hash_spec.rb +1 -1
  2073. data/spec/framework_spec/app/spec/core/regexp/initialize_copy_spec.rb +1 -1
  2074. data/spec/framework_spec/app/spec/core/regexp/initialize_spec.rb +1 -1
  2075. data/spec/framework_spec/app/spec/core/regexp/inspect_spec.rb +9 -1
  2076. data/spec/framework_spec/app/spec/core/regexp/kcode_spec.rb +17 -16
  2077. data/spec/framework_spec/app/spec/core/regexp/last_match_spec.rb +4 -4
  2078. data/spec/framework_spec/app/spec/core/regexp/match_spec.rb +31 -3
  2079. data/spec/framework_spec/app/spec/core/regexp/named_captures_spec.rb +1 -0
  2080. data/spec/framework_spec/app/spec/core/regexp/names_spec.rb +1 -0
  2081. data/spec/framework_spec/app/spec/core/regexp/new_spec.rb +2 -2
  2082. data/spec/framework_spec/app/spec/core/regexp/options_spec.rb +3 -3
  2083. data/spec/framework_spec/app/spec/core/regexp/quote_spec.rb +3 -3
  2084. data/spec/framework_spec/app/spec/core/regexp/shared/match.rb +2 -2
  2085. data/spec/framework_spec/app/spec/core/regexp/shared/new.rb +65 -53
  2086. data/spec/framework_spec/app/spec/core/regexp/source_spec.rb +1 -1
  2087. data/spec/framework_spec/app/spec/core/regexp/to_s_spec.rb +1 -1
  2088. data/spec/framework_spec/app/spec/core/regexp/try_convert_spec.rb +21 -0
  2089. data/spec/framework_spec/app/spec/core/regexp/union_spec.rb +18 -2
  2090. data/spec/framework_spec/app/spec/core/regexp/versions/named_captures_1.9.rb +35 -0
  2091. data/spec/framework_spec/app/spec/core/regexp/versions/names_1.9.rb +29 -0
  2092. data/spec/framework_spec/app/spec/core/signal/list_spec.rb +1 -1
  2093. data/spec/framework_spec/app/spec/core/signal/trap_spec.rb +106 -1
  2094. data/spec/framework_spec/app/spec/core/string/allocate_spec.rb +2 -2
  2095. data/spec/framework_spec/app/spec/core/string/append_spec.rb +3 -3
  2096. data/spec/framework_spec/app/spec/core/string/ascii_only_spec.rb +44 -29
  2097. data/spec/framework_spec/app/spec/core/string/bytes_spec.rb +25 -18
  2098. data/spec/framework_spec/app/spec/core/string/bytesize_spec.rb +12 -12
  2099. data/spec/framework_spec/app/spec/core/string/capitalize_spec.rb +6 -6
  2100. data/spec/framework_spec/app/spec/core/string/case_compare_spec.rb +7 -0
  2101. data/spec/framework_spec/app/spec/core/string/casecmp_spec.rb +117 -64
  2102. data/spec/framework_spec/app/spec/core/string/center_spec.rb +24 -18
  2103. data/spec/framework_spec/app/spec/core/string/chars_spec.rb +7 -0
  2104. data/spec/framework_spec/app/spec/core/string/chomp_spec.rb +68 -39
  2105. data/spec/framework_spec/app/spec/core/string/chop_spec.rb +34 -56
  2106. data/spec/framework_spec/app/spec/core/string/chr_spec.rb +44 -0
  2107. data/spec/framework_spec/app/spec/core/string/clear_spec.rb +39 -0
  2108. data/spec/framework_spec/app/spec/core/string/codepoints_spec.rb +8 -0
  2109. data/spec/framework_spec/app/spec/core/string/comparison_spec.rb +6 -6
  2110. data/spec/framework_spec/app/spec/core/string/concat_spec.rb +3 -3
  2111. data/spec/framework_spec/app/spec/core/string/count_spec.rb +26 -11
  2112. data/spec/framework_spec/app/spec/core/string/crypt_spec.rb +35 -35
  2113. data/spec/framework_spec/app/spec/core/string/delete_spec.rb +25 -8
  2114. data/spec/framework_spec/app/spec/core/string/downcase_spec.rb +6 -6
  2115. data/spec/framework_spec/app/spec/core/string/dump_spec.rb +13 -4
  2116. data/spec/framework_spec/app/spec/core/string/each_byte_spec.rb +3 -3
  2117. data/spec/framework_spec/app/spec/core/string/each_char_spec.rb +3 -29
  2118. data/spec/framework_spec/app/spec/core/string/each_codepoint_spec.rb +8 -0
  2119. data/spec/framework_spec/app/spec/core/string/each_line_spec.rb +3 -3
  2120. data/spec/framework_spec/app/spec/core/string/each_spec.rb +3 -3
  2121. data/spec/framework_spec/app/spec/core/string/element_reference_spec.rb +9 -3
  2122. data/spec/framework_spec/app/spec/core/string/element_set_spec.rb +54 -10
  2123. data/spec/framework_spec/app/spec/core/string/empty_spec.rb +2 -2
  2124. data/spec/framework_spec/app/spec/core/string/encode_spec.rb +114 -0
  2125. data/spec/framework_spec/app/spec/core/string/encoding_spec.rb +181 -0
  2126. data/spec/framework_spec/app/spec/core/string/end_with_spec.rb +3 -3
  2127. data/spec/framework_spec/app/spec/core/string/entries_spec.rb +2 -2
  2128. data/spec/framework_spec/app/spec/core/string/eql_spec.rb +5 -5
  2129. data/spec/framework_spec/app/spec/core/string/equal_value_spec.rb +7 -3
  2130. data/spec/framework_spec/app/spec/core/string/fixtures/classes.rb +12 -9
  2131. data/spec/framework_spec/app/spec/core/string/fixtures/iso-8859-9-encoding.rb +9 -0
  2132. data/spec/framework_spec/app/spec/core/string/fixtures/utf-8-encoding.rb +7 -0
  2133. data/spec/framework_spec/app/spec/core/string/force_encoding_spec.rb +61 -0
  2134. data/spec/framework_spec/app/spec/core/string/getbyte_spec.rb +63 -0
  2135. data/spec/framework_spec/app/spec/core/string/gsub_spec.rb +228 -75
  2136. data/spec/framework_spec/app/spec/core/string/hash_spec.rb +2 -2
  2137. data/spec/framework_spec/app/spec/core/string/hex_spec.rb +23 -9
  2138. data/spec/framework_spec/app/spec/core/string/include_spec.rb +7 -7
  2139. data/spec/framework_spec/app/spec/core/string/index_spec.rb +46 -52
  2140. data/spec/framework_spec/app/spec/core/string/initialize_spec.rb +19 -21
  2141. data/spec/framework_spec/app/spec/core/string/insert_spec.rb +4 -4
  2142. data/spec/framework_spec/app/spec/core/string/inspect_spec.rb +661 -41
  2143. data/spec/framework_spec/app/spec/core/string/intern_spec.rb +4 -4
  2144. data/spec/framework_spec/app/spec/core/string/length_spec.rb +4 -4
  2145. data/spec/framework_spec/app/spec/core/string/lines_spec.rb +9 -0
  2146. data/spec/framework_spec/app/spec/core/string/ljust_spec.rb +18 -12
  2147. data/spec/framework_spec/app/spec/core/string/lstrip_spec.rb +23 -14
  2148. data/spec/framework_spec/app/spec/core/string/match_spec.rb +11 -11
  2149. data/spec/framework_spec/app/spec/core/string/modulo_spec.rb +103 -45
  2150. data/spec/framework_spec/app/spec/core/string/multiply_spec.rb +10 -10
  2151. data/spec/framework_spec/app/spec/core/string/new_spec.rb +3 -3
  2152. data/spec/framework_spec/app/spec/core/string/next_spec.rb +4 -4
  2153. data/spec/framework_spec/app/spec/core/string/oct_spec.rb +59 -16
  2154. data/spec/framework_spec/app/spec/core/string/ord_spec.rb +32 -0
  2155. data/spec/framework_spec/app/spec/core/string/partition_spec.rb +7 -3
  2156. data/spec/framework_spec/app/spec/core/string/plus_spec.rb +9 -9
  2157. data/spec/framework_spec/app/spec/core/string/replace_spec.rb +18 -13
  2158. data/spec/framework_spec/app/spec/core/string/reverse_spec.rb +16 -11
  2159. data/spec/framework_spec/app/spec/core/string/rindex_spec.rb +75 -69
  2160. data/spec/framework_spec/app/spec/core/string/rjust_spec.rb +18 -12
  2161. data/spec/framework_spec/app/spec/core/string/rpartition_spec.rb +8 -3
  2162. data/spec/framework_spec/app/spec/core/string/rstrip_spec.rb +52 -20
  2163. data/spec/framework_spec/app/spec/core/string/scan_spec.rb +48 -23
  2164. data/spec/framework_spec/app/spec/core/string/setbyte_spec.rb +55 -0
  2165. data/spec/framework_spec/app/spec/core/string/shared/chars.rb +70 -0
  2166. data/spec/framework_spec/app/spec/core/string/shared/codepoints.rb +66 -0
  2167. data/spec/framework_spec/app/spec/core/string/shared/concat.rb +9 -6
  2168. data/spec/framework_spec/app/spec/core/string/shared/each_line.rb +27 -6
  2169. data/spec/framework_spec/app/spec/core/string/shared/encode.rb +112 -0
  2170. data/spec/framework_spec/app/spec/core/string/shared/slice.rb +13 -11
  2171. data/spec/framework_spec/app/spec/core/string/shared/succ.rb +3 -3
  2172. data/spec/framework_spec/app/spec/core/string/shared/to_s.rb +1 -1
  2173. data/spec/framework_spec/app/spec/core/string/shared/to_sym.rb +32 -0
  2174. data/spec/framework_spec/app/spec/core/string/shared/versions/slice_1.9.rb +78 -0
  2175. data/spec/framework_spec/app/spec/core/string/size_spec.rb +4 -4
  2176. data/spec/framework_spec/app/spec/core/string/slice_spec.rb +54 -42
  2177. data/spec/framework_spec/app/spec/core/string/split_spec.rb +109 -60
  2178. data/spec/framework_spec/app/spec/core/string/squeeze_spec.rb +21 -7
  2179. data/spec/framework_spec/app/spec/core/string/start_with_spec.rb +4 -4
  2180. data/spec/framework_spec/app/spec/core/string/strip_spec.rb +49 -12
  2181. data/spec/framework_spec/app/spec/core/string/sub_spec.rb +91 -43
  2182. data/spec/framework_spec/app/spec/core/string/succ_spec.rb +4 -4
  2183. data/spec/framework_spec/app/spec/core/string/sum_spec.rb +7 -2
  2184. data/spec/framework_spec/app/spec/core/string/swapcase_spec.rb +5 -5
  2185. data/spec/framework_spec/app/spec/core/string/to_a_spec.rb +2 -2
  2186. data/spec/framework_spec/app/spec/core/string/to_c_spec.rb +101 -0
  2187. data/spec/framework_spec/app/spec/core/string/to_f_spec.rb +8 -16
  2188. data/spec/framework_spec/app/spec/core/string/to_i_spec.rb +38 -16
  2189. data/spec/framework_spec/app/spec/core/string/to_r_spec.rb +60 -0
  2190. data/spec/framework_spec/app/spec/core/string/to_s_spec.rb +4 -4
  2191. data/spec/framework_spec/app/spec/core/string/to_str_spec.rb +4 -4
  2192. data/spec/framework_spec/app/spec/core/string/to_sym_spec.rb +4 -4
  2193. data/spec/framework_spec/app/spec/core/string/tr_s_spec.rb +8 -8
  2194. data/spec/framework_spec/app/spec/core/string/tr_spec.rb +37 -5
  2195. data/spec/framework_spec/app/spec/core/string/try_convert_spec.rb +15 -17
  2196. data/spec/framework_spec/app/spec/core/string/unpack/a_spec.rb +51 -0
  2197. data/spec/framework_spec/app/spec/core/string/unpack/at_spec.rb +29 -0
  2198. data/spec/framework_spec/app/spec/core/string/unpack/b_spec.rb +184 -0
  2199. data/spec/framework_spec/app/spec/core/string/unpack/c_spec.rb +63 -0
  2200. data/spec/framework_spec/app/spec/core/string/unpack/comment_spec.rb +25 -0
  2201. data/spec/framework_spec/app/spec/core/string/unpack/d_spec.rb +28 -0
  2202. data/spec/framework_spec/app/spec/core/string/unpack/e_spec.rb +14 -0
  2203. data/spec/framework_spec/app/spec/core/string/unpack/f_spec.rb +28 -0
  2204. data/spec/framework_spec/app/spec/core/string/unpack/g_spec.rb +14 -0
  2205. data/spec/framework_spec/app/spec/core/string/unpack/h_spec.rb +124 -0
  2206. data/spec/framework_spec/app/spec/core/string/unpack/i_spec.rb +72 -0
  2207. data/spec/framework_spec/app/spec/core/string/unpack/l_spec.rb +216 -0
  2208. data/spec/framework_spec/app/spec/core/string/unpack/m_spec.rb +165 -0
  2209. data/spec/framework_spec/app/spec/core/string/unpack/n_spec.rb +18 -0
  2210. data/spec/framework_spec/app/spec/core/string/unpack/percent_spec.rb +7 -0
  2211. data/spec/framework_spec/app/spec/core/string/unpack/q_spec.rb +42 -0
  2212. data/spec/framework_spec/app/spec/core/string/unpack/s_spec.rb +72 -0
  2213. data/spec/framework_spec/app/spec/core/string/unpack/shared/basic.rb +25 -0
  2214. data/spec/framework_spec/app/spec/core/string/unpack/shared/float.rb +267 -0
  2215. data/spec/framework_spec/app/spec/core/string/unpack/shared/integer.rb +343 -0
  2216. data/spec/framework_spec/app/spec/core/string/unpack/shared/string.rb +51 -0
  2217. data/spec/framework_spec/app/spec/core/string/unpack/shared/unicode.rb +60 -0
  2218. data/spec/framework_spec/app/spec/core/string/unpack/u_spec.rb +78 -0
  2219. data/spec/framework_spec/app/spec/core/string/unpack/v_spec.rb +18 -0
  2220. data/spec/framework_spec/app/spec/core/string/unpack/w_spec.rb +25 -0
  2221. data/spec/framework_spec/app/spec/core/string/unpack/x_spec.rb +62 -0
  2222. data/spec/framework_spec/app/spec/core/string/unpack/z_spec.rb +21 -0
  2223. data/spec/framework_spec/app/spec/core/string/unpack_spec.rb +121 -32
  2224. data/spec/framework_spec/app/spec/core/string/upcase_spec.rb +5 -5
  2225. data/spec/framework_spec/app/spec/core/string/upto_spec.rb +21 -11
  2226. data/spec/framework_spec/app/spec/core/string/valid_encoding_spec.rb +122 -0
  2227. data/spec/framework_spec/app/spec/core/struct/each_pair_spec.rb +6 -6
  2228. data/spec/framework_spec/app/spec/core/struct/each_spec.rb +6 -6
  2229. data/spec/framework_spec/app/spec/core/struct/element_reference_spec.rb +7 -7
  2230. data/spec/framework_spec/app/spec/core/struct/element_set_spec.rb +4 -4
  2231. data/spec/framework_spec/app/spec/core/struct/eql_spec.rb +10 -4
  2232. data/spec/framework_spec/app/spec/core/struct/equal_value_spec.rb +3 -3
  2233. data/spec/framework_spec/app/spec/core/struct/fixtures/classes.rb +24 -8
  2234. data/spec/framework_spec/app/spec/core/struct/hash_spec.rb +24 -10
  2235. data/spec/framework_spec/app/spec/core/struct/initialize_copy_spec.rb +2 -2
  2236. data/spec/framework_spec/app/spec/core/struct/initialize_spec.rb +9 -5
  2237. data/spec/framework_spec/app/spec/core/struct/inspect_spec.rb +13 -6
  2238. data/spec/framework_spec/app/spec/core/struct/length_spec.rb +4 -4
  2239. data/spec/framework_spec/app/spec/core/struct/members_spec.rb +17 -7
  2240. data/spec/framework_spec/app/spec/core/struct/new_spec.rb +61 -32
  2241. data/spec/framework_spec/app/spec/core/struct/select_spec.rb +9 -9
  2242. data/spec/framework_spec/app/spec/core/struct/shared/equal_value.rb +20 -5
  2243. data/spec/framework_spec/app/spec/core/struct/shared/inspect.rb +13 -0
  2244. data/spec/framework_spec/app/spec/core/struct/size_spec.rb +3 -3
  2245. data/spec/framework_spec/app/spec/core/struct/struct_spec.rb +6 -6
  2246. data/spec/framework_spec/app/spec/core/struct/tms/cstime_spec.rb +9 -0
  2247. data/spec/framework_spec/app/spec/core/struct/tms/cutime_spec.rb +9 -0
  2248. data/spec/framework_spec/app/spec/core/struct/tms/element_reference_spec.rb +5 -0
  2249. data/spec/framework_spec/app/spec/core/struct/tms/members_spec.rb +5 -0
  2250. data/spec/framework_spec/app/spec/core/struct/tms/new_spec.rb +5 -0
  2251. data/spec/framework_spec/app/spec/core/struct/tms/stime_spec.rb +9 -0
  2252. data/spec/framework_spec/app/spec/core/struct/tms/utime_spec.rb +9 -0
  2253. data/spec/framework_spec/app/spec/core/struct/to_a_spec.rb +4 -4
  2254. data/spec/framework_spec/app/spec/core/struct/to_s_spec.rb +6 -3
  2255. data/spec/framework_spec/app/spec/core/struct/values_at_spec.rb +3 -3
  2256. data/spec/framework_spec/app/spec/core/struct/values_spec.rb +4 -4
  2257. data/spec/framework_spec/app/spec/core/symbol/all_symbols_spec.rb +7 -7
  2258. data/spec/framework_spec/app/spec/core/symbol/capitalize_spec.rb +44 -0
  2259. data/spec/framework_spec/app/spec/core/symbol/case_compare_spec.rb +2 -2
  2260. data/spec/framework_spec/app/spec/core/symbol/casecmp_spec.rb +65 -0
  2261. data/spec/framework_spec/app/spec/core/symbol/comparison_spec.rb +52 -0
  2262. data/spec/framework_spec/app/spec/core/symbol/downcase_spec.rb +26 -0
  2263. data/spec/framework_spec/app/spec/core/symbol/element_reference_spec.rb +7 -0
  2264. data/spec/framework_spec/app/spec/core/symbol/empty_spec.rb +14 -0
  2265. data/spec/framework_spec/app/spec/core/symbol/encoding_spec.rb +7 -0
  2266. data/spec/framework_spec/app/spec/core/symbol/equal_value_spec.rb +2 -2
  2267. data/spec/framework_spec/app/spec/core/symbol/id2name_spec.rb +2 -2
  2268. data/spec/framework_spec/app/spec/core/symbol/inspect_spec.rb +19 -7
  2269. data/spec/framework_spec/app/spec/core/symbol/intern_spec.rb +11 -0
  2270. data/spec/framework_spec/app/spec/core/symbol/length_spec.rb +7 -0
  2271. data/spec/framework_spec/app/spec/core/symbol/match_spec.rb +13 -0
  2272. data/spec/framework_spec/app/spec/core/symbol/next_spec.rb +7 -0
  2273. data/spec/framework_spec/app/spec/core/symbol/size_spec.rb +7 -0
  2274. data/spec/framework_spec/app/spec/core/symbol/slice_spec.rb +7 -0
  2275. data/spec/framework_spec/app/spec/core/symbol/succ_spec.rb +7 -0
  2276. data/spec/framework_spec/app/spec/core/symbol/swapcase_spec.rb +34 -0
  2277. data/spec/framework_spec/app/spec/core/symbol/to_i_spec.rb +2 -2
  2278. data/spec/framework_spec/app/spec/core/symbol/to_int_spec.rb +2 -2
  2279. data/spec/framework_spec/app/spec/core/symbol/to_proc_spec.rb +3 -3
  2280. data/spec/framework_spec/app/spec/core/symbol/to_s_spec.rb +2 -2
  2281. data/spec/framework_spec/app/spec/core/symbol/to_sym_spec.rb +1 -1
  2282. data/spec/framework_spec/app/spec/core/symbol/upcase_spec.rb +22 -0
  2283. data/spec/framework_spec/app/spec/core/systemexit/initialize_spec.rb +1 -1
  2284. data/spec/framework_spec/app/spec/core/thread/abort_on_exception_spec.rb +14 -2
  2285. data/spec/framework_spec/app/spec/core/thread/add_trace_func_spec.rb +7 -0
  2286. data/spec/framework_spec/app/spec/core/thread/alive_spec.rb +18 -4
  2287. data/spec/framework_spec/app/spec/core/thread/allocate_spec.rb +9 -0
  2288. data/spec/framework_spec/app/spec/core/thread/backtrace_spec.rb +7 -0
  2289. data/spec/framework_spec/app/spec/core/thread/critical_spec.rb +77 -75
  2290. data/spec/framework_spec/app/spec/core/thread/current_spec.rb +3 -3
  2291. data/spec/framework_spec/app/spec/core/thread/element_reference_spec.rb +14 -5
  2292. data/spec/framework_spec/app/spec/core/thread/element_set_spec.rb +14 -5
  2293. data/spec/framework_spec/app/spec/core/thread/exclusive_spec.rb +7 -0
  2294. data/spec/framework_spec/app/spec/core/thread/exit_spec.rb +15 -5
  2295. data/spec/framework_spec/app/spec/core/thread/fixtures/classes.rb +53 -40
  2296. data/spec/framework_spec/app/spec/core/thread/fork_spec.rb +9 -2
  2297. data/spec/framework_spec/app/spec/core/thread/group_spec.rb +5 -2
  2298. data/spec/framework_spec/app/spec/core/thread/initialize_spec.rb +2 -2
  2299. data/spec/framework_spec/app/spec/core/thread/inspect_spec.rb +8 -4
  2300. data/spec/framework_spec/app/spec/core/thread/join_spec.rb +17 -6
  2301. data/spec/framework_spec/app/spec/core/thread/key_spec.rb +16 -5
  2302. data/spec/framework_spec/app/spec/core/thread/keys_spec.rb +2 -2
  2303. data/spec/framework_spec/app/spec/core/thread/kill_spec.rb +11 -3
  2304. data/spec/framework_spec/app/spec/core/thread/list_spec.rb +7 -2
  2305. data/spec/framework_spec/app/spec/core/thread/main_spec.rb +2 -2
  2306. data/spec/framework_spec/app/spec/core/thread/new_spec.rb +40 -3
  2307. data/spec/framework_spec/app/spec/core/thread/pass_spec.rb +2 -2
  2308. data/spec/framework_spec/app/spec/core/thread/priority_spec.rb +9 -2
  2309. data/spec/framework_spec/app/spec/core/thread/raise_spec.rb +41 -27
  2310. data/spec/framework_spec/app/spec/core/thread/run_spec.rb +3 -3
  2311. data/spec/framework_spec/app/spec/core/thread/safe_level_spec.rb +6 -2
  2312. data/spec/framework_spec/app/spec/core/thread/set_trace_func_spec.rb +7 -0
  2313. data/spec/framework_spec/app/spec/core/thread/shared/exit.rb +38 -30
  2314. data/spec/framework_spec/app/spec/core/thread/shared/start.rb +51 -0
  2315. data/spec/framework_spec/app/spec/core/thread/shared/wakeup.rb +25 -13
  2316. data/spec/framework_spec/app/spec/core/thread/start_spec.rb +9 -2
  2317. data/spec/framework_spec/app/spec/core/thread/status_spec.rb +8 -4
  2318. data/spec/framework_spec/app/spec/core/thread/stop_spec.rb +12 -8
  2319. data/spec/framework_spec/app/spec/core/thread/terminate_spec.rb +7 -3
  2320. data/spec/framework_spec/app/spec/core/thread/value_spec.rb +21 -8
  2321. data/spec/framework_spec/app/spec/core/thread/wakeup_spec.rb +3 -3
  2322. data/spec/framework_spec/app/spec/core/threadgroup/add_spec.rb +36 -37
  2323. data/spec/framework_spec/app/spec/core/threadgroup/enclose_spec.rb +5 -1
  2324. data/spec/framework_spec/app/spec/core/threadgroup/enclosed_spec.rb +5 -1
  2325. data/spec/framework_spec/app/spec/core/threadgroup/list_spec.rb +24 -25
  2326. data/spec/framework_spec/app/spec/core/time/_dump_spec.rb +13 -2
  2327. data/spec/framework_spec/app/spec/core/time/_load_spec.rb +24 -2
  2328. data/spec/framework_spec/app/spec/core/time/asctime_spec.rb +3 -3
  2329. data/spec/framework_spec/app/spec/core/time/at_spec.rb +34 -14
  2330. data/spec/framework_spec/app/spec/core/time/comparison_spec.rb +4 -4
  2331. data/spec/framework_spec/app/spec/core/time/ctime_spec.rb +3 -3
  2332. data/spec/framework_spec/app/spec/core/time/day_spec.rb +3 -3
  2333. data/spec/framework_spec/app/spec/core/time/dst_spec.rb +3 -3
  2334. data/spec/framework_spec/app/spec/core/time/dup_spec.rb +10 -2
  2335. data/spec/framework_spec/app/spec/core/time/eql_spec.rb +9 -3
  2336. data/spec/framework_spec/app/spec/core/time/fixtures/classes.rb +5 -0
  2337. data/spec/framework_spec/app/spec/core/time/fixtures/methods.rb +1 -29
  2338. data/spec/framework_spec/app/spec/core/time/friday_spec.rb +7 -0
  2339. data/spec/framework_spec/app/spec/core/time/getgm_spec.rb +3 -3
  2340. data/spec/framework_spec/app/spec/core/time/getlocal_spec.rb +2 -2
  2341. data/spec/framework_spec/app/spec/core/time/getutc_spec.rb +3 -3
  2342. data/spec/framework_spec/app/spec/core/time/gm_spec.rb +4 -4
  2343. data/spec/framework_spec/app/spec/core/time/gmt_offset_spec.rb +3 -3
  2344. data/spec/framework_spec/app/spec/core/time/gmt_spec.rb +2 -2
  2345. data/spec/framework_spec/app/spec/core/time/gmtime_spec.rb +3 -3
  2346. data/spec/framework_spec/app/spec/core/time/gmtoff_spec.rb +3 -3
  2347. data/spec/framework_spec/app/spec/core/time/hash_spec.rb +5 -5
  2348. data/spec/framework_spec/app/spec/core/time/hour_spec.rb +2 -2
  2349. data/spec/framework_spec/app/spec/core/time/initialize_copy_spec.rb +2 -2
  2350. data/spec/framework_spec/app/spec/core/time/initialize_spec.rb +3 -3
  2351. data/spec/framework_spec/app/spec/core/time/inspect_spec.rb +11 -2
  2352. data/spec/framework_spec/app/spec/core/time/isdst_spec.rb +4 -4
  2353. data/spec/framework_spec/app/spec/core/time/local_spec.rb +4 -4
  2354. data/spec/framework_spec/app/spec/core/time/localtime_spec.rb +2 -2
  2355. data/spec/framework_spec/app/spec/core/time/mday_spec.rb +3 -3
  2356. data/spec/framework_spec/app/spec/core/time/min_spec.rb +2 -2
  2357. data/spec/framework_spec/app/spec/core/time/minus_spec.rb +53 -33
  2358. data/spec/framework_spec/app/spec/core/time/mktime_spec.rb +4 -4
  2359. data/spec/framework_spec/app/spec/core/time/mon_spec.rb +3 -3
  2360. data/spec/framework_spec/app/spec/core/time/monday_spec.rb +7 -0
  2361. data/spec/framework_spec/app/spec/core/time/month_spec.rb +3 -3
  2362. data/spec/framework_spec/app/spec/core/time/now_spec.rb +3 -3
  2363. data/spec/framework_spec/app/spec/core/time/nsec_spec.rb +7 -0
  2364. data/spec/framework_spec/app/spec/core/time/plus_spec.rb +64 -19
  2365. data/spec/framework_spec/app/spec/core/time/round_spec.rb +7 -0
  2366. data/spec/framework_spec/app/spec/core/time/saturday_spec.rb +7 -0
  2367. data/spec/framework_spec/app/spec/core/time/sec_spec.rb +2 -2
  2368. data/spec/framework_spec/app/spec/core/time/shared/gmt_offset.rb +23 -0
  2369. data/spec/framework_spec/app/spec/core/time/shared/inspect.rb +25 -0
  2370. data/spec/framework_spec/app/spec/core/time/shared/isdst.rb +1 -1
  2371. data/spec/framework_spec/app/spec/core/time/shared/local.rb +8 -0
  2372. data/spec/framework_spec/app/spec/core/time/shared/now.rb +12 -4
  2373. data/spec/framework_spec/app/spec/core/time/shared/time_params.rb +134 -35
  2374. data/spec/framework_spec/app/spec/core/time/strftime_spec.rb +141 -2
  2375. data/spec/framework_spec/app/spec/core/time/subsec_spec.rb +7 -0
  2376. data/spec/framework_spec/app/spec/core/time/succ_spec.rb +3 -3
  2377. data/spec/framework_spec/app/spec/core/time/sunday_spec.rb +7 -0
  2378. data/spec/framework_spec/app/spec/core/time/thursday_spec.rb +7 -0
  2379. data/spec/framework_spec/app/spec/core/time/times_spec.rb +2 -2
  2380. data/spec/framework_spec/app/spec/core/time/to_a_spec.rb +4 -3
  2381. data/spec/framework_spec/app/spec/core/time/to_f_spec.rb +2 -2
  2382. data/spec/framework_spec/app/spec/core/time/to_i_spec.rb +3 -3
  2383. data/spec/framework_spec/app/spec/core/time/to_r_spec.rb +13 -0
  2384. data/spec/framework_spec/app/spec/core/time/to_s_spec.rb +11 -2
  2385. data/spec/framework_spec/app/spec/core/time/tuesday_spec.rb +7 -0
  2386. data/spec/framework_spec/app/spec/core/time/tv_nsec_spec.rb +7 -0
  2387. data/spec/framework_spec/app/spec/core/time/tv_sec_spec.rb +3 -3
  2388. data/spec/framework_spec/app/spec/core/time/tv_usec_spec.rb +6 -2
  2389. data/spec/framework_spec/app/spec/core/time/usec_spec.rb +8 -2
  2390. data/spec/framework_spec/app/spec/core/time/utc_offset_spec.rb +3 -3
  2391. data/spec/framework_spec/app/spec/core/time/utc_spec.rb +7 -7
  2392. data/spec/framework_spec/app/spec/core/time/wday_spec.rb +2 -2
  2393. data/spec/framework_spec/app/spec/core/time/wednesday_spec.rb +7 -0
  2394. data/spec/framework_spec/app/spec/core/time/yday_spec.rb +2 -2
  2395. data/spec/framework_spec/app/spec/core/time/year_spec.rb +3 -3
  2396. data/spec/framework_spec/app/spec/core/time/zone_spec.rb +4 -3
  2397. data/spec/framework_spec/app/spec/core/true/and_spec.rb +1 -1
  2398. data/spec/framework_spec/app/spec/core/true/inspect_spec.rb +1 -1
  2399. data/spec/framework_spec/app/spec/core/true/or_spec.rb +1 -1
  2400. data/spec/framework_spec/app/spec/core/true/to_s_spec.rb +1 -1
  2401. data/spec/framework_spec/app/spec/core/true/xor_spec.rb +1 -1
  2402. data/spec/framework_spec/app/spec/core/unboundmethod/arity_spec.rb +2 -2
  2403. data/spec/framework_spec/app/spec/core/unboundmethod/bind_spec.rb +26 -6
  2404. data/spec/framework_spec/app/spec/core/unboundmethod/clone_spec.rb +2 -2
  2405. data/spec/framework_spec/app/spec/core/unboundmethod/eql_spec.rb +7 -0
  2406. data/spec/framework_spec/app/spec/core/unboundmethod/equal_value_spec.rb +4 -4
  2407. data/spec/framework_spec/app/spec/core/unboundmethod/fixtures/classes.rb +4 -1
  2408. data/spec/framework_spec/app/spec/core/unboundmethod/hash_spec.rb +7 -0
  2409. data/spec/framework_spec/app/spec/core/unboundmethod/inspect_spec.rb +3 -3
  2410. data/spec/framework_spec/app/spec/core/unboundmethod/name_spec.rb +19 -5
  2411. data/spec/framework_spec/app/spec/core/unboundmethod/owner_spec.rb +4 -4
  2412. data/spec/framework_spec/app/spec/core/unboundmethod/parameters_spec.rb +7 -0
  2413. data/spec/framework_spec/app/spec/core/unboundmethod/shared/to_s.rb +4 -4
  2414. data/spec/framework_spec/app/spec/core/unboundmethod/source_location_spec.rb +31 -0
  2415. data/spec/framework_spec/app/spec/core/unboundmethod/to_s_spec.rb +3 -3
  2416. data/spec/framework_spec/app/spec/fixtures/class.rb +39 -16
  2417. data/spec/framework_spec/app/spec/fixtures/class_variables.rb +7 -7
  2418. data/spec/framework_spec/app/spec/fixtures/code/file_fixture.rb +1 -0
  2419. data/spec/framework_spec/app/spec/fixtures/code/line_fixture.rb +5 -0
  2420. data/spec/framework_spec/app/spec/fixtures/code/load_ext_fixture.rb +1 -0
  2421. data/spec/framework_spec/app/spec/fixtures/code/load_fixture +1 -0
  2422. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.bundle +1 -0
  2423. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.dll +1 -0
  2424. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.dylib +1 -0
  2425. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext +1 -0
  2426. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.bundle +1 -0
  2427. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.dll +1 -0
  2428. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.dylib +1 -0
  2429. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.rb +1 -0
  2430. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.ext.so +1 -0
  2431. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.rb +1 -0
  2432. data/spec/framework_spec/app/spec/fixtures/code/load_fixture.so +1 -0
  2433. data/spec/framework_spec/app/spec/fixtures/code/methods_fixture.rb +364 -0
  2434. data/spec/framework_spec/app/spec/fixtures/code/raise_fixture.rb +1 -0
  2435. data/spec/framework_spec/app/spec/fixtures/code/recursive_load_fixture.rb +5 -0
  2436. data/spec/framework_spec/app/spec/fixtures/code/recursive_require_fixture.rb +3 -0
  2437. data/spec/framework_spec/app/spec/fixtures/code/wrap_fixture.rb +3 -0
  2438. data/spec/framework_spec/app/spec/fixtures/code_loading.rb +30 -0
  2439. data/spec/framework_spec/app/spec/fixtures/enumerator/classes.rb +15 -0
  2440. data/spec/framework_spec/app/spec/fixtures/kernel/callcc.rb +17 -0
  2441. data/spec/framework_spec/app/spec/fixtures/kernel/classes.rb +56 -0
  2442. data/spec/framework_spec/app/spec/fixtures/math/common.rb +3 -0
  2443. data/spec/framework_spec/app/spec/fixtures/reflection.rb +352 -0
  2444. data/spec/framework_spec/app/spec/language/BEGIN_spec.rb +57 -0
  2445. data/spec/framework_spec/app/spec/language/README +1 -1
  2446. data/spec/framework_spec/app/spec/language/alias_spec.rb +33 -20
  2447. data/spec/framework_spec/app/spec/language/and_spec.rb +8 -8
  2448. data/spec/framework_spec/app/spec/language/array_spec.rb +5 -5
  2449. data/spec/framework_spec/app/spec/language/block_spec.rb +408 -27
  2450. data/spec/framework_spec/app/spec/language/break_spec.rb +210 -280
  2451. data/spec/framework_spec/app/spec/language/case_spec.rb +37 -38
  2452. data/spec/framework_spec/app/spec/language/class_spec.rb +52 -70
  2453. data/spec/framework_spec/app/spec/language/class_variable_spec.rb +6 -6
  2454. data/spec/framework_spec/app/spec/language/{constants_spec_dontrun.rb → constants_spec.rb} +14 -0
  2455. data/spec/framework_spec/app/spec/language/def_spec.rb +83 -68
  2456. data/spec/framework_spec/app/spec/language/defined_spec.rb +1181 -142
  2457. data/spec/framework_spec/app/spec/language/encoding_spec.rb +19 -20
  2458. data/spec/framework_spec/app/spec/language/ensure_spec.rb +32 -37
  2459. data/spec/framework_spec/app/spec/language/execution_spec.rb +9 -11
  2460. data/spec/framework_spec/app/spec/language/file_spec.rb +21 -39
  2461. data/spec/framework_spec/app/spec/language/fixtures/block.rb +26 -15
  2462. data/spec/framework_spec/app/spec/language/fixtures/break.rb +240 -0
  2463. data/spec/framework_spec/app/spec/language/fixtures/break_lambda_toplevel.rb +9 -0
  2464. data/spec/framework_spec/app/spec/language/fixtures/break_lambda_toplevel_block.rb +23 -0
  2465. data/spec/framework_spec/app/spec/language/fixtures/break_lambda_toplevel_method.rb +17 -0
  2466. data/spec/framework_spec/app/spec/language/fixtures/classes.rb +8 -8
  2467. data/spec/framework_spec/app/spec/language/fixtures/defined.rb +270 -0
  2468. data/spec/framework_spec/app/spec/language/fixtures/ensure.rb +6 -6
  2469. data/spec/framework_spec/app/spec/language/fixtures/file.rb +1 -1
  2470. data/spec/framework_spec/app/spec/language/fixtures/literal_lambda.rb +7 -0
  2471. data/spec/framework_spec/app/spec/language/fixtures/next.rb +128 -0
  2472. data/spec/framework_spec/app/spec/language/fixtures/private.rb +3 -3
  2473. data/spec/framework_spec/app/spec/language/fixtures/return.rb +44 -0
  2474. data/spec/framework_spec/app/spec/language/fixtures/rubyopt.rb +1 -0
  2475. data/spec/framework_spec/app/spec/language/fixtures/send.rb +110 -0
  2476. data/spec/framework_spec/app/spec/language/fixtures/send_1.9.rb +20 -0
  2477. data/spec/framework_spec/app/spec/language/fixtures/super.rb +38 -7
  2478. data/spec/framework_spec/app/spec/language/fixtures/variables.rb +1 -1
  2479. data/spec/framework_spec/app/spec/language/fixtures/yield.rb +20 -2
  2480. data/spec/framework_spec/app/spec/language/for_spec.rb +63 -39
  2481. data/spec/framework_spec/app/spec/language/hash_spec.rb +26 -1
  2482. data/spec/framework_spec/app/spec/language/if_spec.rb +32 -2
  2483. data/spec/framework_spec/app/spec/language/line_spec.rb +42 -17
  2484. data/spec/framework_spec/app/spec/language/literal_lambda_spec.rb +1 -0
  2485. data/spec/framework_spec/app/spec/language/loop_spec.rb +7 -8
  2486. data/spec/framework_spec/app/spec/language/magic_comment_spec.rb +60 -61
  2487. data/spec/framework_spec/app/spec/language/metaclass_spec.rb +21 -24
  2488. data/spec/framework_spec/app/spec/language/module_spec.rb +46 -1
  2489. data/spec/framework_spec/app/spec/language/next_spec.rb +241 -7
  2490. data/spec/framework_spec/app/spec/language/not_spec.rb +22 -2
  2491. data/spec/framework_spec/app/spec/language/numbers_spec.rb +5 -6
  2492. data/spec/framework_spec/app/spec/language/or_spec.rb +33 -7
  2493. data/spec/framework_spec/app/spec/language/order_spec.rb +3 -3
  2494. data/spec/framework_spec/app/spec/language/precedence_spec.rb +31 -33
  2495. data/spec/framework_spec/app/spec/language/predefined/data_spec.rb +45 -0
  2496. data/spec/framework_spec/app/spec/language/{fixtures/predefined.rb → predefined/fixtures/data1.rb} +2 -0
  2497. data/spec/framework_spec/app/spec/language/predefined/fixtures/data2.rb +4 -0
  2498. data/spec/framework_spec/app/spec/language/predefined/fixtures/data3.rb +7 -0
  2499. data/spec/framework_spec/app/spec/language/predefined/fixtures/data4.rb +4 -0
  2500. data/spec/framework_spec/app/spec/{core/io/data/fixtures/data2.rb → language/predefined/fixtures/data_flock.rb} +1 -1
  2501. data/spec/framework_spec/app/spec/language/predefined/fixtures/data_only.rb +2 -0
  2502. data/spec/framework_spec/app/spec/language/predefined/fixtures/print_data.rb +3 -0
  2503. data/spec/framework_spec/app/spec/language/predefined_spec.rb +599 -283
  2504. data/spec/framework_spec/app/spec/language/private_spec.rb +4 -4
  2505. data/spec/framework_spec/app/spec/language/proc_spec.rb +238 -0
  2506. data/spec/framework_spec/app/spec/language/redo_spec.rb +2 -2
  2507. data/spec/framework_spec/app/spec/language/regexp/anchors_spec.rb +163 -0
  2508. data/spec/framework_spec/app/spec/language/regexp/back-references_spec.rb +50 -0
  2509. data/spec/framework_spec/app/spec/language/regexp/character_classes_spec.rb +96 -0
  2510. data/spec/framework_spec/app/spec/language/regexp/encoding_spec.rb +129 -0
  2511. data/spec/framework_spec/app/spec/language/regexp/escapes_spec.rb +80 -0
  2512. data/spec/framework_spec/app/spec/language/regexp/grouping_spec.rb +23 -0
  2513. data/spec/framework_spec/app/spec/language/regexp/interpolation_spec.rb +55 -0
  2514. data/spec/framework_spec/app/spec/language/regexp/modifiers_spec.rb +132 -0
  2515. data/spec/framework_spec/app/spec/language/regexp/repetition_spec.rb +47 -0
  2516. data/spec/framework_spec/app/spec/language/regexp/versions/character_classes_1.9.rb +499 -0
  2517. data/spec/framework_spec/app/spec/language/regexp_spec.rb +42 -677
  2518. data/spec/framework_spec/app/spec/language/rescue_spec.rb +57 -8
  2519. data/spec/framework_spec/app/spec/language/retry_spec.rb +4 -4
  2520. data/spec/framework_spec/app/spec/language/return_spec.rb +11 -2
  2521. data/spec/framework_spec/app/spec/language/send_spec.rb +227 -0
  2522. data/spec/framework_spec/app/spec/language/shared/__FILE__.rb +37 -0
  2523. data/spec/framework_spec/app/spec/language/shared/__LINE__.rb +17 -0
  2524. data/spec/framework_spec/app/spec/language/singleton_class_spec.rb +299 -0
  2525. data/spec/framework_spec/app/spec/language/splat_spec.rb +188 -0
  2526. data/spec/framework_spec/app/spec/language/string_spec.rb +42 -7
  2527. data/spec/framework_spec/app/spec/language/super_spec.rb +11 -5
  2528. data/spec/framework_spec/app/spec/language/symbol_spec.rb +18 -11
  2529. data/spec/framework_spec/app/spec/language/throw_spec.rb +3 -3
  2530. data/spec/framework_spec/app/spec/language/undef_spec.rb +1 -1
  2531. data/spec/framework_spec/app/spec/language/unless_spec.rb +8 -8
  2532. data/spec/framework_spec/app/spec/language/until_spec.rb +27 -27
  2533. data/spec/framework_spec/app/spec/language/variables_spec.rb +57 -61
  2534. data/spec/framework_spec/app/spec/language/versions/array_1.9.rb +8 -0
  2535. data/spec/framework_spec/app/spec/language/versions/block_1.9.rb +80 -17
  2536. data/spec/framework_spec/app/spec/language/versions/case_1.9.rb +5 -5
  2537. data/spec/framework_spec/app/spec/language/versions/hash_1.9.rb +19 -0
  2538. data/spec/framework_spec/app/spec/language/versions/literal_lambda_1.9.rb +143 -0
  2539. data/spec/framework_spec/app/spec/language/versions/not_1.9.rb +22 -0
  2540. data/spec/framework_spec/app/spec/language/versions/regexp_1.9.rb +3 -3
  2541. data/spec/framework_spec/app/spec/language/versions/send_1.9.rb +196 -0
  2542. data/spec/framework_spec/app/spec/language/versions/symbol_1.9.rb +10 -2
  2543. data/spec/framework_spec/app/spec/language/versions/variables_1.9.rb +8 -0
  2544. data/spec/framework_spec/app/spec/language/while_spec.rb +24 -24
  2545. data/spec/framework_spec/app/spec/language/yield_spec.rb +105 -84
  2546. data/spec/framework_spec/app/spec/library/base64/b64encode_spec.rb +36 -0
  2547. data/spec/framework_spec/app/spec/library/base64/decode64_spec.rb +9 -0
  2548. data/spec/framework_spec/app/spec/library/base64/decode_b_spec.rb +19 -0
  2549. data/spec/framework_spec/app/spec/library/base64/encode64_spec.rb +14 -0
  2550. data/spec/framework_spec/app/spec/library/digest/hexencode_spec.rb +31 -0
  2551. data/spec/framework_spec/app/spec/library/digest/md5/append_spec.rb +3 -3
  2552. data/spec/framework_spec/app/spec/library/digest/md5/block_length_spec.rb +2 -2
  2553. data/spec/framework_spec/app/spec/library/digest/md5/digest_bang_spec.rb +2 -2
  2554. data/spec/framework_spec/app/spec/library/digest/md5/digest_length_spec.rb +2 -2
  2555. data/spec/framework_spec/app/spec/library/digest/md5/digest_spec.rb +2 -2
  2556. data/spec/framework_spec/app/spec/library/digest/md5/equal_spec.rb +2 -2
  2557. data/spec/framework_spec/app/spec/library/digest/md5/file_spec.rb +48 -0
  2558. data/spec/framework_spec/app/spec/library/digest/md5/hexdigest_bang_spec.rb +2 -2
  2559. data/spec/framework_spec/app/spec/library/digest/md5/hexdigest_spec.rb +2 -2
  2560. data/spec/framework_spec/app/spec/library/digest/md5/inspect_spec.rb +2 -2
  2561. data/spec/framework_spec/app/spec/library/digest/md5/length_spec.rb +3 -3
  2562. data/spec/framework_spec/app/spec/library/digest/md5/reset_spec.rb +2 -2
  2563. data/spec/framework_spec/app/spec/library/digest/md5/shared/constants.rb +1 -1
  2564. data/spec/framework_spec/app/spec/library/digest/md5/shared/sample.rb +1 -1
  2565. data/spec/framework_spec/app/spec/library/digest/md5/size_spec.rb +3 -3
  2566. data/spec/framework_spec/app/spec/library/digest/md5/to_s_spec.rb +2 -2
  2567. data/spec/framework_spec/app/spec/library/digest/md5/update_spec.rb +3 -3
  2568. data/spec/framework_spec/app/spec/library/digest/sha1/digest_spec.rb +2 -2
  2569. data/spec/framework_spec/app/spec/library/digest/sha1/file_spec.rb +43 -0
  2570. data/spec/framework_spec/app/spec/library/digest/sha1/shared/constants.rb +1 -1
  2571. data/spec/framework_spec/app/spec/library/set/add_spec.rb +27 -0
  2572. data/spec/framework_spec/app/spec/library/set/append_spec.rb +7 -0
  2573. data/spec/framework_spec/app/spec/library/set/classify_spec.rb +35 -0
  2574. data/spec/framework_spec/app/spec/library/set/clear_spec.rb +17 -0
  2575. data/spec/framework_spec/app/spec/library/set/collect_spec.rb +7 -0
  2576. data/spec/framework_spec/app/spec/library/set/constructor_spec.rb +15 -0
  2577. data/spec/framework_spec/app/spec/library/set/delete_if_spec.rb +46 -0
  2578. data/spec/framework_spec/app/spec/library/set/delete_spec.rb +37 -0
  2579. data/spec/framework_spec/app/spec/library/set/difference_spec.rb +7 -0
  2580. data/spec/framework_spec/app/spec/library/set/divide_spec.rb +34 -0
  2581. data/spec/framework_spec/app/spec/library/set/each_spec.rb +34 -0
  2582. data/spec/framework_spec/app/spec/library/set/empty_spec.rb +10 -0
  2583. data/spec/framework_spec/app/spec/library/set/enumerable/to_set_spec.rb +19 -0
  2584. data/spec/framework_spec/app/spec/library/set/eql_spec.rb +17 -0
  2585. data/spec/framework_spec/app/spec/library/set/equal_value_spec.rb +38 -0
  2586. data/spec/framework_spec/app/spec/library/set/exclusion_spec.rb +18 -0
  2587. data/spec/framework_spec/app/spec/library/set/flatten_merge_spec.rb +23 -0
  2588. data/spec/framework_spec/app/spec/library/set/flatten_spec.rb +40 -0
  2589. data/spec/framework_spec/app/spec/library/set/hash_spec.rb +15 -0
  2590. data/spec/framework_spec/app/spec/library/set/include_spec.rb +7 -0
  2591. data/spec/framework_spec/app/spec/library/set/initialize_copy_spec.rb +18 -0
  2592. data/spec/framework_spec/app/spec/library/set/initialize_spec.rb +24 -0
  2593. data/spec/framework_spec/app/spec/library/set/inspect_spec.rb +18 -0
  2594. data/spec/framework_spec/app/spec/library/set/intersection_spec.rb +11 -0
  2595. data/spec/framework_spec/app/spec/library/set/keep_if_spec.rb +41 -0
  2596. data/spec/framework_spec/app/spec/library/set/length_spec.rb +7 -0
  2597. data/spec/framework_spec/app/spec/library/set/map_spec.rb +7 -0
  2598. data/spec/framework_spec/app/spec/library/set/member_spec.rb +7 -0
  2599. data/spec/framework_spec/app/spec/library/set/merge_spec.rb +19 -0
  2600. data/spec/framework_spec/app/spec/library/set/minus_spec.rb +7 -0
  2601. data/spec/framework_spec/app/spec/library/set/plus_spec.rb +7 -0
  2602. data/spec/framework_spec/app/spec/library/set/pretty_print_cycle_spec.rb +10 -0
  2603. data/spec/framework_spec/app/spec/library/set/pretty_print_spec.rb +17 -0
  2604. data/spec/framework_spec/app/spec/library/set/proper_subset_spec.rb +34 -0
  2605. data/spec/framework_spec/app/spec/library/set/proper_superset_spec.rb +34 -0
  2606. data/spec/framework_spec/app/spec/library/set/reject_spec.rb +50 -0
  2607. data/spec/framework_spec/app/spec/library/set/replace_spec.rb +17 -0
  2608. data/spec/framework_spec/app/spec/library/set/select_spec.rb +45 -0
  2609. data/spec/framework_spec/app/spec/library/set/shared/add.rb +14 -0
  2610. data/spec/framework_spec/app/spec/library/set/shared/collect.rb +20 -0
  2611. data/spec/framework_spec/app/spec/library/set/shared/difference.rb +15 -0
  2612. data/spec/framework_spec/app/spec/library/set/shared/include.rb +7 -0
  2613. data/spec/framework_spec/app/spec/library/set/shared/intersection.rb +15 -0
  2614. data/spec/framework_spec/app/spec/library/set/shared/length.rb +6 -0
  2615. data/spec/framework_spec/app/spec/library/set/shared/union.rb +15 -0
  2616. data/spec/framework_spec/app/spec/library/set/size_spec.rb +7 -0
  2617. data/spec/framework_spec/app/spec/library/set/sortedset/add_spec.rb +36 -0
  2618. data/spec/framework_spec/app/spec/library/set/sortedset/append_spec.rb +7 -0
  2619. data/spec/framework_spec/app/spec/library/set/sortedset/classify_spec.rb +35 -0
  2620. data/spec/framework_spec/app/spec/library/set/sortedset/clear_spec.rb +17 -0
  2621. data/spec/framework_spec/app/spec/library/set/sortedset/collect_spec.rb +7 -0
  2622. data/spec/framework_spec/app/spec/library/set/sortedset/constructor_spec.rb +15 -0
  2623. data/spec/framework_spec/app/spec/library/set/sortedset/delete_if_spec.rb +48 -0
  2624. data/spec/framework_spec/app/spec/library/set/sortedset/delete_spec.rb +37 -0
  2625. data/spec/framework_spec/app/spec/library/set/sortedset/difference_spec.rb +7 -0
  2626. data/spec/framework_spec/app/spec/library/set/sortedset/divide_spec.rb +34 -0
  2627. data/spec/framework_spec/app/spec/library/set/sortedset/each_spec.rb +36 -0
  2628. data/spec/framework_spec/app/spec/library/set/sortedset/empty_spec.rb +10 -0
  2629. data/spec/framework_spec/app/spec/library/set/sortedset/eql_spec.rb +18 -0
  2630. data/spec/framework_spec/app/spec/library/set/sortedset/equal_value_spec.rb +13 -0
  2631. data/spec/framework_spec/app/spec/library/set/sortedset/exclusion_spec.rb +18 -0
  2632. data/spec/framework_spec/app/spec/library/set/sortedset/flatten_merge_spec.rb +8 -0
  2633. data/spec/framework_spec/app/spec/library/set/sortedset/flatten_spec.rb +48 -0
  2634. data/spec/framework_spec/app/spec/library/set/sortedset/hash_spec.rb +15 -0
  2635. data/spec/framework_spec/app/spec/library/set/sortedset/include_spec.rb +7 -0
  2636. data/spec/framework_spec/app/spec/library/set/sortedset/initialize_copy_spec.rb +18 -0
  2637. data/spec/framework_spec/app/spec/library/set/sortedset/initialize_spec.rb +32 -0
  2638. data/spec/framework_spec/app/spec/library/set/sortedset/inspect_spec.rb +10 -0
  2639. data/spec/framework_spec/app/spec/library/set/sortedset/intersection_spec.rb +11 -0
  2640. data/spec/framework_spec/app/spec/library/set/sortedset/keep_if_spec.rb +34 -0
  2641. data/spec/framework_spec/app/spec/library/set/sortedset/length_spec.rb +7 -0
  2642. data/spec/framework_spec/app/spec/library/set/sortedset/map_spec.rb +7 -0
  2643. data/spec/framework_spec/app/spec/library/set/sortedset/member_spec.rb +7 -0
  2644. data/spec/framework_spec/app/spec/library/set/sortedset/merge_spec.rb +19 -0
  2645. data/spec/framework_spec/app/spec/library/set/sortedset/minus_spec.rb +7 -0
  2646. data/spec/framework_spec/app/spec/library/set/sortedset/plus_spec.rb +7 -0
  2647. data/spec/framework_spec/app/spec/library/set/sortedset/pretty_print_cycle_spec.rb +10 -0
  2648. data/spec/framework_spec/app/spec/library/set/sortedset/pretty_print_spec.rb +17 -0
  2649. data/spec/framework_spec/app/spec/library/set/sortedset/proper_subset_spec.rb +33 -0
  2650. data/spec/framework_spec/app/spec/library/set/sortedset/proper_superset_spec.rb +33 -0
  2651. data/spec/framework_spec/app/spec/library/set/sortedset/reject_spec.rb +52 -0
  2652. data/spec/framework_spec/app/spec/library/set/sortedset/replace_spec.rb +17 -0
  2653. data/spec/framework_spec/app/spec/library/set/sortedset/select_spec.rb +38 -0
  2654. data/spec/framework_spec/app/spec/library/set/sortedset/shared/add.rb +14 -0
  2655. data/spec/framework_spec/app/spec/library/set/sortedset/shared/collect.rb +20 -0
  2656. data/spec/framework_spec/app/spec/library/set/sortedset/shared/difference.rb +15 -0
  2657. data/spec/framework_spec/app/spec/library/set/sortedset/shared/include.rb +7 -0
  2658. data/spec/framework_spec/app/spec/library/set/sortedset/shared/intersection.rb +15 -0
  2659. data/spec/framework_spec/app/spec/library/set/sortedset/shared/length.rb +6 -0
  2660. data/spec/framework_spec/app/spec/library/set/sortedset/shared/union.rb +15 -0
  2661. data/spec/framework_spec/app/spec/library/set/sortedset/size_spec.rb +7 -0
  2662. data/spec/framework_spec/app/spec/library/set/sortedset/subset_spec.rb +33 -0
  2663. data/spec/framework_spec/app/spec/library/set/sortedset/subtract_spec.rb +17 -0
  2664. data/spec/framework_spec/app/spec/library/set/sortedset/superset_spec.rb +33 -0
  2665. data/spec/framework_spec/app/spec/library/set/sortedset/to_a_spec.rb +8 -0
  2666. data/spec/framework_spec/app/spec/library/set/sortedset/union_spec.rb +11 -0
  2667. data/spec/framework_spec/app/spec/library/set/subset_spec.rb +34 -0
  2668. data/spec/framework_spec/app/spec/library/set/subtract_spec.rb +17 -0
  2669. data/spec/framework_spec/app/spec/library/set/superset_spec.rb +34 -0
  2670. data/spec/framework_spec/app/spec/library/set/to_a_spec.rb +8 -0
  2671. data/spec/framework_spec/app/spec/library/set/union_spec.rb +11 -0
  2672. data/spec/framework_spec/app/spec/library/stringio/append_spec.rb +84 -0
  2673. data/spec/framework_spec/app/spec/library/stringio/binmode_spec.rb +9 -0
  2674. data/spec/framework_spec/app/spec/library/stringio/bytes_spec.rb +13 -0
  2675. data/spec/framework_spec/app/spec/library/stringio/chars_spec.rb +13 -0
  2676. data/spec/framework_spec/app/spec/library/stringio/close_read_spec.rb +31 -0
  2677. data/spec/framework_spec/app/spec/library/stringio/close_spec.rb +23 -0
  2678. data/spec/framework_spec/app/spec/library/stringio/close_write_spec.rb +31 -0
  2679. data/spec/framework_spec/app/spec/library/stringio/closed_read_spec.rb +12 -0
  2680. data/spec/framework_spec/app/spec/library/stringio/closed_spec.rb +16 -0
  2681. data/spec/framework_spec/app/spec/library/stringio/closed_write_spec.rb +12 -0
  2682. data/spec/framework_spec/app/spec/library/stringio/codepoints.rb +11 -0
  2683. data/spec/framework_spec/app/spec/library/stringio/each_byte_spec.rb +11 -0
  2684. data/spec/framework_spec/app/spec/library/stringio/each_char_spec.rb +13 -0
  2685. data/spec/framework_spec/app/spec/library/stringio/each_codepoint.rb +12 -0
  2686. data/spec/framework_spec/app/spec/library/stringio/each_line_spec.rb +15 -0
  2687. data/spec/framework_spec/app/spec/library/stringio/each_spec.rb +15 -0
  2688. data/spec/framework_spec/app/spec/library/stringio/eof_spec.rb +11 -0
  2689. data/spec/framework_spec/app/spec/library/stringio/external_encoding.rb +12 -0
  2690. data/spec/framework_spec/app/spec/library/stringio/fcntl_spec.rb +8 -0
  2691. data/spec/framework_spec/app/spec/library/stringio/fileno_spec.rb +9 -0
  2692. data/spec/framework_spec/app/spec/library/stringio/fixtures/classes.rb +15 -0
  2693. data/spec/framework_spec/app/spec/library/stringio/flush_spec.rb +9 -0
  2694. data/spec/framework_spec/app/spec/library/stringio/fsync_spec.rb +9 -0
  2695. data/spec/framework_spec/app/spec/library/stringio/getbyte_spec.rb +21 -0
  2696. data/spec/framework_spec/app/spec/library/stringio/getc_spec.rb +19 -0
  2697. data/spec/framework_spec/app/spec/library/stringio/gets_spec.rb +139 -0
  2698. data/spec/framework_spec/app/spec/library/stringio/initialize_copy_spec.rb +96 -0
  2699. data/spec/framework_spec/app/spec/library/stringio/initialize_spec.rb +194 -0
  2700. data/spec/framework_spec/app/spec/library/stringio/internal_encoding.rb +12 -0
  2701. data/spec/framework_spec/app/spec/library/stringio/isatty_spec.rb +7 -0
  2702. data/spec/framework_spec/app/spec/library/stringio/length_spec.rb +7 -0
  2703. data/spec/framework_spec/app/spec/library/stringio/lineno_spec.rb +30 -0
  2704. data/spec/framework_spec/app/spec/library/stringio/lines_spec.rb +17 -0
  2705. data/spec/framework_spec/app/spec/library/stringio/open_spec.rb +216 -0
  2706. data/spec/framework_spec/app/spec/library/stringio/path_spec.rb +16 -0
  2707. data/spec/framework_spec/app/spec/library/stringio/pid_spec.rb +8 -0
  2708. data/spec/framework_spec/app/spec/library/stringio/pos_spec.rb +28 -0
  2709. data/spec/framework_spec/app/spec/library/stringio/print_spec.rb +114 -0
  2710. data/spec/framework_spec/app/spec/library/stringio/printf_spec.rb +61 -0
  2711. data/spec/framework_spec/app/spec/library/stringio/putc_spec.rb +88 -0
  2712. data/spec/framework_spec/app/spec/library/stringio/puts_spec.rb +159 -0
  2713. data/spec/framework_spec/app/spec/library/stringio/read_spec.rb +62 -0
  2714. data/spec/framework_spec/app/spec/library/stringio/readbyte_spec.rb +22 -0
  2715. data/spec/framework_spec/app/spec/library/stringio/readchar_spec.rb +20 -0
  2716. data/spec/framework_spec/app/spec/library/stringio/readline_spec.rb +128 -0
  2717. data/spec/framework_spec/app/spec/library/stringio/readlines_spec.rb +94 -0
  2718. data/spec/framework_spec/app/spec/library/stringio/readpartial_spec.rb +83 -0
  2719. data/spec/framework_spec/app/spec/library/stringio/reopen_spec.rb +304 -0
  2720. data/spec/framework_spec/app/spec/library/stringio/rewind_spec.rb +24 -0
  2721. data/spec/framework_spec/app/spec/library/stringio/seek_spec.rb +76 -0
  2722. data/spec/framework_spec/app/spec/library/stringio/set_encoding.rb +12 -0
  2723. data/spec/framework_spec/app/spec/library/stringio/shared/codepoints.rb +45 -0
  2724. data/spec/framework_spec/app/spec/library/stringio/shared/each.rb +115 -0
  2725. data/spec/framework_spec/app/spec/library/stringio/shared/each_byte.rb +60 -0
  2726. data/spec/framework_spec/app/spec/library/stringio/shared/each_char.rb +50 -0
  2727. data/spec/framework_spec/app/spec/library/stringio/shared/eof.rb +24 -0
  2728. data/spec/framework_spec/app/spec/library/stringio/shared/getc.rb +43 -0
  2729. data/spec/framework_spec/app/spec/library/stringio/shared/isatty.rb +5 -0
  2730. data/spec/framework_spec/app/spec/library/stringio/shared/length.rb +5 -0
  2731. data/spec/framework_spec/app/spec/library/stringio/shared/read.rb +125 -0
  2732. data/spec/framework_spec/app/spec/library/stringio/shared/readchar.rb +29 -0
  2733. data/spec/framework_spec/app/spec/library/stringio/shared/tell.rb +12 -0
  2734. data/spec/framework_spec/app/spec/library/stringio/shared/write.rb +87 -0
  2735. data/spec/framework_spec/app/spec/library/stringio/size_spec.rb +7 -0
  2736. data/spec/framework_spec/app/spec/library/stringio/string_spec.rb +50 -0
  2737. data/spec/framework_spec/app/spec/library/stringio/stringio_spec.rb +9 -0
  2738. data/spec/framework_spec/app/spec/library/stringio/sync_spec.rb +19 -0
  2739. data/spec/framework_spec/app/spec/library/stringio/sysread_spec.rb +54 -0
  2740. data/spec/framework_spec/app/spec/library/stringio/syswrite_spec.rb +19 -0
  2741. data/spec/framework_spec/app/spec/library/stringio/tell_spec.rb +7 -0
  2742. data/spec/framework_spec/app/spec/library/stringio/truncate_spec.rb +70 -0
  2743. data/spec/framework_spec/app/spec/library/stringio/tty_spec.rb +7 -0
  2744. data/spec/framework_spec/app/spec/library/stringio/ungetc_spec.rb +99 -0
  2745. data/spec/framework_spec/app/spec/library/stringio/write_spec.rb +19 -0
  2746. data/spec/framework_spec/app/spec/library/stringscanner/append_spec.rb +11 -0
  2747. data/spec/framework_spec/app/spec/library/stringscanner/beginning_of_line_spec.rb +7 -0
  2748. data/spec/framework_spec/app/spec/library/stringscanner/bol_spec.rb +7 -0
  2749. data/spec/framework_spec/app/spec/library/stringscanner/check_spec.rb +16 -0
  2750. data/spec/framework_spec/app/spec/library/stringscanner/check_until_spec.rb +15 -0
  2751. data/spec/framework_spec/app/spec/library/stringscanner/clear_spec.rb +26 -0
  2752. data/spec/framework_spec/app/spec/library/stringscanner/concat_spec.rb +11 -0
  2753. data/spec/framework_spec/app/spec/library/stringscanner/dup_spec.rb +39 -0
  2754. data/spec/framework_spec/app/spec/library/stringscanner/element_reference_spec.rb +49 -0
  2755. data/spec/framework_spec/app/spec/library/stringscanner/empty_spec.rb +26 -0
  2756. data/spec/framework_spec/app/spec/library/stringscanner/eos_spec.rb +7 -0
  2757. data/spec/framework_spec/app/spec/library/stringscanner/exist_spec.rb +24 -0
  2758. data/spec/framework_spec/app/spec/library/stringscanner/get_byte_spec.rb +7 -0
  2759. data/spec/framework_spec/app/spec/library/stringscanner/getbyte_spec.rb +29 -0
  2760. data/spec/framework_spec/app/spec/library/stringscanner/getch_spec.rb +44 -0
  2761. data/spec/framework_spec/app/spec/library/stringscanner/initialize_spec.rb +28 -0
  2762. data/spec/framework_spec/app/spec/library/stringscanner/inspect_spec.rb +20 -0
  2763. data/spec/framework_spec/app/spec/library/stringscanner/match_spec.rb +28 -0
  2764. data/spec/framework_spec/app/spec/library/stringscanner/matched_size_spec.rb +7 -0
  2765. data/spec/framework_spec/app/spec/library/stringscanner/matched_spec.rb +41 -0
  2766. data/spec/framework_spec/app/spec/library/stringscanner/matchedsize_spec.rb +27 -0
  2767. data/spec/framework_spec/app/spec/library/stringscanner/must_C_version_spec.rb +8 -0
  2768. data/spec/framework_spec/app/spec/library/stringscanner/peek_spec.rb +8 -0
  2769. data/spec/framework_spec/app/spec/library/stringscanner/peep_spec.rb +26 -0
  2770. data/spec/framework_spec/app/spec/library/stringscanner/pointer_spec.rb +11 -0
  2771. data/spec/framework_spec/app/spec/library/stringscanner/pos_spec.rb +11 -0
  2772. data/spec/framework_spec/app/spec/library/stringscanner/post_match_spec.rb +28 -0
  2773. data/spec/framework_spec/app/spec/library/stringscanner/pre_match_spec.rb +41 -0
  2774. data/spec/framework_spec/app/spec/library/stringscanner/reset_spec.rb +15 -0
  2775. data/spec/framework_spec/app/spec/library/stringscanner/rest_size_spec.rb +7 -0
  2776. data/spec/framework_spec/app/spec/library/stringscanner/rest_spec.rb +48 -0
  2777. data/spec/framework_spec/app/spec/library/stringscanner/restsize_spec.rb +26 -0
  2778. data/spec/framework_spec/app/spec/library/stringscanner/scan_full_spec.rb +30 -0
  2779. data/spec/framework_spec/app/spec/library/stringscanner/scan_spec.rb +43 -0
  2780. data/spec/framework_spec/app/spec/library/stringscanner/scan_until_spec.rb +23 -0
  2781. data/spec/framework_spec/app/spec/library/stringscanner/search_full_spec.rb +30 -0
  2782. data/spec/framework_spec/app/spec/library/stringscanner/shared/bol.rb +25 -0
  2783. data/spec/framework_spec/app/spec/library/stringscanner/shared/concat.rb +30 -0
  2784. data/spec/framework_spec/app/spec/library/stringscanner/shared/eos.rb +17 -0
  2785. data/spec/framework_spec/app/spec/library/stringscanner/shared/extract_range.rb +22 -0
  2786. data/spec/framework_spec/app/spec/library/stringscanner/shared/extract_range_matched.rb +22 -0
  2787. data/spec/framework_spec/app/spec/library/stringscanner/shared/get_byte.rb +28 -0
  2788. data/spec/framework_spec/app/spec/library/stringscanner/shared/matched_size.rb +21 -0
  2789. data/spec/framework_spec/app/spec/library/stringscanner/shared/peek.rb +44 -0
  2790. data/spec/framework_spec/app/spec/library/stringscanner/shared/pos.rb +52 -0
  2791. data/spec/framework_spec/app/spec/library/stringscanner/shared/rest_size.rb +18 -0
  2792. data/spec/framework_spec/app/spec/library/stringscanner/shared/terminate.rb +8 -0
  2793. data/spec/framework_spec/app/spec/library/stringscanner/skip_spec.rb +18 -0
  2794. data/spec/framework_spec/app/spec/library/stringscanner/skip_until_spec.rb +18 -0
  2795. data/spec/framework_spec/app/spec/library/stringscanner/string_spec.rb +40 -0
  2796. data/spec/framework_spec/app/spec/library/stringscanner/terminate_spec.rb +7 -0
  2797. data/spec/framework_spec/app/spec/library/stringscanner/unscan_spec.rb +29 -0
  2798. data/spec/framework_spec/app/spec/shared/complex/Complex.rb +76 -0
  2799. data/spec/framework_spec/app/spec/shared/complex/abs.rb +12 -0
  2800. data/spec/framework_spec/app/spec/shared/complex/abs2.rb +12 -0
  2801. data/spec/framework_spec/app/spec/shared/complex/arg.rb +9 -0
  2802. data/spec/framework_spec/app/spec/shared/complex/coerce.rb +41 -0
  2803. data/spec/framework_spec/app/spec/shared/complex/conjugate.rb +8 -0
  2804. data/spec/framework_spec/app/spec/shared/complex/denominator.rb +13 -0
  2805. data/spec/framework_spec/app/spec/shared/complex/divide.rb +57 -0
  2806. data/spec/framework_spec/app/spec/shared/complex/equal_value.rb +64 -0
  2807. data/spec/framework_spec/app/spec/shared/complex/exponent.rb +54 -0
  2808. data/spec/framework_spec/app/spec/shared/complex/hash.rb +16 -0
  2809. data/spec/framework_spec/app/spec/shared/complex/image.rb +10 -0
  2810. data/spec/framework_spec/app/spec/shared/complex/inspect.rb +29 -0
  2811. data/spec/framework_spec/app/spec/shared/complex/minus.rb +25 -0
  2812. data/spec/framework_spec/app/spec/shared/complex/modulo.rb +25 -0
  2813. data/spec/framework_spec/app/spec/shared/complex/multiply.rb +24 -0
  2814. data/spec/framework_spec/app/spec/shared/complex/numerator.rb +19 -0
  2815. data/spec/framework_spec/app/spec/shared/complex/numeric/arg.rb +43 -0
  2816. data/spec/framework_spec/app/spec/shared/complex/numeric/conj.rb +26 -0
  2817. data/spec/framework_spec/app/spec/shared/complex/numeric/imag.rb +26 -0
  2818. data/spec/framework_spec/app/spec/shared/complex/numeric/polar.rb +52 -0
  2819. data/spec/framework_spec/app/spec/shared/complex/numeric/real.rb +30 -0
  2820. data/spec/framework_spec/app/spec/shared/complex/plus.rb +25 -0
  2821. data/spec/framework_spec/app/spec/shared/complex/polar.rb +22 -0
  2822. data/spec/framework_spec/app/spec/shared/complex/real.rb +8 -0
  2823. data/spec/framework_spec/app/spec/shared/complex/rect.rb +45 -0
  2824. data/spec/framework_spec/app/spec/shared/complex/to_s.rb +39 -0
  2825. data/spec/framework_spec/app/spec/shared/continuation/call.rb +76 -0
  2826. data/spec/framework_spec/app/spec/shared/continuation/new.rb +5 -0
  2827. data/spec/framework_spec/app/spec/shared/enumerator/each.rb +45 -0
  2828. data/spec/framework_spec/app/spec/shared/enumerator/enum_cons.rb +12 -0
  2829. data/spec/framework_spec/app/spec/shared/enumerator/enum_for.rb +15 -0
  2830. data/spec/framework_spec/app/spec/shared/enumerator/new.rb +42 -0
  2831. data/spec/framework_spec/app/spec/shared/enumerator/next.rb +30 -0
  2832. data/spec/framework_spec/app/spec/shared/enumerator/rewind.rb +32 -0
  2833. data/spec/framework_spec/app/spec/shared/enumerator/with_index.rb +35 -0
  2834. data/spec/framework_spec/app/spec/shared/enumerator/with_object.rb +19 -0
  2835. data/spec/framework_spec/app/spec/shared/fiber/resume.rb +65 -0
  2836. data/spec/framework_spec/app/spec/shared/file/blockdev.rb +7 -1
  2837. data/spec/framework_spec/app/spec/shared/file/chardev.rb +7 -1
  2838. data/spec/framework_spec/app/spec/shared/file/directory.rb +59 -21
  2839. data/spec/framework_spec/app/spec/shared/file/executable.rb +10 -14
  2840. data/spec/framework_spec/app/spec/shared/file/executable_real.rb +15 -9
  2841. data/spec/framework_spec/app/spec/shared/file/exist.rb +9 -3
  2842. data/spec/framework_spec/app/spec/shared/file/file.rb +12 -10
  2843. data/spec/framework_spec/app/spec/shared/file/grpowned.rb +12 -6
  2844. data/spec/framework_spec/app/spec/shared/file/identical.rb +21 -16
  2845. data/spec/framework_spec/app/spec/shared/file/owned.rb +4 -0
  2846. data/spec/framework_spec/app/spec/shared/file/pipe.rb +4 -0
  2847. data/spec/framework_spec/app/spec/shared/file/readable.rb +16 -13
  2848. data/spec/framework_spec/app/spec/shared/file/readable_real.rb +7 -1
  2849. data/spec/framework_spec/app/spec/shared/file/size.rb +107 -15
  2850. data/spec/framework_spec/app/spec/shared/file/socket.rb +4 -0
  2851. data/spec/framework_spec/app/spec/shared/file/sticky.rb +30 -0
  2852. data/spec/framework_spec/app/spec/shared/file/symlink.rb +20 -14
  2853. data/spec/framework_spec/app/spec/shared/file/world_readable.rb +48 -0
  2854. data/spec/framework_spec/app/spec/shared/file/world_writable.rb +48 -0
  2855. data/spec/framework_spec/app/spec/shared/file/writable.rb +10 -7
  2856. data/spec/framework_spec/app/spec/shared/file/writable_real.rb +7 -1
  2857. data/spec/framework_spec/app/spec/shared/file/zero.rb +16 -17
  2858. data/spec/framework_spec/app/spec/shared/io/putc.rb +57 -0
  2859. data/spec/framework_spec/app/spec/shared/kernel/callcc.rb +68 -0
  2860. data/spec/framework_spec/app/spec/shared/kernel/method_missing.rb +60 -0
  2861. data/spec/framework_spec/app/spec/shared/kernel/singleton_method_added.rb +7 -0
  2862. data/spec/framework_spec/app/spec/shared/kernel/singleton_method_removed.rb +7 -0
  2863. data/spec/framework_spec/app/spec/shared/kernel/singleton_method_undefined.rb +7 -0
  2864. data/spec/framework_spec/app/spec/shared/math/atanh.rb +142 -0
  2865. data/spec/framework_spec/app/spec/shared/process/times.rb +8 -8
  2866. data/spec/framework_spec/app/spec/shared/rational/Rational.rb +113 -0
  2867. data/spec/framework_spec/app/spec/shared/rational/abs.rb +12 -0
  2868. data/spec/framework_spec/app/spec/shared/rational/ceil.rb +41 -0
  2869. data/spec/framework_spec/app/spec/shared/rational/coerce.rb +41 -0
  2870. data/spec/framework_spec/app/spec/shared/rational/comparison.rb +86 -0
  2871. data/spec/framework_spec/app/spec/shared/rational/denominator.rb +15 -0
  2872. data/spec/framework_spec/app/spec/shared/rational/div.rb +81 -0
  2873. data/spec/framework_spec/app/spec/shared/rational/divide.rb +72 -0
  2874. data/spec/framework_spec/app/spec/shared/rational/divmod.rb +53 -0
  2875. data/spec/framework_spec/app/spec/shared/rational/equal_value.rb +62 -0
  2876. data/spec/framework_spec/app/spec/shared/rational/exponent.rb +144 -0
  2877. data/spec/framework_spec/app/spec/shared/rational/fdiv.rb +5 -0
  2878. data/spec/framework_spec/app/spec/shared/rational/floor.rb +5 -0
  2879. data/spec/framework_spec/app/spec/shared/rational/hash.rb +10 -0
  2880. data/spec/framework_spec/app/spec/shared/rational/initialize.rb +25 -0
  2881. data/spec/framework_spec/app/spec/shared/rational/inspect.rb +24 -0
  2882. data/spec/framework_spec/app/spec/shared/rational/marshal_dump.rb +5 -0
  2883. data/spec/framework_spec/app/spec/shared/rational/marshal_load.rb +5 -0
  2884. data/spec/framework_spec/app/spec/shared/rational/minus.rb +49 -0
  2885. data/spec/framework_spec/app/spec/shared/rational/modulo.rb +52 -0
  2886. data/spec/framework_spec/app/spec/shared/rational/multiply.rb +63 -0
  2887. data/spec/framework_spec/app/spec/shared/rational/new.rb +21 -0
  2888. data/spec/framework_spec/app/spec/shared/rational/numerator.rb +11 -0
  2889. data/spec/framework_spec/app/spec/shared/rational/plus.rb +49 -0
  2890. data/spec/framework_spec/app/spec/shared/rational/quo.rb +5 -0
  2891. data/spec/framework_spec/app/spec/shared/rational/reduce.rb +31 -0
  2892. data/spec/framework_spec/app/spec/shared/rational/remainder.rb +5 -0
  2893. data/spec/framework_spec/app/spec/shared/rational/round.rb +5 -0
  2894. data/spec/framework_spec/app/spec/shared/rational/to_f.rb +11 -0
  2895. data/spec/framework_spec/app/spec/shared/rational/to_i.rb +15 -0
  2896. data/spec/framework_spec/app/spec/shared/rational/to_r.rb +14 -0
  2897. data/spec/framework_spec/app/spec/shared/rational/to_s.rb +24 -0
  2898. data/spec/framework_spec/app/spec/shared/rational/truncate.rb +5 -0
  2899. data/spec/framework_spec/app/spec/spec_helper.rb +1 -37
  2900. data/spec/framework_spec/app/spec/version.rb +3 -0
  2901. data/spec/framework_spec/app/spec_runner.rb +50 -80
  2902. data/spec/framework_spec/build.yml +3 -4
  2903. data/spec/framework_spec/rhoconfig.txt +4 -1
  2904. data/spec/phone_spec/app/spec/contacts_spec.rb +8 -4
  2905. data/spec/phone_spec/app/spec/date_spec.rb +17 -0
  2906. data/spec/phone_spec/app/spec/rhom_object_spec.rb +11 -0
  2907. data/spec/phone_spec/app/spec/syncengine_spec.rb +63 -1
  2908. data/spec/phone_spec/app/spec/uri_spec.rb +2 -0
  2909. data/spec/phone_spec/app/spec/xml_spec.rb +10 -3
  2910. data/spec/phone_spec/app/spec_runner.rb +1 -1
  2911. data/spec/phone_spec/build.yml +2 -2
  2912. data/spec/phone_spec/rhoconfig.txt +1 -0
  2913. metadata +1059 -91
  2914. data/Manifest.txt +0 -6338
  2915. data/doc/rhodes-api/alert-api.txt +0 -102
  2916. data/lib/extensions/mspec/mspec/fileutils.rb +0 -1589
  2917. data/lib/extensions/mspec/mspec/helpers/bignum.rb +0 -5
  2918. data/lib/extensions/mspec/mspec/helpers/infinity.rb +0 -5
  2919. data/lib/extensions/mspec/mspec/helpers/metaclass.rb +0 -7
  2920. data/lib/extensions/mspec/mspec/helpers/nan.rb +0 -5
  2921. data/platform/shared/ruby/blockinlining.c +0 -464
  2922. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b2.min.css +0 -8
  2923. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0b2.min.js +0 -155
  2924. data/res/generators/templates/application/public/jquery/jquery-1.6.2.min.js +0 -18
  2925. data/spec/framework_spec/app/spec/core/basicobject/basic_object_class_spec.rb +0 -18
  2926. data/spec/framework_spec/app/spec/core/basicobject/basic_object_spec.rb +0 -23
  2927. data/spec/framework_spec/app/spec/core/basicobject/basic_object_subclass_spec.rb +0 -25
  2928. data/spec/framework_spec/app/spec/core/basicobject/metaclass_spec.rb +0 -27
  2929. data/spec/framework_spec/app/spec/core/basicobject/remove_method_missing.rb +0 -14
  2930. data/spec/framework_spec/app/spec/core/basicobject/shared/behavior.rb +0 -16
  2931. data/spec/framework_spec/app/spec/core/builtin_constants/builtin_constants.rb +0 -13
  2932. data/spec/framework_spec/app/spec/core/continuation/continuation_spec.rb +0 -109
  2933. data/spec/framework_spec/app/spec/core/dir/new_spec.rb +0 -2
  2934. data/spec/framework_spec/app/spec/core/enumerable/each_spec.rb +0 -14
  2935. data/spec/framework_spec/app/spec/core/fiber/alive_spec.rb +0 -54
  2936. data/spec/framework_spec/app/spec/core/fiber/current_spec.rb +0 -63
  2937. data/spec/framework_spec/app/spec/core/fiber/shared/resume.rb +0 -71
  2938. data/spec/framework_spec/app/spec/core/fiber/transfer_spec.rb +0 -45
  2939. data/spec/framework_spec/app/spec/core/io/data/data_spec.rb +0 -13
  2940. data/spec/framework_spec/app/spec/core/io/data/fixtures/data1.rb +0 -3
  2941. data/spec/framework_spec/app/spec/core/io/data/flock_spec.rb +0 -22
  2942. data/spec/framework_spec/app/spec/core/io/fixtures/paragraphs.txt +0 -7
  2943. data/spec/framework_spec/app/spec/core/io/fixtures/readlines.txt +0 -6
  2944. data/spec/framework_spec/app/spec/core/kernel/__callee__spec.rb +0 -9
  2945. data/spec/framework_spec/app/spec/core/kernel/__method__spec.rb +0 -9
  2946. data/spec/framework_spec/app/spec/core/proc/fixtures/procs.rb +0 -5
  2947. data/spec/framework_spec/app/spec/find_spec.rb +0 -56
  2948. data/spec/framework_spec/app/spec/fixtures/load/load_spec +0 -1
  2949. data/spec/framework_spec/app/spec/fixtures/load/load_spec.rooby +0 -1
  2950. data/spec/framework_spec/app/spec/fixtures/load/load_spec_1.rb +0 -1
  2951. data/spec/framework_spec/app/spec/fixtures/load/load_spec_10.rb +0 -1
  2952. data/spec/framework_spec/app/spec/fixtures/load/load_spec_2.rb +0 -1
  2953. data/spec/framework_spec/app/spec/fixtures/load/load_spec_3.rb +0 -1
  2954. data/spec/framework_spec/app/spec/fixtures/load/load_spec_4.rb +0 -12
  2955. data/spec/framework_spec/app/spec/fixtures/load/load_spec_5.rb +0 -2
  2956. data/spec/framework_spec/app/spec/fixtures/load/load_spec_6.rb +0 -2
  2957. data/spec/framework_spec/app/spec/fixtures/load/load_spec_7.rb +0 -2
  2958. data/spec/framework_spec/app/spec/fixtures/load/load_spec_8.rb +0 -1
  2959. data/spec/framework_spec/app/spec/fixtures/load/load_spec_9.rb +0 -1
  2960. data/spec/framework_spec/app/spec/fixtures/load/load_spec_wrap.rb +0 -7
  2961. data/spec/framework_spec/app/spec/fixtures/load/load_spec_wrap2.rb +0 -7
  2962. data/spec/framework_spec/app/spec/fixtures/load/load_spec_wrap_2.rb +0 -7
  2963. data/spec/framework_spec/app/spec/fixtures/matrix.rb +0 -5
  2964. data/spec/framework_spec/app/spec/fixtures/require/masked_require_spec_2.rb +0 -1
  2965. data/spec/framework_spec/app/spec/fixtures/require/masked_require_spec_3.rb +0 -1
  2966. data/spec/framework_spec/app/spec/fixtures/require/require_spec +0 -1
  2967. data/spec/framework_spec/app/spec/fixtures/require/require_spec.rb +0 -1
  2968. data/spec/framework_spec/app/spec/fixtures/require/require_spec.rooby +0 -1
  2969. data/spec/framework_spec/app/spec/fixtures/require/require_spec.rooby.rb +0 -1
  2970. data/spec/framework_spec/app/spec/fixtures/require/require_spec_1.rb +0 -1
  2971. data/spec/framework_spec/app/spec/fixtures/require/require_spec_10.rb +0 -1
  2972. data/spec/framework_spec/app/spec/fixtures/require/require_spec_2.rb +0 -1
  2973. data/spec/framework_spec/app/spec/fixtures/require/require_spec_3.rb +0 -1
  2974. data/spec/framework_spec/app/spec/fixtures/require/require_spec_4.rb +0 -12
  2975. data/spec/framework_spec/app/spec/fixtures/require/require_spec_6.rb +0 -1
  2976. data/spec/framework_spec/app/spec/fixtures/require/require_spec_7.rb +0 -1
  2977. data/spec/framework_spec/app/spec/fixtures/require/require_spec_8.rb +0 -1
  2978. data/spec/framework_spec/app/spec/fixtures/require/require_spec_9.rb +0 -1
  2979. data/spec/framework_spec/app/spec/fixtures/require/require_spec_raises.rb +0 -3
  2980. data/spec/framework_spec/app/spec/fixtures/require/require_spec_recursive.rb +0 -2
  2981. data/spec/framework_spec/app/spec/language/catch_spec.rb +0 -84
  2982. data/spec/framework_spec/app/spec/language/eigenclass_spec.rb +0 -317
  2983. data/spec/framework_spec/app/spec/language/else_spec.rb +0 -1
  2984. data/spec/framework_spec/app/spec/language/method_spec.rb +0 -273
  2985. data/spec/framework_spec/app/spec/language/versions/array_1.8.rb +0 -13
  2986. data/spec/framework_spec/app/spec/language/versions/method_1.9.rb +0 -137
  2987. data/spec/framework_spec/app/spec/language/versions/symbol_1.8.rb +0 -5
@@ -2,7 +2,7 @@
2
2
 
3
3
  parse.y -
4
4
 
5
- $Author: mame $
5
+ $Author: yugui $
6
6
  created at: Fri May 28 18:02:42 JST 1993
7
7
 
8
8
  Copyright (C) 1993-2007 Yukihiro Matsumoto
@@ -26,6 +26,8 @@
26
26
  #include <errno.h>
27
27
  #include <ctype.h>
28
28
 
29
+ #define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
30
+
29
31
  #define YYMALLOC(size) rb_parser_malloc(parser, size)
30
32
  #define YYREALLOC(ptr, size) rb_parser_realloc(parser, ptr, size)
31
33
  #define YYCALLOC(nelem, size) rb_parser_calloc(parser, nelem, size)
@@ -59,20 +61,18 @@ enum lex_state_e {
59
61
  EXPR_BEG, /* ignore newline, +/- is a sign. */
60
62
  EXPR_END, /* newline significant, +/- is an operator. */
61
63
  EXPR_ENDARG, /* ditto, and unbound braces. */
64
+ EXPR_ENDFN, /* ditto, and unbound braces. */
62
65
  EXPR_ARG, /* newline significant, +/- is an operator. */
63
66
  EXPR_CMDARG, /* newline significant, +/- is an operator. */
64
67
  EXPR_MID, /* newline significant, +/- is an operator. */
65
68
  EXPR_FNAME, /* ignore newline, no reserved words. */
66
69
  EXPR_DOT, /* right after `.' or `::', no reserved words. */
67
70
  EXPR_CLASS, /* immediate after `class', no here document. */
68
- EXPR_VALUE /* alike EXPR_BEG but label is disallowed. */
71
+ EXPR_VALUE, /* alike EXPR_BEG but label is disallowed. */
72
+ EXPR_MAX_STATE
69
73
  };
70
74
 
71
- # ifdef HAVE_LONG_LONG
72
- typedef unsigned LONG_LONG stack_type;
73
- # else
74
- typedef unsigned long stack_type;
75
- # endif
75
+ typedef VALUE stack_type;
76
76
 
77
77
  # define BITSTACK_PUSH(stack, n) (stack = (stack<<1)|((n)&1))
78
78
  # define BITSTACK_POP(stack) (stack = stack >> 1)
@@ -107,7 +107,6 @@ struct local_vars {
107
107
  #define DVARS_SPECIAL_P(tbl) (!POINTER_P(tbl))
108
108
  #define POINTER_P(val) ((VALUE)(val) & ~(VALUE)3)
109
109
 
110
- #ifndef RIPPER
111
110
  static int
112
111
  vtable_size(const struct vtable *tbl)
113
112
  {
@@ -176,6 +175,7 @@ vtable_included(const struct vtable * tbl, ID id)
176
175
  }
177
176
 
178
177
 
178
+ #ifndef RIPPER
179
179
  typedef struct token_info {
180
180
  const char *token;
181
181
  int linenum;
@@ -225,7 +225,7 @@ struct parser_params {
225
225
  int parser_heredoc_end;
226
226
  int parser_command_start;
227
227
  NODE *parser_deferred_nodes;
228
- int parser_lex_gets_ptr;
228
+ long parser_lex_gets_ptr;
229
229
  VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
230
230
  struct local_vars *parser_lvtbl;
231
231
  int parser_ruby__end__seen;
@@ -363,6 +363,7 @@ static NODE *arg_concat_gen(struct parser_params*,NODE*,NODE*);
363
363
  #define arg_concat(h,t) arg_concat_gen(parser,h,t)
364
364
  static NODE *literal_concat_gen(struct parser_params*,NODE*,NODE*);
365
365
  #define literal_concat(h,t) literal_concat_gen(parser,h,t)
366
+ static int literal_concat0(struct parser_params *, VALUE, VALUE);
366
367
  static NODE *new_evstr_gen(struct parser_params*,NODE*);
367
368
  #define new_evstr(n) new_evstr_gen(parser,n)
368
369
  static NODE *evstr2dstr_gen(struct parser_params*,NODE*);
@@ -376,8 +377,6 @@ static NODE *call_uni_op_gen(struct parser_params*,NODE*,ID);
376
377
 
377
378
  static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,ID);
378
379
  #define new_args(f,o,r,p,b) new_args_gen(parser, f,o,r,p,b)
379
- static void shadowing_lvar_gen(struct parser_params*,ID);
380
- #define shadowing_lvar(name) shadowing_lvar_gen(parser, name)
381
380
 
382
381
  static NODE *negate_lit(NODE*);
383
382
  static NODE *ret_args_gen(struct parser_params*,NODE*);
@@ -390,8 +389,7 @@ static NODE *gettable_gen(struct parser_params*,ID);
390
389
  #define gettable(id) gettable_gen(parser,id)
391
390
  static NODE *assignable_gen(struct parser_params*,ID,NODE*);
392
391
  #define assignable(id,node) assignable_gen(parser, id, node)
393
- static void new_bv_gen(struct parser_params*,ID);
394
- #define new_bv(id) new_bv_gen(parser, id)
392
+
395
393
  static NODE *aryset_gen(struct parser_params*,NODE*,NODE*);
396
394
  #define aryset(node1,node2) aryset_gen(parser, node1, node2)
397
395
  static NODE *attrset_gen(struct parser_params*,NODE*,ID);
@@ -405,6 +403,46 @@ static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*);
405
403
  static NODE *match_op_gen(struct parser_params*,NODE*,NODE*);
406
404
  #define match_op(node1,node2) match_op_gen(parser, node1, node2)
407
405
 
406
+ static ID *local_tbl_gen(struct parser_params*);
407
+ #define local_tbl() local_tbl_gen(parser)
408
+
409
+ static void fixup_nodes(NODE **);
410
+
411
+ extern int rb_dvar_defined(ID);
412
+ extern int rb_local_defined(ID);
413
+ extern int rb_parse_in_eval(void);
414
+ extern int rb_parse_in_main(void);
415
+
416
+ static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
417
+ #define reg_compile(str,options) reg_compile_gen(parser, str, options)
418
+ static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int);
419
+ #define reg_fragment_setenc(str,options) reg_fragment_setenc_gen(parser, str, options)
420
+ static int reg_fragment_check_gen(struct parser_params*, VALUE, int);
421
+ #define reg_fragment_check(str,options) reg_fragment_check_gen(parser, str, options)
422
+ static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match);
423
+ #define reg_named_capture_assign(regexp,match) reg_named_capture_assign_gen(parser,regexp,match)
424
+
425
+ #define get_id(id) (id)
426
+ #define get_value(val) (val)
427
+ #else
428
+ #define remove_begin(node) (node)
429
+ #define rb_dvar_defined(id) 0
430
+ #define rb_local_defined(id) 0
431
+ static ID ripper_get_id(VALUE);
432
+ #define get_id(id) ripper_get_id(id)
433
+ static VALUE ripper_get_value(VALUE);
434
+ #define get_value(val) ripper_get_value(val)
435
+ static VALUE assignable_gen(struct parser_params*,VALUE);
436
+ #define assignable(lhs,node) assignable_gen(parser, lhs)
437
+ #endif /* !RIPPER */
438
+
439
+ static ID formal_argument_gen(struct parser_params*, ID);
440
+ #define formal_argument(id) formal_argument_gen(parser, id)
441
+ static ID shadowing_lvar_gen(struct parser_params*,ID);
442
+ #define shadowing_lvar(name) shadowing_lvar_gen(parser, name)
443
+ static void new_bv_gen(struct parser_params*,ID);
444
+ #define new_bv(id) new_bv_gen(parser, id)
445
+
408
446
  static void local_push_gen(struct parser_params*,int);
409
447
  #define local_push(top) local_push_gen(parser,top)
410
448
  static void local_pop_gen(struct parser_params*);
@@ -415,15 +453,13 @@ static int arg_var_gen(struct parser_params*, ID);
415
453
  #define arg_var(id) arg_var_gen(parser, id)
416
454
  static int local_id_gen(struct parser_params*, ID);
417
455
  #define local_id(id) local_id_gen(parser, id)
418
- static ID *local_tbl_gen(struct parser_params*);
419
- #define local_tbl() local_tbl_gen(parser)
420
456
  static ID internal_id_gen(struct parser_params*);
421
457
  #define internal_id() internal_id_gen(parser)
422
458
 
423
- static void dyna_push_gen(struct parser_params*);
459
+ static const struct vtable *dyna_push_gen(struct parser_params *);
424
460
  #define dyna_push() dyna_push_gen(parser)
425
- static void dyna_pop_gen(struct parser_params*);
426
- #define dyna_pop() dyna_pop_gen(parser)
461
+ static void dyna_pop_gen(struct parser_params*, const struct vtable *);
462
+ #define dyna_pop(node) dyna_pop_gen(parser, node)
427
463
  static int dyna_in_block_gen(struct parser_params*);
428
464
  #define dyna_in_block() dyna_in_block_gen(parser)
429
465
  #define dyna_var(id) local_var(id)
@@ -432,25 +468,6 @@ static int dvar_defined_gen(struct parser_params*,ID);
432
468
  static int dvar_curr_gen(struct parser_params*,ID);
433
469
  #define dvar_curr(id) dvar_curr_gen(parser, id)
434
470
 
435
- static void fixup_nodes(NODE **);
436
-
437
- extern int rb_dvar_defined(ID);
438
- extern int rb_local_defined(ID);
439
- extern int rb_parse_in_eval(void);
440
- extern int rb_parse_in_main(void);
441
-
442
- static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
443
- #define reg_compile(str,options) reg_compile_gen(parser, str, options)
444
- static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int);
445
- #define reg_fragment_setenc(str,options) reg_fragment_setenc_gen(parser, str, options)
446
- static void reg_fragment_check_gen(struct parser_params*, VALUE, int);
447
- #define reg_fragment_check(str,options) reg_fragment_check_gen(parser, str, options)
448
- static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match);
449
- #define reg_named_capture_assign(regexp,match) reg_named_capture_assign_gen(parser,regexp,match)
450
- int rb_enc_symname2_p(const char *, int, rb_encoding *);
451
- #else
452
- #define remove_begin(node) (node)
453
- #endif /* !RIPPER */
454
471
  static int lvar_defined_gen(struct parser_params*, ID);
455
472
  #define lvar_defined(id) lvar_defined_gen(parser, id)
456
473
 
@@ -499,7 +516,7 @@ static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,V
499
516
 
500
517
  #define yyparse ripper_yyparse
501
518
 
502
- static VALUE ripper_intern(const char*);
519
+ #define ripper_intern(s) ID2SYM(rb_intern(s))
503
520
  static VALUE ripper_id2sym(ID);
504
521
  #ifdef __GNUC__
505
522
  #define ripper_id2sym(id) ((id) < 256 && rb_ispunct(id) ? \
@@ -508,7 +525,6 @@ static VALUE ripper_id2sym(ID);
508
525
 
509
526
  #define arg_new() dispatch0(args_new)
510
527
  #define arg_add(l,a) dispatch2(args_add, l, a)
511
- #define arg_prepend(l,a) dispatch2(args_prepend, l, a)
512
528
  #define arg_add_star(l,a) dispatch2(args_add_star, l, a)
513
529
  #define arg_add_block(l,b) dispatch2(args_add_block, l, b)
514
530
  #define arg_add_optblock(l,b) ((b)==Qundef? l : dispatch2(args_add_block, l, b))
@@ -590,6 +606,11 @@ static void ripper_compile_error(struct parser_params*, const char *fmt, ...);
590
606
  #ifndef RIPPER
591
607
  static void token_info_push(struct parser_params*, const char *token);
592
608
  static void token_info_pop(struct parser_params*, const char *token);
609
+ #define token_info_push(token) (RTEST(ruby_verbose) ? token_info_push(parser, token) : (void)0)
610
+ #define token_info_pop(token) (RTEST(ruby_verbose) ? token_info_pop(parser, token) : (void)0)
611
+ #else
612
+ #define token_info_push(token) /* nothing */
613
+ #define token_info_pop(token) /* nothing */
593
614
  #endif
594
615
  %}
595
616
 
@@ -601,6 +622,7 @@ static void token_info_pop(struct parser_params*, const char *token);
601
622
  NODE *node;
602
623
  ID id;
603
624
  int num;
625
+ const struct vtable *vars;
604
626
  }
605
627
 
606
628
  /*%%%*/
@@ -664,7 +686,7 @@ static void token_info_pop(struct parser_params*, const char *token);
664
686
  %token <num> tREGEXP_END
665
687
 
666
688
  %type <node> singleton strings string string1 xstring regexp
667
- %type <node> string_contents xstring_contents string_content
689
+ %type <node> string_contents xstring_contents regexp_contents string_content
668
690
  %type <node> words qwords word_list qword_list word
669
691
  %type <node> literal numeric dsym cpath
670
692
  %type <node> top_compstmt top_stmts top_stmt
@@ -751,7 +773,6 @@ static void token_info_pop(struct parser_params*, const char *token);
751
773
  %nonassoc idRespond_to
752
774
  %nonassoc idIFUNC
753
775
  %nonassoc idCFUNC
754
- %nonassoc idThrowState
755
776
  %nonassoc id_core_set_method_alias
756
777
  %nonassoc id_core_set_variable_alias
757
778
  %nonassoc id_core_undef_method
@@ -765,8 +786,9 @@ static void token_info_pop(struct parser_params*, const char *token);
765
786
  program : {
766
787
  lex_state = EXPR_BEG;
767
788
  /*%%%*/
768
- local_push(compile_for_eval);
789
+ local_push(compile_for_eval || rb_parse_in_main());
769
790
  /*%
791
+ local_push(0);
770
792
  %*/
771
793
  }
772
794
  top_compstmt
@@ -784,11 +806,11 @@ program : {
784
806
  }
785
807
  }
786
808
  ruby_eval_tree = NEW_SCOPE(0, block_append(ruby_eval_tree, $2));
787
- local_pop();
788
809
  /*%
789
810
  $$ = $2;
790
811
  parser->result = dispatch1(program, $$);
791
812
  %*/
813
+ local_pop();
792
814
  }
793
815
  ;
794
816
 
@@ -883,7 +905,7 @@ bodystmt : compstmt
883
905
  }
884
906
  fixpos($$, $1);
885
907
  /*%
886
- $$ = dispatch4(body_stmt,
908
+ $$ = dispatch4(bodystmt,
887
909
  escape_Qundef($1),
888
910
  escape_Qundef($2),
889
911
  escape_Qundef($3),
@@ -953,10 +975,10 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem
953
975
  | keyword_alias tGVAR tBACK_REF
954
976
  {
955
977
  /*%%%*/
956
- char buf[3];
957
-
958
- sprintf(buf, "$%c", (char)$3->nd_nth);
959
- $$ = NEW_VALIAS($2, rb_intern(buf));
978
+ char buf[2];
979
+ buf[0] = '$';
980
+ buf[1] = (char)$3->nd_nth;
981
+ $$ = NEW_VALIAS($2, rb_intern2(buf, 2));
960
982
  /*%
961
983
  $$ = dispatch2(var_alias, $2, $3);
962
984
  %*/
@@ -1099,7 +1121,7 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem
1099
1121
 
1100
1122
  value_expr($6);
1101
1123
  if (!$3) $3 = NEW_ZARRAY();
1102
- args = arg_concat($6, $3);
1124
+ args = arg_concat($3, $6);
1103
1125
  if ($5 == tOROP) {
1104
1126
  $5 = 0;
1105
1127
  }
@@ -1147,6 +1169,17 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem
1147
1169
  $$ = dispatch3(opassign, $$, $4, $5);
1148
1170
  %*/
1149
1171
  }
1172
+ | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call
1173
+ {
1174
+ /*%%%*/
1175
+ yyerror("constant re-assignment");
1176
+ $$ = 0;
1177
+ /*%
1178
+ $$ = dispatch2(const_path_field, $1, $3);
1179
+ $$ = dispatch3(opassign, $$, $4, $5);
1180
+ $$ = dispatch1(assign_error, $$);
1181
+ %*/
1182
+ }
1150
1183
  | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call
1151
1184
  {
1152
1185
  /*%%%*/
@@ -1254,30 +1287,6 @@ expr_value : expr
1254
1287
 
1255
1288
  command_call : command
1256
1289
  | block_command
1257
- | keyword_return call_args
1258
- {
1259
- /*%%%*/
1260
- $$ = NEW_RETURN(ret_args($2));
1261
- /*%
1262
- $$ = dispatch1(return, $2);
1263
- %*/
1264
- }
1265
- | keyword_break call_args
1266
- {
1267
- /*%%%*/
1268
- $$ = NEW_BREAK(ret_args($2));
1269
- /*%
1270
- $$ = dispatch1(break, $2);
1271
- %*/
1272
- }
1273
- | keyword_next call_args
1274
- {
1275
- /*%%%*/
1276
- $$ = NEW_NEXT(ret_args($2));
1277
- /*%
1278
- $$ = dispatch1(next, $2);
1279
- %*/
1280
- }
1281
1290
  ;
1282
1291
 
1283
1292
  block_command : block_call
@@ -1303,8 +1312,8 @@ block_command : block_call
1303
1312
 
1304
1313
  cmd_brace_block : tLBRACE_ARG
1305
1314
  {
1315
+ $<vars>1 = dyna_push();
1306
1316
  /*%%%*/
1307
- dyna_push();
1308
1317
  $<num>$ = ruby_sourceline;
1309
1318
  /*%
1310
1319
  %*/
@@ -1316,10 +1325,10 @@ cmd_brace_block : tLBRACE_ARG
1316
1325
  /*%%%*/
1317
1326
  $$ = NEW_ITER($3,$4);
1318
1327
  nd_set_line($$, $<num>2);
1319
- dyna_pop();
1320
1328
  /*%
1321
1329
  $$ = dispatch2(brace_block, escape_Qundef($3), $4);
1322
1330
  %*/
1331
+ dyna_pop($<vars>1);
1323
1332
  }
1324
1333
  ;
1325
1334
 
@@ -1404,6 +1413,30 @@ command : operation command_args %prec tLOWEST
1404
1413
  $$ = dispatch1(yield, $2);
1405
1414
  %*/
1406
1415
  }
1416
+ | keyword_return call_args
1417
+ {
1418
+ /*%%%*/
1419
+ $$ = NEW_RETURN(ret_args($2));
1420
+ /*%
1421
+ $$ = dispatch1(return, $2);
1422
+ %*/
1423
+ }
1424
+ | keyword_break call_args
1425
+ {
1426
+ /*%%%*/
1427
+ $$ = NEW_BREAK(ret_args($2));
1428
+ /*%
1429
+ $$ = dispatch1(break, $2);
1430
+ %*/
1431
+ }
1432
+ | keyword_next call_args
1433
+ {
1434
+ /*%%%*/
1435
+ $$ = NEW_NEXT(ret_args($2));
1436
+ /*%
1437
+ $$ = dispatch1(next, $2);
1438
+ %*/
1439
+ }
1407
1440
  ;
1408
1441
 
1409
1442
  mlhs : mlhs_basic
@@ -1457,7 +1490,8 @@ mlhs_basic : mlhs_head
1457
1490
  /*%%%*/
1458
1491
  $$ = NEW_MASGN($1, NEW_POSTARG($3,$5));
1459
1492
  /*%
1460
- $$ = mlhs_add_star($1, $3);
1493
+ $1 = mlhs_add_star($1, $3);
1494
+ $$ = mlhs_add($1, $5);
1461
1495
  %*/
1462
1496
  }
1463
1497
  | mlhs_head tSTAR
@@ -1473,7 +1507,8 @@ mlhs_basic : mlhs_head
1473
1507
  /*%%%*/
1474
1508
  $$ = NEW_MASGN($1, NEW_POSTARG(-1, $4));
1475
1509
  /*%
1476
- $$ = mlhs_add_star($1, Qnil);
1510
+ $1 = mlhs_add_star($1, Qnil);
1511
+ $$ = mlhs_add($1, $4);
1477
1512
  %*/
1478
1513
  }
1479
1514
  | tSTAR mlhs_node
@@ -1489,7 +1524,8 @@ mlhs_basic : mlhs_head
1489
1524
  /*%%%*/
1490
1525
  $$ = NEW_MASGN(0, NEW_POSTARG($2,$4));
1491
1526
  /*%
1492
- $$ = mlhs_add_star(mlhs_new(), $2);
1527
+ $2 = mlhs_add_star(mlhs_new(), $2);
1528
+ $$ = mlhs_add($2, $4);
1493
1529
  %*/
1494
1530
  }
1495
1531
  | tSTAR
@@ -1506,6 +1542,7 @@ mlhs_basic : mlhs_head
1506
1542
  $$ = NEW_MASGN(0, NEW_POSTARG(-1, $3));
1507
1543
  /*%
1508
1544
  $$ = mlhs_add_star(mlhs_new(), Qnil);
1545
+ $$ = mlhs_add($$, $3);
1509
1546
  %*/
1510
1547
  }
1511
1548
  ;
@@ -1559,11 +1596,7 @@ mlhs_post : mlhs_item
1559
1596
 
1560
1597
  mlhs_node : variable
1561
1598
  {
1562
- /*%%%*/
1563
1599
  $$ = assignable($1, 0);
1564
- /*%
1565
- $$ = $1;
1566
- %*/
1567
1600
  }
1568
1601
  | primary_value '[' opt_call_args rbracket
1569
1602
  {
@@ -1633,10 +1666,11 @@ mlhs_node : variable
1633
1666
 
1634
1667
  lhs : variable
1635
1668
  {
1669
+ $$ = assignable($1, 0);
1636
1670
  /*%%%*/
1637
- if (!($$ = assignable($1, 0))) $$ = NEW_BEGIN(0);
1671
+ if (!$$) $$ = NEW_BEGIN(0);
1638
1672
  /*%
1639
- $$ = dispatch1(var_field, $1);
1673
+ $$ = dispatch1(var_field, $$);
1640
1674
  %*/
1641
1675
  }
1642
1676
  | primary_value '[' opt_call_args rbracket
@@ -1750,21 +1784,15 @@ fname : tIDENTIFIER
1750
1784
  | tFID
1751
1785
  | op
1752
1786
  {
1753
- /*%%%*/
1754
- lex_state = EXPR_END;
1787
+ lex_state = EXPR_ENDFN;
1755
1788
  $$ = $1;
1756
- /*%
1757
- lex_state = EXPR_END;
1758
- $$ = $1;
1759
- %*/
1760
1789
  }
1761
1790
  | reswords
1762
1791
  {
1792
+ lex_state = EXPR_ENDFN;
1763
1793
  /*%%%*/
1764
- lex_state = EXPR_END;
1765
1794
  $$ = $<id>1;
1766
1795
  /*%
1767
- lex_state = EXPR_END;
1768
1796
  $$ = $1;
1769
1797
  %*/
1770
1798
  }
@@ -1934,7 +1962,12 @@ arg : lhs '=' arg
1934
1962
 
1935
1963
  value_expr($6);
1936
1964
  if (!$3) $3 = NEW_ZARRAY();
1937
- args = arg_concat($6, $3);
1965
+ if (nd_type($3) == NODE_BLOCK_PASS) {
1966
+ args = NEW_ARGSCAT($3, $6);
1967
+ }
1968
+ else {
1969
+ args = arg_concat($3, $6);
1970
+ }
1938
1971
  if ($5 == tOROP) {
1939
1972
  $5 = 0;
1940
1973
  }
@@ -2379,6 +2412,7 @@ opt_call_args : none
2379
2412
  call_args : command
2380
2413
  {
2381
2414
  /*%%%*/
2415
+ value_expr($1);
2382
2416
  $$ = NEW_LIST($1);
2383
2417
  /*%
2384
2418
  $$ = arg_add(arg_new(), $1);
@@ -2421,13 +2455,13 @@ call_args : command
2421
2455
  ;
2422
2456
 
2423
2457
  command_args : {
2424
- $<num>$ = cmdarg_stack;
2458
+ $<val>$ = cmdarg_stack;
2425
2459
  CMDARG_PUSH(1);
2426
2460
  }
2427
2461
  call_args
2428
2462
  {
2429
2463
  /* CMDARG_POP() */
2430
- cmdarg_stack = $<num>1;
2464
+ cmdarg_stack = $<val>1;
2431
2465
  $$ = $2;
2432
2466
  }
2433
2467
  ;
@@ -2856,8 +2890,8 @@ primary : literal
2856
2890
  {
2857
2891
  if (in_def || in_single)
2858
2892
  yyerror("class definition in method body");
2859
- /*%%%*/
2860
2893
  local_push(0);
2894
+ /*%%%*/
2861
2895
  $<num>$ = ruby_sourceline;
2862
2896
  /*%
2863
2897
  %*/
@@ -2868,10 +2902,10 @@ primary : literal
2868
2902
  /*%%%*/
2869
2903
  $$ = NEW_CLASS($2, $5, $3);
2870
2904
  nd_set_line($$, $<num>4);
2871
- local_pop();
2872
2905
  /*%
2873
2906
  $$ = dispatch3(class, $2, $3, $5);
2874
2907
  %*/
2908
+ local_pop();
2875
2909
  }
2876
2910
  | k_class tLSHFT expr
2877
2911
  {
@@ -2882,10 +2916,7 @@ primary : literal
2882
2916
  {
2883
2917
  $<num>$ = in_single;
2884
2918
  in_single = 0;
2885
- /*%%%*/
2886
2919
  local_push(0);
2887
- /*%
2888
- %*/
2889
2920
  }
2890
2921
  bodystmt
2891
2922
  k_end
@@ -2893,10 +2924,10 @@ primary : literal
2893
2924
  /*%%%*/
2894
2925
  $$ = NEW_SCLASS($3, $7);
2895
2926
  fixpos($$, $3);
2896
- local_pop();
2897
2927
  /*%
2898
2928
  $$ = dispatch2(sclass, $3, $7);
2899
2929
  %*/
2930
+ local_pop();
2900
2931
  in_def = $<num>4;
2901
2932
  in_single = $<num>6;
2902
2933
  }
@@ -2904,8 +2935,8 @@ primary : literal
2904
2935
  {
2905
2936
  if (in_def || in_single)
2906
2937
  yyerror("module definition in method body");
2907
- /*%%%*/
2908
2938
  local_push(0);
2939
+ /*%%%*/
2909
2940
  $<num>$ = ruby_sourceline;
2910
2941
  /*%
2911
2942
  %*/
@@ -2916,20 +2947,17 @@ primary : literal
2916
2947
  /*%%%*/
2917
2948
  $$ = NEW_MODULE($2, $4);
2918
2949
  nd_set_line($$, $<num>3);
2919
- local_pop();
2920
2950
  /*%
2921
2951
  $$ = dispatch2(module, $2, $4);
2922
2952
  %*/
2953
+ local_pop();
2923
2954
  }
2924
2955
  | k_def fname
2925
2956
  {
2926
2957
  $<id>$ = cur_mid;
2927
2958
  cur_mid = $2;
2928
2959
  in_def++;
2929
- /*%%%*/
2930
2960
  local_push(0);
2931
- /*%
2932
- %*/
2933
2961
  }
2934
2962
  f_arglist
2935
2963
  bodystmt
@@ -2939,23 +2967,19 @@ primary : literal
2939
2967
  NODE *body = remove_begin($5);
2940
2968
  reduce_nodes(&body);
2941
2969
  $$ = NEW_DEFN($2, $4, body, NOEX_PRIVATE);
2942
- fixpos($$, $4);
2943
- fixpos($$->nd_defn, $4);
2944
- local_pop();
2970
+ nd_set_line($$, $<num>1);
2945
2971
  /*%
2946
2972
  $$ = dispatch3(def, $2, $4, $5);
2947
2973
  %*/
2974
+ local_pop();
2948
2975
  in_def--;
2949
2976
  cur_mid = $<id>3;
2950
2977
  }
2951
2978
  | k_def singleton dot_or_colon {lex_state = EXPR_FNAME;} fname
2952
2979
  {
2953
2980
  in_single++;
2954
- lex_state = EXPR_END; /* force for args */
2955
- /*%%%*/
2981
+ lex_state = EXPR_ENDFN; /* force for args */
2956
2982
  local_push(0);
2957
- /*%
2958
- %*/
2959
2983
  }
2960
2984
  f_arglist
2961
2985
  bodystmt
@@ -2965,12 +2989,11 @@ primary : literal
2965
2989
  NODE *body = remove_begin($8);
2966
2990
  reduce_nodes(&body);
2967
2991
  $$ = NEW_DEFS($2, $5, $7, body);
2968
- fixpos($$, $2);
2969
- fixpos($$->nd_defn, $2);
2970
- local_pop();
2992
+ nd_set_line($$, $<num>1);
2971
2993
  /*%
2972
2994
  $$ = dispatch5(defs, $2, $3, $5, $7, $8);
2973
2995
  %*/
2996
+ local_pop();
2974
2997
  in_single--;
2975
2998
  }
2976
2999
  | keyword_break
@@ -3021,80 +3044,73 @@ primary_value : primary
3021
3044
 
3022
3045
  k_begin : keyword_begin
3023
3046
  {
3024
- #ifndef RIPPER
3025
- if (RTEST(ruby_verbose)) token_info_push(parser, "begin");
3026
- #endif
3047
+ token_info_push("begin");
3027
3048
  }
3049
+ ;
3028
3050
 
3029
3051
  k_if : keyword_if
3030
3052
  {
3031
- #ifndef RIPPER
3032
- if (RTEST(ruby_verbose)) token_info_push(parser, "if");
3033
- #endif
3053
+ token_info_push("if");
3034
3054
  }
3055
+ ;
3035
3056
 
3036
3057
  k_unless : keyword_unless
3037
3058
  {
3038
- #ifndef RIPPER
3039
- if (RTEST(ruby_verbose)) token_info_push(parser, "unless");
3040
- #endif
3059
+ token_info_push("unless");
3041
3060
  }
3061
+ ;
3042
3062
 
3043
3063
  k_while : keyword_while
3044
3064
  {
3045
- #ifndef RIPPER
3046
- if (RTEST(ruby_verbose)) token_info_push(parser, "while");
3047
- #endif
3065
+ token_info_push("while");
3048
3066
  }
3067
+ ;
3049
3068
 
3050
3069
  k_until : keyword_until
3051
3070
  {
3052
- #ifndef RIPPER
3053
- if (RTEST(ruby_verbose)) token_info_push(parser, "until");
3054
- #endif
3071
+ token_info_push("until");
3055
3072
  }
3073
+ ;
3056
3074
 
3057
3075
  k_case : keyword_case
3058
3076
  {
3059
- #ifndef RIPPER
3060
- if (RTEST(ruby_verbose)) token_info_push(parser, "case");
3061
- #endif
3077
+ token_info_push("case");
3062
3078
  }
3079
+ ;
3063
3080
 
3064
3081
  k_for : keyword_for
3065
3082
  {
3066
- #ifndef RIPPER
3067
- if (RTEST(ruby_verbose)) token_info_push(parser, "for");
3068
- #endif
3083
+ token_info_push("for");
3069
3084
  }
3085
+ ;
3070
3086
 
3071
3087
  k_class : keyword_class
3072
3088
  {
3073
- #ifndef RIPPER
3074
- if (RTEST(ruby_verbose)) token_info_push(parser, "class");
3075
- #endif
3089
+ token_info_push("class");
3076
3090
  }
3091
+ ;
3077
3092
 
3078
3093
  k_module : keyword_module
3079
3094
  {
3080
- #ifndef RIPPER
3081
- if (RTEST(ruby_verbose)) token_info_push(parser, "module");
3082
- #endif
3095
+ token_info_push("module");
3083
3096
  }
3097
+ ;
3084
3098
 
3085
3099
  k_def : keyword_def
3086
3100
  {
3087
- #ifndef RIPPER
3088
- if (RTEST(ruby_verbose)) token_info_push(parser, "def");
3089
- #endif
3101
+ token_info_push("def");
3102
+ /*%%%*/
3103
+ $<num>$ = ruby_sourceline;
3104
+ /*%
3105
+ %*/
3090
3106
  }
3107
+ ;
3091
3108
 
3092
3109
  k_end : keyword_end
3093
3110
  {
3094
- #ifndef RIPPER
3095
- if (RTEST(ruby_verbose)) token_info_pop(parser, "end"); /* POP */
3096
- #endif
3111
+ token_info_pop("end");
3097
3112
  }
3113
+ ;
3098
3114
 
3099
3115
  then : term
3100
3116
  /*%c%*/
@@ -3148,10 +3164,10 @@ for_var : lhs
3148
3164
 
3149
3165
  f_marg : f_norm_arg
3150
3166
  {
3151
- /*%%%*/
3152
3167
  $$ = assignable($1, 0);
3168
+ /*%%%*/
3153
3169
  /*%
3154
- $$ = dispatch1(mlhs_paren, $1);
3170
+ $$ = dispatch1(mlhs_paren, $$);
3155
3171
  %*/
3156
3172
  }
3157
3173
  | tLPAREN f_margs rparen
@@ -3192,18 +3208,20 @@ f_margs : f_marg_list
3192
3208
  }
3193
3209
  | f_marg_list ',' tSTAR f_norm_arg
3194
3210
  {
3211
+ $$ = assignable($4, 0);
3195
3212
  /*%%%*/
3196
- $$ = NEW_MASGN($1, assignable($4, 0));
3213
+ $$ = NEW_MASGN($1, $$);
3197
3214
  /*%
3198
- $$ = mlhs_add_star($1, $4);
3215
+ $$ = mlhs_add_star($1, $$);
3199
3216
  %*/
3200
3217
  }
3201
3218
  | f_marg_list ',' tSTAR f_norm_arg ',' f_marg_list
3202
3219
  {
3220
+ $$ = assignable($4, 0);
3203
3221
  /*%%%*/
3204
- $$ = NEW_MASGN($1, NEW_POSTARG(assignable($4, 0), $6));
3222
+ $$ = NEW_MASGN($1, NEW_POSTARG($$, $6));
3205
3223
  /*%
3206
- $$ = mlhs_add_star($1, $4);
3224
+ $$ = mlhs_add_star($1, $$);
3207
3225
  %*/
3208
3226
  }
3209
3227
  | f_marg_list ',' tSTAR
@@ -3224,21 +3242,23 @@ f_margs : f_marg_list
3224
3242
  }
3225
3243
  | tSTAR f_norm_arg
3226
3244
  {
3245
+ $$ = assignable($2, 0);
3227
3246
  /*%%%*/
3228
- $$ = NEW_MASGN(0, assignable($2, 0));
3247
+ $$ = NEW_MASGN(0, $$);
3229
3248
  /*%
3230
- $$ = mlhs_add_star(mlhs_new(), $2);
3249
+ $$ = mlhs_add_star(mlhs_new(), $$);
3231
3250
  %*/
3232
3251
  }
3233
3252
  | tSTAR f_norm_arg ',' f_marg_list
3234
3253
  {
3254
+ $$ = assignable($2, 0);
3235
3255
  /*%%%*/
3236
- $$ = NEW_MASGN(0, NEW_POSTARG(assignable($2, 0), $4));
3256
+ $$ = NEW_MASGN(0, NEW_POSTARG($$, $4));
3237
3257
  /*%
3238
3258
  #if 0
3239
3259
  TODO: Check me
3240
3260
  #endif
3241
- $$ = mlhs_add_star($2, $4);
3261
+ $$ = mlhs_add_star($$, $4);
3242
3262
  %*/
3243
3263
  }
3244
3264
  | tSTAR
@@ -3385,7 +3405,7 @@ block_param : f_arg ',' f_block_optarg ',' f_rest_arg opt_f_block_arg
3385
3405
  opt_block_param : none
3386
3406
  | block_param_def
3387
3407
  {
3388
- command_start = Qtrue;
3408
+ command_start = TRUE;
3389
3409
  }
3390
3410
  ;
3391
3411
 
@@ -3433,7 +3453,7 @@ bv_decls : bvar
3433
3453
  /*%c%*/
3434
3454
  /*%c
3435
3455
  {
3436
- $$ = rb_ary_new2($1);
3456
+ $$ = rb_ary_new3(1, $1);
3437
3457
  }
3438
3458
  %*/
3439
3459
  | bv_decls ',' bvar
@@ -3447,10 +3467,10 @@ bv_decls : bvar
3447
3467
 
3448
3468
  bvar : tIDENTIFIER
3449
3469
  {
3470
+ new_bv(get_id($1));
3450
3471
  /*%%%*/
3451
- new_bv($1);
3452
3472
  /*%
3453
- $$ = $1;
3473
+ $$ = get_value($1);
3454
3474
  %*/
3455
3475
  }
3456
3476
  | f_bad_arg
@@ -3460,24 +3480,23 @@ bvar : tIDENTIFIER
3460
3480
  ;
3461
3481
 
3462
3482
  lambda : {
3463
- /*%%%*/
3464
- dyna_push();
3465
- /*%
3466
- %*/
3483
+ $<vars>$ = dyna_push();
3484
+ }
3485
+ {
3467
3486
  $<num>$ = lpar_beg;
3468
3487
  lpar_beg = ++paren_nest;
3469
3488
  }
3470
3489
  f_larglist
3471
3490
  lambda_body
3472
3491
  {
3473
- lpar_beg = $<num>1;
3492
+ lpar_beg = $<num>2;
3474
3493
  /*%%%*/
3475
- $$ = $2;
3476
- $$->nd_body = NEW_SCOPE($2->nd_head, $3);
3477
- dyna_pop();
3494
+ $$ = $3;
3495
+ $$->nd_body = NEW_SCOPE($3->nd_head, $4);
3478
3496
  /*%
3479
- $$ = dispatch2(lambda, $2, $3);
3497
+ $$ = dispatch2(lambda, $3, $4);
3480
3498
  %*/
3499
+ dyna_pop($<vars>1);
3481
3500
  }
3482
3501
  ;
3483
3502
 
@@ -3511,8 +3530,8 @@ lambda_body : tLAMBEG compstmt '}'
3511
3530
 
3512
3531
  do_block : keyword_do_block
3513
3532
  {
3533
+ $<vars>1 = dyna_push();
3514
3534
  /*%%%*/
3515
- dyna_push();
3516
3535
  $<num>$ = ruby_sourceline;
3517
3536
  /*% %*/
3518
3537
  }
@@ -3523,10 +3542,10 @@ do_block : keyword_do_block
3523
3542
  /*%%%*/
3524
3543
  $$ = NEW_ITER($3,$4);
3525
3544
  nd_set_line($$, $<num>2);
3526
- dyna_pop();
3527
3545
  /*%
3528
3546
  $$ = dispatch2(do_block, escape_Qundef($3), $4);
3529
3547
  %*/
3548
+ dyna_pop($<vars>1);
3530
3549
  }
3531
3550
  ;
3532
3551
 
@@ -3538,7 +3557,7 @@ block_call : command do_block
3538
3557
  }
3539
3558
  else {
3540
3559
  block_dup_check($1->nd_args, $2);
3541
- }
3560
+ }
3542
3561
  $2->nd_iter = $1;
3543
3562
  $$ = $2;
3544
3563
  fixpos($$, $1);
@@ -3609,8 +3628,8 @@ method_call : operation paren_args
3609
3628
  $$ = NEW_CALL($1, rb_intern("call"), $3);
3610
3629
  fixpos($$, $1);
3611
3630
  /*%
3612
- $$ = dispatch3(call, dispatch1(paren, $1),
3613
- ripper_id2sym('.'), rb_intern("call"));
3631
+ $$ = dispatch3(call, $1, ripper_id2sym('.'),
3632
+ ripper_intern("call"));
3614
3633
  $$ = method_optarg($$, $3);
3615
3634
  %*/
3616
3635
  }
@@ -3620,8 +3639,8 @@ method_call : operation paren_args
3620
3639
  $$ = NEW_CALL($1, rb_intern("call"), $3);
3621
3640
  fixpos($$, $1);
3622
3641
  /*%
3623
- $$ = dispatch3(call, dispatch1(paren, $1),
3624
- ripper_id2sym('.'), rb_intern("call"));
3642
+ $$ = dispatch3(call, $1, ripper_intern("::"),
3643
+ ripper_intern("call"));
3625
3644
  $$ = method_optarg($$, $3);
3626
3645
  %*/
3627
3646
  }
@@ -3657,8 +3676,8 @@ method_call : operation paren_args
3657
3676
 
3658
3677
  brace_block : '{'
3659
3678
  {
3679
+ $<vars>1 = dyna_push();
3660
3680
  /*%%%*/
3661
- dyna_push();
3662
3681
  $<num>$ = ruby_sourceline;
3663
3682
  /*%
3664
3683
  %*/
@@ -3669,17 +3688,15 @@ brace_block : '{'
3669
3688
  /*%%%*/
3670
3689
  $$ = NEW_ITER($3,$4);
3671
3690
  nd_set_line($$, $<num>2);
3672
- nd_set_line($$->nd_body, $<num>2);
3673
- nd_set_line($$->nd_body->nd_body, $<num>2);
3674
- dyna_pop();
3675
3691
  /*%
3676
3692
  $$ = dispatch2(brace_block, escape_Qundef($3), $4);
3677
3693
  %*/
3694
+ dyna_pop($<vars>1);
3678
3695
  }
3679
3696
  | keyword_do
3680
3697
  {
3698
+ $<vars>1 = dyna_push();
3681
3699
  /*%%%*/
3682
- dyna_push();
3683
3700
  $<num>$ = ruby_sourceline;
3684
3701
  /*%
3685
3702
  %*/
@@ -3690,10 +3707,10 @@ brace_block : '{'
3690
3707
  /*%%%*/
3691
3708
  $$ = NEW_ITER($3,$4);
3692
3709
  nd_set_line($$, $<num>2);
3693
- dyna_pop();
3694
3710
  /*%
3695
3711
  $$ = dispatch2(do_block, escape_Qundef($3), $4);
3696
3712
  %*/
3713
+ dyna_pop($<vars>1);
3697
3714
  }
3698
3715
  ;
3699
3716
 
@@ -3839,7 +3856,7 @@ xstring : tXSTRING_BEG xstring_contents tSTRING_END
3839
3856
  nd_set_type(node, NODE_DXSTR);
3840
3857
  break;
3841
3858
  default:
3842
- node = NEW_NODE(NODE_DXSTR, STR_NEW0(), 1, NEW_LIST(node));
3859
+ node = NEW_NODE(NODE_DXSTR, Qnil, 1, NEW_LIST(node));
3843
3860
  break;
3844
3861
  }
3845
3862
  }
@@ -3850,12 +3867,12 @@ xstring : tXSTRING_BEG xstring_contents tSTRING_END
3850
3867
  }
3851
3868
  ;
3852
3869
 
3853
- regexp : tREGEXP_BEG xstring_contents tREGEXP_END
3870
+ regexp : tREGEXP_BEG regexp_contents tREGEXP_END
3854
3871
  {
3855
3872
  /*%%%*/
3856
3873
  int options = $3;
3857
3874
  NODE *node = $2;
3858
- NODE *list;
3875
+ NODE *list, *prev;
3859
3876
  if (!node) {
3860
3877
  node = NEW_LIT(reg_compile(STR_NEW0(), options));
3861
3878
  }
@@ -3877,12 +3894,35 @@ regexp : tREGEXP_BEG xstring_contents tREGEXP_END
3877
3894
  nd_set_type(node, NODE_DREGX);
3878
3895
  }
3879
3896
  node->nd_cflag = options & RE_OPTION_MASK;
3880
- reg_fragment_check(node->nd_lit, options);
3881
- for (list = node->nd_next; list; list = list->nd_next) {
3882
- if (nd_type(list->nd_head) == NODE_STR) {
3883
- reg_fragment_check(list->nd_head->nd_lit, options);
3897
+ if (!NIL_P(node->nd_lit)) reg_fragment_check(node->nd_lit, options);
3898
+ for (list = (prev = node)->nd_next; list; list = list->nd_next) {
3899
+ if (nd_type(list->nd_head) == NODE_STR) {
3900
+ VALUE tail = list->nd_head->nd_lit;
3901
+ if (reg_fragment_check(tail, options) && prev && !NIL_P(prev->nd_lit)) {
3902
+ VALUE lit = prev == node ? prev->nd_lit : prev->nd_head->nd_lit;
3903
+ if (!literal_concat0(parser, lit, tail)) {
3904
+ node = 0;
3905
+ break;
3906
+ }
3907
+ rb_str_resize(tail, 0);
3908
+ prev->nd_next = list->nd_next;
3909
+ rb_gc_force_recycle((VALUE)list->nd_head);
3910
+ rb_gc_force_recycle((VALUE)list);
3911
+ list = prev;
3912
+ }
3913
+ else {
3914
+ prev = list;
3915
+ }
3884
3916
  }
3917
+ else {
3918
+ prev = 0;
3919
+ }
3885
3920
  }
3921
+ if (!node->nd_next) {
3922
+ VALUE src = node->nd_lit;
3923
+ nd_set_type(node, NODE_LIT);
3924
+ node->nd_lit = reg_compile(src, options);
3925
+ }
3886
3926
  break;
3887
3927
  }
3888
3928
  $$ = node;
@@ -3898,11 +3938,16 @@ words : tWORDS_BEG ' ' tSTRING_END
3898
3938
  $$ = NEW_ZARRAY();
3899
3939
  /*%
3900
3940
  $$ = dispatch0(words_new);
3941
+ $$ = dispatch1(array, $$);
3901
3942
  %*/
3902
3943
  }
3903
3944
  | tWORDS_BEG word_list tSTRING_END
3904
3945
  {
3946
+ /*%%%*/
3905
3947
  $$ = $2;
3948
+ /*%
3949
+ $$ = dispatch1(array, $2);
3950
+ %*/
3906
3951
  }
3907
3952
  ;
3908
3953
 
@@ -3948,11 +3993,16 @@ qwords : tQWORDS_BEG ' ' tSTRING_END
3948
3993
  $$ = NEW_ZARRAY();
3949
3994
  /*%
3950
3995
  $$ = dispatch0(qwords_new);
3996
+ $$ = dispatch1(array, $$);
3951
3997
  %*/
3952
3998
  }
3953
3999
  | tQWORDS_BEG qword_list tSTRING_END
3954
4000
  {
4001
+ /*%%%*/
3955
4002
  $$ = $2;
4003
+ /*%
4004
+ $$ = dispatch1(array, $2);
4005
+ %*/
3956
4006
  }
3957
4007
  ;
3958
4008
 
@@ -4010,6 +4060,43 @@ xstring_contents: /* none */
4010
4060
  }
4011
4061
  ;
4012
4062
 
4063
+ regexp_contents: /* none */
4064
+ {
4065
+ /*%%%*/
4066
+ $$ = 0;
4067
+ /*%
4068
+ $$ = dispatch0(regexp_new);
4069
+ %*/
4070
+ }
4071
+ | regexp_contents string_content
4072
+ {
4073
+ /*%%%*/
4074
+ NODE *head = $1, *tail = $2;
4075
+ if (!head) {
4076
+ $$ = tail;
4077
+ }
4078
+ else if (!tail) {
4079
+ $$ = head;
4080
+ }
4081
+ else {
4082
+ switch (nd_type(head)) {
4083
+ case NODE_STR:
4084
+ nd_set_type(head, NODE_DSTR);
4085
+ break;
4086
+ case NODE_DSTR:
4087
+ break;
4088
+ default:
4089
+ head = list_append(NEW_DSTR(Qnil), head);
4090
+ break;
4091
+ }
4092
+ $$ = list_append(head, tail);
4093
+ }
4094
+ /*%
4095
+ $$ = dispatch2(regexp_add, $1, $2);
4096
+ %*/
4097
+ }
4098
+ ;
4099
+
4013
4100
  string_content : tSTRING_CONTENT
4014
4101
  | tSTRING_DVAR
4015
4102
  {
@@ -4028,23 +4115,27 @@ string_content : tSTRING_CONTENT
4028
4115
  %*/
4029
4116
  }
4030
4117
  | tSTRING_DBEG
4118
+ {
4119
+ $<val>1 = cond_stack;
4120
+ $<val>$ = cmdarg_stack;
4121
+ cond_stack = 0;
4122
+ cmdarg_stack = 0;
4123
+ }
4031
4124
  {
4032
4125
  $<node>$ = lex_strterm;
4033
4126
  lex_strterm = 0;
4034
4127
  lex_state = EXPR_BEG;
4035
- COND_PUSH(0);
4036
- CMDARG_PUSH(0);
4037
4128
  }
4038
4129
  compstmt '}'
4039
4130
  {
4040
- lex_strterm = $<node>2;
4041
- COND_LEXPOP();
4042
- CMDARG_LEXPOP();
4131
+ cond_stack = $<val>1;
4132
+ cmdarg_stack = $<val>2;
4133
+ lex_strterm = $<node>3;
4043
4134
  /*%%%*/
4044
- if ($3) $3->flags &= ~NODE_FL_NEWLINE;
4045
- $$ = new_evstr($3);
4135
+ if ($4) $4->flags &= ~NODE_FL_NEWLINE;
4136
+ $$ = new_evstr($4);
4046
4137
  /*%
4047
- $$ = dispatch1(string_embexpr, $3);
4138
+ $$ = dispatch1(string_embexpr, $4);
4048
4139
  %*/
4049
4140
  }
4050
4141
  ;
@@ -4078,11 +4169,10 @@ string_dvar : tGVAR
4078
4169
 
4079
4170
  symbol : tSYMBEG sym
4080
4171
  {
4081
- /*%%%*/
4082
4172
  lex_state = EXPR_END;
4173
+ /*%%%*/
4083
4174
  $$ = $2;
4084
4175
  /*%
4085
- lex_state = EXPR_END;
4086
4176
  $$ = dispatch1(symbol, $2);
4087
4177
  %*/
4088
4178
  }
@@ -4096,8 +4186,8 @@ sym : fname
4096
4186
 
4097
4187
  dsym : tSYMBEG xstring_contents tSTRING_END
4098
4188
  {
4099
- /*%%%*/
4100
4189
  lex_state = EXPR_END;
4190
+ /*%%%*/
4101
4191
  if (!($$ = $2)) {
4102
4192
  $$ = NEW_LIT(ID2SYM(rb_intern("")));
4103
4193
  }
@@ -4114,12 +4204,11 @@ dsym : tSYMBEG xstring_contents tSTRING_END
4114
4204
  nd_set_type($$, NODE_LIT);
4115
4205
  break;
4116
4206
  default:
4117
- $$ = NEW_NODE(NODE_DSYM, STR_NEW0(), 1, NEW_LIST($$));
4207
+ $$ = NEW_NODE(NODE_DSYM, Qnil, 1, NEW_LIST($$));
4118
4208
  break;
4119
4209
  }
4120
4210
  }
4121
4211
  /*%
4122
- lex_state = EXPR_END;
4123
4212
  $$ = dispatch1(dyna_symbol, $2);
4124
4213
  %*/
4125
4214
  }
@@ -4171,10 +4260,10 @@ var_ref : variable
4171
4260
 
4172
4261
  var_lhs : variable
4173
4262
  {
4174
- /*%%%*/
4175
4263
  $$ = assignable($1, 0);
4264
+ /*%%%*/
4176
4265
  /*%
4177
- $$ = dispatch1(var_field, $1);
4266
+ $$ = dispatch1(var_field, $$);
4178
4267
  %*/
4179
4268
  }
4180
4269
  ;
@@ -4215,13 +4304,11 @@ f_arglist : '(' f_args rparen
4215
4304
  {
4216
4305
  /*%%%*/
4217
4306
  $$ = $2;
4218
- lex_state = EXPR_BEG;
4219
- command_start = Qtrue;
4220
4307
  /*%
4221
4308
  $$ = dispatch1(paren, $2);
4222
- lex_state = EXPR_BEG;
4223
- command_start = Qtrue;
4224
4309
  %*/
4310
+ lex_state = EXPR_BEG;
4311
+ command_start = TRUE;
4225
4312
  }
4226
4313
  | f_args term
4227
4314
  {
@@ -4392,29 +4479,25 @@ f_bad_arg : tCONSTANT
4392
4479
  f_norm_arg : f_bad_arg
4393
4480
  | tIDENTIFIER
4394
4481
  {
4395
- /*%%%*/
4396
- if (!is_local_id($1))
4397
- yyerror("formal argument must be local variable");
4398
- shadowing_lvar($1);
4399
- /*%
4400
- %*/
4482
+ formal_argument(get_id($1));
4401
4483
  $$ = $1;
4402
4484
  }
4403
4485
  ;
4404
4486
 
4405
4487
  f_arg_item : f_norm_arg
4406
4488
  {
4489
+ arg_var(get_id($1));
4407
4490
  /*%%%*/
4408
- arg_var($1);
4409
4491
  $$ = NEW_ARGS_AUX($1, 1);
4410
4492
  /*%
4493
+ $$ = get_value($1);
4411
4494
  %*/
4412
4495
  }
4413
4496
  | tLPAREN f_margs rparen
4414
4497
  {
4415
- /*%%%*/
4416
4498
  ID tid = internal_id();
4417
4499
  arg_var(tid);
4500
+ /*%%%*/
4418
4501
  if (dyna_in_block()) {
4419
4502
  $2->nd_value = NEW_DVAR(tid);
4420
4503
  }
@@ -4451,28 +4534,24 @@ f_arg : f_arg_item
4451
4534
 
4452
4535
  f_opt : tIDENTIFIER '=' arg_value
4453
4536
  {
4537
+ arg_var(formal_argument(get_id($1)));
4538
+ $$ = assignable($1, $3);
4454
4539
  /*%%%*/
4455
- if (!is_local_id($1))
4456
- yyerror("formal argument must be local variable");
4457
- shadowing_lvar($1);
4458
- arg_var($1);
4459
- $$ = NEW_OPT_ARG(0, assignable($1, $3));
4540
+ $$ = NEW_OPT_ARG(0, $$);
4460
4541
  /*%
4461
- $$ = rb_assoc_new($1, $3);
4542
+ $$ = rb_assoc_new($$, $3);
4462
4543
  %*/
4463
4544
  }
4464
4545
  ;
4465
4546
 
4466
4547
  f_block_opt : tIDENTIFIER '=' primary_value
4467
4548
  {
4549
+ arg_var(formal_argument(get_id($1)));
4550
+ $$ = assignable($1, $3);
4468
4551
  /*%%%*/
4469
- if (!is_local_id($1))
4470
- yyerror("formal argument must be local variable");
4471
- shadowing_lvar($1);
4472
- arg_var($1);
4473
- $$ = NEW_OPT_ARG(0, assignable($1, $3));
4552
+ $$ = NEW_OPT_ARG(0, $$);
4474
4553
  /*%
4475
- $$ = rb_assoc_new($1, $3);
4554
+ $$ = rb_assoc_new($$, $3);
4476
4555
  %*/
4477
4556
  }
4478
4557
  ;
@@ -4534,8 +4613,9 @@ f_rest_arg : restarg_mark tIDENTIFIER
4534
4613
  /*%%%*/
4535
4614
  if (!is_local_id($2))
4536
4615
  yyerror("rest argument must be local variable");
4537
- shadowing_lvar($2);
4538
- arg_var($2);
4616
+ /*% %*/
4617
+ arg_var(shadowing_lvar(get_id($2)));
4618
+ /*%%%*/
4539
4619
  $$ = $2;
4540
4620
  /*%
4541
4621
  $$ = dispatch1(rest_param, $2);
@@ -4563,8 +4643,9 @@ f_block_arg : blkarg_mark tIDENTIFIER
4563
4643
  yyerror("block argument must be local variable");
4564
4644
  else if (!dyna_in_block() && local_id($2))
4565
4645
  yyerror("duplicated block argument name");
4566
- shadowing_lvar($2);
4567
- arg_var($2);
4646
+ /*% %*/
4647
+ arg_var(shadowing_lvar(get_id($2)));
4648
+ /*%%%*/
4568
4649
  $$ = $2;
4569
4650
  /*%
4570
4651
  $$ = dispatch1(blockarg, $2);
@@ -4765,41 +4846,65 @@ static int parser_here_document(struct parser_params*,NODE*);
4765
4846
  # define heredoc_restore(n) parser_heredoc_restore(parser,n)
4766
4847
  # define whole_match_p(e,l,i) parser_whole_match_p(parser,e,l,i)
4767
4848
 
4768
- #ifdef RIPPER
4769
- /* FIXME */
4770
- # define local_id(x) 1
4771
- # define dyna_in_block() 1
4772
- #endif /* RIPPER */
4773
-
4774
4849
  #ifndef RIPPER
4775
4850
  # define set_yylval_str(x) yylval.node = NEW_STR(x)
4776
4851
  # define set_yylval_num(x) yylval.num = x
4777
4852
  # define set_yylval_id(x) yylval.id = x
4853
+ # define set_yylval_name(x) yylval.id = x
4778
4854
  # define set_yylval_literal(x) yylval.node = NEW_LIT(x)
4779
4855
  # define set_yylval_node(x) yylval.node = x
4780
4856
  # define yylval_id() yylval.id
4781
4857
  #else
4858
+ static inline VALUE
4859
+ ripper_yylval_id(ID x)
4860
+ {
4861
+ return (VALUE)NEW_LASGN(x, ID2SYM(x));
4862
+ }
4782
4863
  # define set_yylval_str(x) (void)(x)
4783
4864
  # define set_yylval_num(x) (void)(x)
4784
- # define set_yylval_id(x) (void)(x)
4865
+ # define set_yylval_id(x) (void)(x)
4866
+ # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(x))
4785
4867
  # define set_yylval_literal(x) (void)(x)
4786
4868
  # define set_yylval_node(x) (void)(x)
4787
- # define yylval_id() SYM2ID(yylval.val)
4869
+ # define yylval_id() yylval.id
4788
4870
  #endif
4789
4871
 
4790
- #ifdef RIPPER
4872
+ #ifndef RIPPER
4873
+ #define ripper_flush(p) (void)(p)
4874
+ #else
4791
4875
  #define ripper_flush(p) (p->tokp = p->parser_lex_p)
4792
4876
 
4793
- static void
4794
- ripper_dispatch_scan_event(struct parser_params *parser, int t)
4877
+ #define yylval_rval *(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val)
4878
+
4879
+ static int
4880
+ ripper_has_scan_event(struct parser_params *parser)
4795
4881
  {
4796
- VALUE str;
4797
4882
 
4798
4883
  if (lex_p < parser->tokp) rb_raise(rb_eRuntimeError, "lex_p < tokp");
4799
- if (lex_p == parser->tokp) return;
4800
- str = STR_NEW(parser->tokp, lex_p - parser->tokp);
4801
- yylval.val = ripper_dispatch1(parser, ripper_token2eventid(t), str);
4884
+ return lex_p > parser->tokp;
4885
+ }
4886
+
4887
+ static VALUE
4888
+ ripper_scan_event_val(struct parser_params *parser, int t)
4889
+ {
4890
+ VALUE str = STR_NEW(parser->tokp, lex_p - parser->tokp);
4891
+ VALUE rval = ripper_dispatch1(parser, ripper_token2eventid(t), str);
4802
4892
  ripper_flush(parser);
4893
+ return rval;
4894
+ }
4895
+
4896
+ static void
4897
+ ripper_dispatch_scan_event(struct parser_params *parser, int t)
4898
+ {
4899
+ if (!ripper_has_scan_event(parser)) return;
4900
+ yylval_rval = ripper_scan_event_val(parser, t);
4901
+ }
4902
+
4903
+ static void
4904
+ ripper_dispatch_ignored_scan_event(struct parser_params *parser, int t)
4905
+ {
4906
+ if (!ripper_has_scan_event(parser)) return;
4907
+ (void)ripper_scan_event_val(parser, t);
4803
4908
  }
4804
4909
 
4805
4910
  static void
@@ -4810,7 +4915,7 @@ ripper_dispatch_delayed_token(struct parser_params *parser, int t)
4810
4915
 
4811
4916
  ruby_sourceline = parser->delayed_line;
4812
4917
  parser->tokp = lex_pbeg + parser->delayed_col;
4813
- yylval.val = ripper_dispatch1(parser, ripper_token2eventid(t), parser->delayed);
4918
+ yylval_rval = ripper_dispatch1(parser, ripper_token2eventid(t), parser->delayed);
4814
4919
  parser->delayed = Qnil;
4815
4920
  ruby_sourceline = saved_line;
4816
4921
  parser->tokp = saved_tokp;
@@ -4867,6 +4972,7 @@ token_info_has_nonspaces(struct parser_params *parser, const char *token)
4867
4972
  return 0;
4868
4973
  }
4869
4974
 
4975
+ #undef token_info_push
4870
4976
  static void
4871
4977
  token_info_push(struct parser_params *parser, const char *token)
4872
4978
  {
@@ -4883,6 +4989,7 @@ token_info_push(struct parser_params *parser, const char *token)
4883
4989
  parser->parser_token_info = ptinfo;
4884
4990
  }
4885
4991
 
4992
+ #undef token_info_pop
4886
4993
  static void
4887
4994
  token_info_pop(struct parser_params *parser, const char *token)
4888
4995
  {
@@ -4917,7 +5024,8 @@ parser_yyerror(struct parser_params *parser, const char *msg)
4917
5024
  const int max_line_margin = 30;
4918
5025
  const char *p, *pe;
4919
5026
  char *buf;
4920
- int len, i;
5027
+ long len;
5028
+ int i;
4921
5029
 
4922
5030
  compile_error(PARSER_ARG "%s", msg);
4923
5031
  p = lex_p;
@@ -4954,7 +5062,7 @@ parser_yyerror(struct parser_params *parser, const char *msg)
4954
5062
  buf[len] = '\0';
4955
5063
  rb_compile_error_append("%s%s%s", pre, buf, post);
4956
5064
 
4957
- i = lex_p - p;
5065
+ i = (int)(lex_p - p);
4958
5066
  p2 = buf; pe = buf + len;
4959
5067
 
4960
5068
  while (p2 < pe) {
@@ -4979,8 +5087,10 @@ VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
4979
5087
  static VALUE
4980
5088
  debug_lines(const char *f)
4981
5089
  {
4982
- if (rb_const_defined_at(rb_cObject, rb_intern("SCRIPT_LINES__"))) {
4983
- VALUE hash = rb_const_get_at(rb_cObject, rb_intern("SCRIPT_LINES__"));
5090
+ ID script_lines;
5091
+ CONST_ID(script_lines, "SCRIPT_LINES__");
5092
+ if (rb_const_defined_at(rb_cObject, script_lines)) {
5093
+ VALUE hash = rb_const_get_at(rb_cObject, script_lines);
4984
5094
  if (TYPE(hash) == T_HASH) {
4985
5095
  VALUE fname = rb_str_new2(f);
4986
5096
  VALUE lines = rb_ary_new();
@@ -5012,9 +5122,7 @@ coverage(const char *f, int n)
5012
5122
  static int
5013
5123
  e_option_supplied(struct parser_params *parser)
5014
5124
  {
5015
- if (strcmp(ruby_sourcefile, "-e") == 0)
5016
- return Qtrue;
5017
- return Qfalse;
5125
+ return strcmp(ruby_sourcefile, "-e") == 0;
5018
5126
  }
5019
5127
 
5020
5128
  static VALUE
@@ -5024,7 +5132,7 @@ yycompile0(VALUE arg, int tracing)
5024
5132
  NODE *tree;
5025
5133
  struct parser_params *parser = (struct parser_params *)arg;
5026
5134
 
5027
- if ((!compile_for_eval || rb_parse_in_main()) && rb_safe_level() == 0) {
5135
+ if (!compile_for_eval && rb_safe_level() == 0) {
5028
5136
  ruby_debug_lines = debug_lines(ruby_sourcefile);
5029
5137
  if (ruby_debug_lines && ruby_sourceline > 0) {
5030
5138
  VALUE str = STR_NEW0();
@@ -5056,16 +5164,8 @@ yycompile0(VALUE arg, int tracing)
5056
5164
  if (!tree) {
5057
5165
  tree = NEW_NIL();
5058
5166
  }
5059
- if (ruby_eval_tree_begin) {
5060
- NODE *scope = ruby_eval_tree;
5061
-
5062
- if (scope) {
5063
- scope->nd_body = NEW_PRELUDE(ruby_eval_tree_begin, scope->nd_body);
5064
- }
5065
- tree = scope;
5066
- }
5067
- else {
5068
- tree = ruby_eval_tree;
5167
+ else if (ruby_eval_tree_begin) {
5168
+ tree->nd_body = NEW_PRELUDE(ruby_eval_tree_begin, tree->nd_body);
5069
5169
  }
5070
5170
  return (VALUE)tree;
5071
5171
  }
@@ -5075,14 +5175,25 @@ yycompile(struct parser_params *parser, const char *f, int line)
5075
5175
  {
5076
5176
  ruby_sourcefile = ruby_strdup(f);
5077
5177
  ruby_sourceline = line - 1;
5078
- return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, Qtrue);
5178
+ return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, TRUE);
5079
5179
  }
5080
5180
  #endif /* !RIPPER */
5081
5181
 
5182
+ static rb_encoding *
5183
+ must_be_ascii_compatible(VALUE s)
5184
+ {
5185
+ rb_encoding *enc = rb_enc_get(s);
5186
+ if (!rb_enc_asciicompat(enc)) {
5187
+ rb_raise(rb_eArgError, "invalid source encoding");
5188
+ }
5189
+ return enc;
5190
+ }
5191
+
5082
5192
  static VALUE
5083
5193
  lex_get_str(struct parser_params *parser, VALUE s)
5084
5194
  {
5085
5195
  char *beg, *end, *pend;
5196
+ rb_encoding *enc = must_be_ascii_compatible(s);
5086
5197
 
5087
5198
  beg = RSTRING_PTR(s);
5088
5199
  if (lex_gets_ptr) {
@@ -5095,41 +5206,38 @@ lex_get_str(struct parser_params *parser, VALUE s)
5095
5206
  if (*end++ == '\n') break;
5096
5207
  }
5097
5208
  lex_gets_ptr = end - RSTRING_PTR(s);
5098
- return rb_enc_str_new(beg, end - beg, rb_enc_get(s));
5209
+ return rb_enc_str_new(beg, end - beg, enc);
5099
5210
  }
5100
5211
 
5101
5212
  static VALUE
5102
5213
  lex_getline(struct parser_params *parser)
5103
5214
  {
5104
5215
  VALUE line = (*parser->parser_lex_gets)(parser, parser->parser_lex_input);
5216
+ if (NIL_P(line)) return line;
5217
+ must_be_ascii_compatible(line);
5105
5218
  #ifndef RIPPER
5106
- if (ruby_debug_lines && !NIL_P(line)) {
5219
+ if (ruby_debug_lines) {
5220
+ rb_enc_associate(line, parser->enc);
5107
5221
  rb_ary_push(ruby_debug_lines, line);
5108
5222
  }
5109
- if (ruby_coverage && !NIL_P(line)) {
5223
+ if (ruby_coverage) {
5110
5224
  rb_ary_push(ruby_coverage, Qnil);
5111
5225
  }
5112
5226
  #endif
5113
5227
  return line;
5114
5228
  }
5115
5229
 
5116
- #ifndef RIPPER
5117
- NODE*
5118
- rb_compile_string(const char *f, VALUE s, int line)
5119
- {
5120
- VALUE volatile vparser = rb_parser_new();
5121
-
5122
- return rb_parser_compile_string(vparser, f, s, line);
5123
- }
5230
+ static const rb_data_type_t parser_data_type;
5124
5231
 
5125
- NODE*
5126
- rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
5232
+ #ifndef RIPPER
5233
+ static NODE*
5234
+ parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
5127
5235
  {
5128
5236
  struct parser_params *parser;
5129
5237
  NODE *node;
5130
5238
  volatile VALUE tmp;
5131
5239
 
5132
- Data_Get_Struct(vparser, struct parser_params, parser);
5240
+ TypedData_Get_Struct(vparser, struct parser_params, &parser_data_type, parser);
5133
5241
  lex_gets = lex_get_str;
5134
5242
  lex_gets_ptr = 0;
5135
5243
  lex_input = s;
@@ -5142,16 +5250,32 @@ rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int lin
5142
5250
  return node;
5143
5251
  }
5144
5252
 
5253
+ NODE*
5254
+ rb_compile_string(const char *f, VALUE s, int line)
5255
+ {
5256
+ must_be_ascii_compatible(s);
5257
+ return parser_compile_string(rb_parser_new(), f, s, line);
5258
+ }
5259
+
5260
+ NODE*
5261
+ rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
5262
+ {
5263
+ must_be_ascii_compatible(s);
5264
+ return parser_compile_string(vparser, f, s, line);
5265
+ }
5266
+
5145
5267
  NODE*
5146
5268
  rb_compile_cstr(const char *f, const char *s, int len, int line)
5147
5269
  {
5148
- return rb_compile_string(f, rb_str_new(s, len), line);
5270
+ VALUE str = rb_str_new(s, len);
5271
+ return parser_compile_string(rb_parser_new(), f, str, line);
5149
5272
  }
5150
5273
 
5151
5274
  NODE*
5152
5275
  rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
5153
5276
  {
5154
- return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
5277
+ VALUE str = rb_str_new(s, len);
5278
+ return parser_compile_string(vparser, f, str, line);
5155
5279
  }
5156
5280
 
5157
5281
  static VALUE
@@ -5175,7 +5299,7 @@ rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int st
5175
5299
  volatile VALUE tmp;
5176
5300
  NODE *node;
5177
5301
 
5178
- Data_Get_Struct(vparser, struct parser_params, parser);
5302
+ TypedData_Get_Struct(vparser, struct parser_params, &parser_data_type, parser);
5179
5303
  lex_gets = lex_io_gets;
5180
5304
  lex_input = file;
5181
5305
  lex_pbeg = lex_p = lex_pend = 0;
@@ -5252,7 +5376,7 @@ parser_nextc(struct parser_params *parser)
5252
5376
  rb_str_buf_cat(parser->delayed,
5253
5377
  parser->tokp, lex_pend - parser->tokp);
5254
5378
  parser->delayed_line = ruby_sourceline;
5255
- parser->delayed_col = parser->tokp - lex_pbeg;
5379
+ parser->delayed_col = (int)(parser->tokp - lex_pbeg);
5256
5380
  }
5257
5381
  else {
5258
5382
  rb_str_buf_cat(parser->delayed,
@@ -5268,9 +5392,7 @@ parser_nextc(struct parser_params *parser)
5268
5392
  parser->line_count++;
5269
5393
  lex_pbeg = lex_p = RSTRING_PTR(v);
5270
5394
  lex_pend = lex_p + RSTRING_LEN(v);
5271
- #ifdef RIPPER
5272
5395
  ripper_flush(parser);
5273
- #endif
5274
5396
  lex_lastline = v;
5275
5397
  }
5276
5398
  }
@@ -5338,7 +5460,7 @@ parser_tokadd(struct parser_params *parser, int c)
5338
5460
  }
5339
5461
 
5340
5462
  static int
5341
- parser_tok_hex(struct parser_params *parser, int *numlen)
5463
+ parser_tok_hex(struct parser_params *parser, size_t *numlen)
5342
5464
  {
5343
5465
  int c;
5344
5466
 
@@ -5365,7 +5487,7 @@ parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
5365
5487
  */
5366
5488
 
5367
5489
  int codepoint;
5368
- int numlen;
5490
+ size_t numlen;
5369
5491
 
5370
5492
  if (regexp_literal) { tokadd('\\'); tokadd('u'); }
5371
5493
 
@@ -5384,18 +5506,13 @@ parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
5384
5506
  }
5385
5507
  lex_p += numlen;
5386
5508
  if (regexp_literal) {
5387
- tokcopy(numlen);
5509
+ tokcopy((int)numlen);
5388
5510
  }
5389
5511
  else if (codepoint >= 0x80) {
5390
5512
  *encp = UTF8_ENC();
5391
5513
  if (string_literal) tokaddmbc(codepoint, *encp);
5392
5514
  }
5393
5515
  else if (string_literal) {
5394
- if (codepoint == 0 && symbol_literal) {
5395
- yyerror("symbol cannot contain '\\u{0}'");
5396
- return 0;
5397
- }
5398
-
5399
5516
  tokadd(codepoint);
5400
5517
  }
5401
5518
  } while (string_literal && (peek(' ') || peek('\t')));
@@ -5423,11 +5540,6 @@ parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
5423
5540
  if (string_literal) tokaddmbc(codepoint, *encp);
5424
5541
  }
5425
5542
  else if (string_literal) {
5426
- if (codepoint == 0 && symbol_literal) {
5427
- yyerror("symbol cannot contain '\\u0000'");
5428
- return 0;
5429
- }
5430
-
5431
5543
  tokadd(codepoint);
5432
5544
  }
5433
5545
  }
@@ -5443,7 +5555,7 @@ parser_read_escape(struct parser_params *parser, int flags,
5443
5555
  rb_encoding **encp)
5444
5556
  {
5445
5557
  int c;
5446
- int numlen;
5558
+ size_t numlen;
5447
5559
 
5448
5560
  switch (c = nextc()) {
5449
5561
  case '\\': /* Backslash */
@@ -5473,13 +5585,9 @@ parser_read_escape(struct parser_params *parser, int flags,
5473
5585
  case '0': case '1': case '2': case '3': /* octal constant */
5474
5586
  case '4': case '5': case '6': case '7':
5475
5587
  if (flags & (ESCAPE_CONTROL|ESCAPE_META)) goto eof;
5476
- {
5477
- int numlen;
5478
-
5479
- pushback(c);
5480
- c = scan_oct(lex_p, 3, &numlen);
5481
- lex_p += numlen;
5482
- }
5588
+ pushback(c);
5589
+ c = scan_oct(lex_p, 3, &numlen);
5590
+ lex_p += numlen;
5483
5591
  return c;
5484
5592
 
5485
5593
  case 'x': /* hex constant */
@@ -5501,6 +5609,7 @@ parser_read_escape(struct parser_params *parser, int flags,
5501
5609
  goto eof;
5502
5610
  }
5503
5611
  if ((c = nextc()) == '\\') {
5612
+ if (peek('u')) goto eof;
5504
5613
  return read_escape(flags|ESCAPE_META, encp) | 0x80;
5505
5614
  }
5506
5615
  else if (c == -1 || !ISASCII(c)) goto eof;
@@ -5516,6 +5625,7 @@ parser_read_escape(struct parser_params *parser, int flags,
5516
5625
  case 'c':
5517
5626
  if (flags & ESCAPE_CONTROL) goto eof;
5518
5627
  if ((c = nextc())== '\\') {
5628
+ if (peek('u')) goto eof;
5519
5629
  c = read_escape(flags|ESCAPE_CONTROL, encp);
5520
5630
  }
5521
5631
  else if (c == '?')
@@ -5545,6 +5655,7 @@ parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
5545
5655
  {
5546
5656
  int c;
5547
5657
  int flags = 0;
5658
+ size_t numlen;
5548
5659
 
5549
5660
  first:
5550
5661
  switch (c = nextc()) {
@@ -5555,25 +5666,19 @@ parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
5555
5666
  case '4': case '5': case '6': case '7':
5556
5667
  if (flags & (ESCAPE_CONTROL|ESCAPE_META)) goto eof;
5557
5668
  {
5558
- int numlen;
5559
- int oct;
5560
-
5561
- oct = scan_oct(--lex_p, 3, &numlen);
5669
+ ruby_scan_oct(--lex_p, 3, &numlen);
5562
5670
  if (numlen == 0) goto eof;
5563
5671
  lex_p += numlen;
5564
- tokcopy(numlen + 1);
5672
+ tokcopy((int)numlen + 1);
5565
5673
  }
5566
5674
  return 0;
5567
5675
 
5568
5676
  case 'x': /* hex constant */
5569
5677
  if (flags & (ESCAPE_CONTROL|ESCAPE_META)) goto eof;
5570
5678
  {
5571
- int numlen;
5572
- int hex;
5573
-
5574
- hex = tok_hex(&numlen);
5679
+ tok_hex(&numlen);
5575
5680
  if (numlen == 0) goto eof;
5576
- tokcopy(numlen + 2);
5681
+ tokcopy((int)numlen + 2);
5577
5682
  }
5578
5683
  return 0;
5579
5684
 
@@ -5626,6 +5731,7 @@ static int
5626
5731
  parser_regx_options(struct parser_params *parser)
5627
5732
  {
5628
5733
  int kcode = 0;
5734
+ int kopt = 0;
5629
5735
  int options = 0;
5630
5736
  int c, opt, kc;
5631
5737
 
@@ -5635,13 +5741,19 @@ parser_regx_options(struct parser_params *parser)
5635
5741
  options |= RE_OPTION_ONCE;
5636
5742
  }
5637
5743
  else if (rb_char_to_option_kcode(c, &opt, &kc)) {
5638
- options |= opt;
5639
- if (kc >= 0) kcode = c;
5744
+ if (kc >= 0) {
5745
+ if (kc != rb_ascii8bit_encindex()) kcode = c;
5746
+ kopt = opt;
5747
+ }
5748
+ else {
5749
+ options |= opt;
5750
+ }
5640
5751
  }
5641
5752
  else {
5642
5753
  tokadd(c);
5643
5754
  }
5644
5755
  }
5756
+ options |= kopt;
5645
5757
  pushback(c);
5646
5758
  if (toklen()) {
5647
5759
  tokfix();
@@ -5688,7 +5800,7 @@ parser_tokadd_string(struct parser_params *parser,
5688
5800
  static const char mixed_msg[] = "%s mixed within %s source";
5689
5801
 
5690
5802
  #define mixed_error(enc1, enc2) if (!errbuf) { \
5691
- int len = sizeof(mixed_msg) - 4; \
5803
+ size_t len = sizeof(mixed_msg) - 4; \
5692
5804
  len += strlen(rb_enc_name(enc1)); \
5693
5805
  len += strlen(rb_enc_name(enc2)); \
5694
5806
  errbuf = ALLOCA_N(char, len); \
@@ -5769,6 +5881,8 @@ parser_tokadd_string(struct parser_params *parser,
5769
5881
  }
5770
5882
  else if (c != term && !(paren && c == paren)) {
5771
5883
  tokadd('\\');
5884
+ pushback(c);
5885
+ continue;
5772
5886
  }
5773
5887
  }
5774
5888
  }
@@ -5785,11 +5899,6 @@ parser_tokadd_string(struct parser_params *parser,
5785
5899
  pushback(c);
5786
5900
  break;
5787
5901
  }
5788
- if (!c && (func & STR_FUNC_SYMBOL)) {
5789
- func &= ~STR_FUNC_SYMBOL;
5790
- compile_error(PARSER_ARG "symbol cannot contain '\\0'");
5791
- continue;
5792
- }
5793
5902
  if (c & 0x80) {
5794
5903
  has_nonascii = 1;
5795
5904
  if (enc != *encp) {
@@ -5809,7 +5918,7 @@ parser_tokadd_string(struct parser_params *parser,
5809
5918
  static int
5810
5919
  parser_parse_string(struct parser_params *parser, NODE *quote)
5811
5920
  {
5812
- int func = quote->nd_func;
5921
+ int func = (int)quote->nd_func;
5813
5922
  int term = nd_term(quote);
5814
5923
  int paren = nd_paren(quote);
5815
5924
  int c, space = 0;
@@ -5864,13 +5973,26 @@ parser_parse_string(struct parser_params *parser, NODE *quote)
5864
5973
 
5865
5974
  tokfix();
5866
5975
  set_yylval_str(STR_NEW3(tok(), toklen(), enc, func));
5976
+
5977
+ #ifdef RIPPER
5978
+ if (!NIL_P(parser->delayed)){
5979
+ ptrdiff_t len = lex_p - parser->tokp;
5980
+ if (len > 0) {
5981
+ rb_enc_str_buf_cat(parser->delayed, parser->tokp, len, enc);
5982
+ }
5983
+ ripper_dispatch_delayed_token(parser, tSTRING_CONTENT);
5984
+ parser->tokp = lex_p;
5985
+ }
5986
+ #endif
5987
+
5867
5988
  return tSTRING_CONTENT;
5868
5989
  }
5869
5990
 
5870
5991
  static int
5871
5992
  parser_heredoc_identifier(struct parser_params *parser)
5872
5993
  {
5873
- int c = nextc(), term, func = 0, len;
5994
+ int c = nextc(), term, func = 0;
5995
+ long len;
5874
5996
 
5875
5997
  if (c == '-') {
5876
5998
  c = nextc();
@@ -5925,9 +6047,7 @@ parser_heredoc_identifier(struct parser_params *parser)
5925
6047
  len, /* nd_nth */
5926
6048
  lex_lastline); /* nd_orig */
5927
6049
  nd_set_line(lex_strterm, ruby_sourceline);
5928
- #ifdef RIPPER
5929
6050
  ripper_flush(parser);
5930
- #endif
5931
6051
  return term == '`' ? tXSTRING_BEG : tSTRING_BEG;
5932
6052
  }
5933
6053
 
@@ -5936,12 +6056,6 @@ parser_heredoc_restore(struct parser_params *parser, NODE *here)
5936
6056
  {
5937
6057
  VALUE line;
5938
6058
 
5939
- #ifdef RIPPER
5940
- if (!NIL_P(parser->delayed))
5941
- ripper_dispatch_delayed_token(parser, tSTRING_CONTENT);
5942
- lex_goto_eol(parser);
5943
- ripper_dispatch_scan_event(parser, tHEREDOC_END);
5944
- #endif
5945
6059
  line = here->nd_orig;
5946
6060
  lex_lastline = line;
5947
6061
  lex_pbeg = RSTRING_PTR(line);
@@ -5951,25 +6065,22 @@ parser_heredoc_restore(struct parser_params *parser, NODE *here)
5951
6065
  ruby_sourceline = nd_line(here);
5952
6066
  dispose_string(here->nd_lit);
5953
6067
  rb_gc_force_recycle((VALUE)here);
5954
- #ifdef RIPPER
5955
6068
  ripper_flush(parser);
5956
- #endif
5957
6069
  }
5958
6070
 
5959
6071
  static int
5960
6072
  parser_whole_match_p(struct parser_params *parser,
5961
- const char *eos, int len, int indent)
6073
+ const char *eos, long len, int indent)
5962
6074
  {
5963
6075
  const char *p = lex_pbeg;
5964
- int n;
6076
+ long n;
5965
6077
 
5966
6078
  if (indent) {
5967
6079
  while (*p && ISSPACE(*p)) p++;
5968
6080
  }
5969
- n= lex_pend - (p + len);
5970
- if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return Qfalse;
5971
- if (strncmp(eos, p, len) == 0) return Qtrue;
5972
- return Qfalse;
6081
+ n = lex_pend - (p + len);
6082
+ if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return FALSE;
6083
+ return strncmp(eos, p, len) == 0;
5973
6084
  }
5974
6085
 
5975
6086
  static int
@@ -5979,6 +6090,7 @@ parser_here_document(struct parser_params *parser, NODE *here)
5979
6090
  const char *eos, *p, *pend;
5980
6091
  long len;
5981
6092
  VALUE str = 0;
6093
+ rb_encoding *enc = parser->enc;
5982
6094
 
5983
6095
  eos = RSTRING_PTR(here->nd_lit);
5984
6096
  len = RSTRING_LEN(here->nd_lit) - 1;
@@ -5987,6 +6099,20 @@ parser_here_document(struct parser_params *parser, NODE *here)
5987
6099
  if ((c = nextc()) == -1) {
5988
6100
  error:
5989
6101
  compile_error(PARSER_ARG "can't find string \"%s\" anywhere before EOF", eos);
6102
+ #ifdef RIPPER
6103
+ if (NIL_P(parser->delayed)) {
6104
+ ripper_dispatch_scan_event(parser, tSTRING_CONTENT);
6105
+ }
6106
+ else {
6107
+ if (str ||
6108
+ ((len = lex_p - parser->tokp) > 0 &&
6109
+ (str = STR_NEW3(parser->tokp, len, enc, func), 1))) {
6110
+ rb_str_append(parser->delayed, str);
6111
+ }
6112
+ ripper_dispatch_delayed_token(parser, tSTRING_CONTENT);
6113
+ }
6114
+ lex_goto_eol(parser);
6115
+ #endif
5990
6116
  restore:
5991
6117
  heredoc_restore(lex_strterm);
5992
6118
  lex_strterm = 0;
@@ -6026,7 +6152,6 @@ parser_here_document(struct parser_params *parser, NODE *here)
6026
6152
  }
6027
6153
  else {
6028
6154
  /* int mb = ENC_CODERANGE_7BIT, *mbp = &mb;*/
6029
- rb_encoding *enc = parser->enc;
6030
6155
  newtok();
6031
6156
  if (c == '#') {
6032
6157
  switch (c = nextc()) {
@@ -6055,6 +6180,12 @@ parser_here_document(struct parser_params *parser, NODE *here)
6055
6180
  } while (!whole_match_p(eos, len, indent));
6056
6181
  str = STR_NEW3(tok(), toklen(), enc, func);
6057
6182
  }
6183
+ #ifdef RIPPER
6184
+ if (!NIL_P(parser->delayed))
6185
+ ripper_dispatch_delayed_token(parser, tSTRING_CONTENT);
6186
+ lex_goto_eol(parser);
6187
+ ripper_dispatch_ignored_scan_event(parser, tHEREDOC_END);
6188
+ #endif
6058
6189
  heredoc_restore(lex_strterm);
6059
6190
  lex_strterm = NEW_STRTERM(-1, 0, 0);
6060
6191
  set_yylval_str(str);
@@ -6063,45 +6194,50 @@ parser_here_document(struct parser_params *parser, NODE *here)
6063
6194
 
6064
6195
  #include "lex.c"
6065
6196
 
6066
- #ifndef RIPPER
6067
6197
  static void
6068
6198
  arg_ambiguous_gen(struct parser_params *parser)
6069
6199
  {
6200
+ #ifndef RIPPER
6070
6201
  rb_warning0("ambiguous first argument; put parentheses or even spaces");
6071
- }
6072
6202
  #else
6073
- static void
6074
- arg_ambiguous_gen(struct parser_params *parser)
6075
- {
6076
6203
  dispatch0(arg_ambiguous);
6204
+ #endif
6077
6205
  }
6206
+ #define arg_ambiguous() (arg_ambiguous_gen(parser), 1)
6207
+
6208
+ static ID
6209
+ formal_argument_gen(struct parser_params *parser, ID lhs)
6210
+ {
6211
+ #ifndef RIPPER
6212
+ if (!is_local_id(lhs))
6213
+ yyerror("formal argument must be local variable");
6078
6214
  #endif
6079
- #define arg_ambiguous() arg_ambiguous_gen(parser)
6215
+ shadowing_lvar(lhs);
6216
+ return lhs;
6217
+ }
6080
6218
 
6081
6219
  static int
6082
6220
  lvar_defined_gen(struct parser_params *parser, ID id)
6083
6221
  {
6084
- #ifndef RIPPER
6085
6222
  return (dyna_in_block() && dvar_defined(id)) || local_id(id);
6086
- #else
6087
- return 0;
6088
- #endif
6089
6223
  }
6090
6224
 
6091
6225
  /* emacsen -*- hack */
6092
- static int
6093
- parser_encode_length(struct parser_params *parser, const char *name, int len)
6226
+ static long
6227
+ parser_encode_length(struct parser_params *parser, const char *name, long len)
6094
6228
  {
6095
- int nlen;
6229
+ long nlen;
6096
6230
 
6097
6231
  if (len > 5 && name[nlen = len - 5] == '-') {
6098
6232
  if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0)
6099
6233
  return nlen;
6100
6234
  }
6101
- if (len > 4 && name[nlen = len - 5] == '-') {
6235
+ if (len > 4 && name[nlen = len - 4] == '-') {
6102
6236
  if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0)
6103
6237
  return nlen;
6104
- if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0)
6238
+ if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0 &&
6239
+ !(len == 8 && rb_memcicmp(name, "utf8-mac", len) == 0))
6240
+ /* exclude UTF8-MAC because the encoding named "UTF8" doesn't exist in Ruby */
6105
6241
  return nlen;
6106
6242
  }
6107
6243
  return len;
@@ -6112,15 +6248,34 @@ parser_set_encode(struct parser_params *parser, const char *name)
6112
6248
  {
6113
6249
  int idx = rb_enc_find_index(name);
6114
6250
  rb_encoding *enc;
6251
+ VALUE excargs[3];
6115
6252
 
6116
6253
  if (idx < 0) {
6117
- rb_raise(rb_eArgError, "unknown encoding name: %s", name);
6254
+ VALUE rb_make_backtrace(void);
6255
+ VALUE rb_make_exception(int, VALUE*);
6256
+
6257
+ excargs[1] = rb_sprintf("unknown encoding name: %s", name);
6258
+ error:
6259
+ excargs[0] = rb_eArgError;
6260
+ excargs[2] = rb_make_backtrace();
6261
+ rb_ary_unshift(excargs[2], rb_sprintf("%s:%d", ruby_sourcefile, ruby_sourceline));
6262
+ rb_exc_raise(rb_make_exception(3, excargs));
6118
6263
  }
6119
6264
  enc = rb_enc_from_index(idx);
6120
6265
  if (!rb_enc_asciicompat(enc)) {
6121
- rb_raise(rb_eArgError, "%s is not ASCII compatible", rb_enc_name(enc));
6266
+ excargs[1] = rb_sprintf("%s is not ASCII compatible", rb_enc_name(enc));
6267
+ goto error;
6122
6268
  }
6123
6269
  parser->enc = enc;
6270
+ #ifndef RIPPER
6271
+ if (ruby_debug_lines) {
6272
+ long i, n = RARRAY_LEN(ruby_debug_lines);
6273
+ const VALUE *p = RARRAY_PTR(ruby_debug_lines);
6274
+ for (i = 0; i < n; ++i) {
6275
+ rb_enc_associate_index(*p, idx);
6276
+ }
6277
+ }
6278
+ #endif
6124
6279
  }
6125
6280
 
6126
6281
  static int
@@ -6136,15 +6291,13 @@ comment_at_top(struct parser_params *parser)
6136
6291
  }
6137
6292
 
6138
6293
  #ifndef RIPPER
6139
- typedef int (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, int len);
6294
+ typedef long (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, long len);
6140
6295
  typedef void (*rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val);
6141
6296
 
6142
6297
  static void
6143
6298
  magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
6144
6299
  {
6145
6300
  if (!comment_at_top(parser)) {
6146
- rb_warning("encoding '%s' is ignored, valid only in the first line except for shebang line.",
6147
- val);
6148
6301
  return;
6149
6302
  }
6150
6303
  parser_set_encode(parser, val);
@@ -6163,9 +6316,9 @@ static const struct magic_comment magic_comments[] = {
6163
6316
  #endif
6164
6317
 
6165
6318
  static const char *
6166
- magic_comment_marker(const char *str, int len)
6319
+ magic_comment_marker(const char *str, long len)
6167
6320
  {
6168
- int i = 2;
6321
+ long i = 2;
6169
6322
 
6170
6323
  while (i < len) {
6171
6324
  switch (str[i]) {
@@ -6196,7 +6349,7 @@ magic_comment_marker(const char *str, int len)
6196
6349
  }
6197
6350
 
6198
6351
  static int
6199
- parser_magic_comment(struct parser_params *parser, const char *str, int len)
6352
+ parser_magic_comment(struct parser_params *parser, const char *str, long len)
6200
6353
  {
6201
6354
  VALUE name = 0, val = 0;
6202
6355
  const char *beg, *end, *vbeg, *vend;
@@ -6205,9 +6358,9 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len)
6205
6358
  MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
6206
6359
  : ((_s) = STR_NEW((_p), (_n))))
6207
6360
 
6208
- if (len <= 7) return Qfalse;
6209
- if (!(beg = magic_comment_marker(str, len))) return Qfalse;
6210
- if (!(end = magic_comment_marker(beg, str + len - beg))) return Qfalse;
6361
+ if (len <= 7) return FALSE;
6362
+ if (!(beg = magic_comment_marker(str, len))) return FALSE;
6363
+ if (!(end = magic_comment_marker(beg, str + len - beg))) return FALSE;
6211
6364
  str = beg;
6212
6365
  len = end - beg - 3;
6213
6366
 
@@ -6217,7 +6370,8 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len)
6217
6370
  const struct magic_comment *p = magic_comments;
6218
6371
  #endif
6219
6372
  char *s;
6220
- int i, n = 0;
6373
+ int i;
6374
+ long n = 0;
6221
6375
 
6222
6376
  for (; len > 0 && *str; str++, --len) {
6223
6377
  switch (*str) {
@@ -6265,7 +6419,7 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len)
6265
6419
  str_copy(name, beg, n);
6266
6420
  s = RSTRING_PTR(name);
6267
6421
  for (i = 0; i < n; ++i) {
6268
- if (*s == '-') *s = '_';
6422
+ if (s[i] == '-') s[i] = '_';
6269
6423
  }
6270
6424
  #ifndef RIPPER
6271
6425
  do {
@@ -6278,13 +6432,13 @@ parser_magic_comment(struct parser_params *parser, const char *str, int len)
6278
6432
  (*p->func)(parser, s, RSTRING_PTR(val));
6279
6433
  break;
6280
6434
  }
6281
- } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p));
6435
+ } while (++p < magic_comments + numberof(magic_comments));
6282
6436
  #else
6283
6437
  dispatch2(magic_comment, name, val);
6284
6438
  #endif
6285
6439
  }
6286
6440
 
6287
- return Qtrue;
6441
+ return TRUE;
6288
6442
  }
6289
6443
 
6290
6444
  static void
@@ -6356,7 +6510,23 @@ parser_prepare(struct parser_params *parser)
6356
6510
  }
6357
6511
 
6358
6512
  #define IS_ARG() (lex_state == EXPR_ARG || lex_state == EXPR_CMDARG)
6513
+ #define IS_END() (lex_state == EXPR_END || lex_state == EXPR_ENDARG || lex_state == EXPR_ENDFN)
6359
6514
  #define IS_BEG() (lex_state == EXPR_BEG || lex_state == EXPR_MID || lex_state == EXPR_VALUE || lex_state == EXPR_CLASS)
6515
+ #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
6516
+
6517
+ #ifndef RIPPER
6518
+ #define ambiguous_operator(op, syn) ( \
6519
+ rb_warning0("`"op"' after local variable is interpreted as binary operator"), \
6520
+ rb_warning0("even though it seems like "syn""))
6521
+ #else
6522
+ #define ambiguous_operator(op, syn) dispatch2(operator_ambiguous, ripper_intern(op), rb_str_new_cstr(syn))
6523
+ #endif
6524
+ #define warn_balanced(op, syn) \
6525
+ (last_state != EXPR_CLASS && last_state != EXPR_DOT && \
6526
+ last_state != EXPR_FNAME && last_state != EXPR_ENDFN && \
6527
+ last_state != EXPR_ENDARG && \
6528
+ space_seen && !ISSPACE(c) && \
6529
+ (ambiguous_operator(op, syn), 0))
6360
6530
 
6361
6531
  static int
6362
6532
  parser_yylex(struct parser_params *parser)
@@ -6368,7 +6538,7 @@ parser_yylex(struct parser_params *parser)
6368
6538
  rb_encoding *enc;
6369
6539
  int mb;
6370
6540
  #ifdef RIPPER
6371
- int fallthru = Qfalse;
6541
+ int fallthru = FALSE;
6372
6542
  #endif
6373
6543
 
6374
6544
  if (lex_strterm) {
@@ -6391,8 +6561,9 @@ parser_yylex(struct parser_params *parser)
6391
6561
  return token;
6392
6562
  }
6393
6563
  cmd_state = command_start;
6394
- command_start = Qfalse;
6564
+ command_start = FALSE;
6395
6565
  retry:
6566
+ last_state = lex_state;
6396
6567
  switch (c = nextc()) {
6397
6568
  case '\0': /* NUL */
6398
6569
  case '\004': /* ^D */
@@ -6403,7 +6574,7 @@ parser_yylex(struct parser_params *parser)
6403
6574
  /* white spaces */
6404
6575
  case ' ': case '\t': case '\f': case '\r':
6405
6576
  case '\13': /* '\v' */
6406
- space_seen++;
6577
+ space_seen = 1;
6407
6578
  #ifdef RIPPER
6408
6579
  while ((c = nextc())) {
6409
6580
  switch (c) {
@@ -6430,7 +6601,7 @@ parser_yylex(struct parser_params *parser)
6430
6601
  lex_p = lex_pend;
6431
6602
  #ifdef RIPPER
6432
6603
  ripper_dispatch_scan_event(parser, tCOMMENT);
6433
- fallthru = Qtrue;
6604
+ fallthru = TRUE;
6434
6605
  #endif
6435
6606
  /* fall through */
6436
6607
  case '\n':
@@ -6444,7 +6615,7 @@ parser_yylex(struct parser_params *parser)
6444
6615
  if (!fallthru) {
6445
6616
  ripper_dispatch_scan_event(parser, tIGNORED_NL);
6446
6617
  }
6447
- fallthru = Qfalse;
6618
+ fallthru = FALSE;
6448
6619
  #endif
6449
6620
  goto retry;
6450
6621
  default:
@@ -6454,7 +6625,7 @@ parser_yylex(struct parser_params *parser)
6454
6625
  switch (c) {
6455
6626
  case ' ': case '\t': case '\f': case '\r':
6456
6627
  case '\13': /* '\v' */
6457
- space_seen++;
6628
+ space_seen = 1;
6458
6629
  break;
6459
6630
  case '.': {
6460
6631
  if ((c = nextc()) != '.') {
@@ -6477,7 +6648,7 @@ parser_yylex(struct parser_params *parser)
6477
6648
  }
6478
6649
  }
6479
6650
  normal_newline:
6480
- command_start = Qtrue;
6651
+ command_start = TRUE;
6481
6652
  lex_state = EXPR_BEG;
6482
6653
  return '\n';
6483
6654
 
@@ -6498,7 +6669,7 @@ parser_yylex(struct parser_params *parser)
6498
6669
  return tOP_ASGN;
6499
6670
  }
6500
6671
  pushback(c);
6501
- if (IS_ARG() && space_seen && !ISSPACE(c)) {
6672
+ if (IS_SPCARG(c)) {
6502
6673
  rb_warning0("`*' interpreted as argument prefix");
6503
6674
  c = tSTAR;
6504
6675
  }
@@ -6506,6 +6677,7 @@ parser_yylex(struct parser_params *parser)
6506
6677
  c = tSTAR;
6507
6678
  }
6508
6679
  else {
6680
+ warn_balanced("*", "argument prefix");
6509
6681
  c = '*';
6510
6682
  }
6511
6683
  }
@@ -6542,7 +6714,7 @@ parser_yylex(struct parser_params *parser)
6542
6714
  /* skip embedded rd document */
6543
6715
  if (strncmp(lex_p, "begin", 5) == 0 && ISSPACE(lex_p[5])) {
6544
6716
  #ifdef RIPPER
6545
- int first_p = Qtrue;
6717
+ int first_p = TRUE;
6546
6718
 
6547
6719
  lex_goto_eol(parser);
6548
6720
  ripper_dispatch_scan_event(parser, tEMBDOC_BEG);
@@ -6553,7 +6725,7 @@ parser_yylex(struct parser_params *parser)
6553
6725
  if (!first_p) {
6554
6726
  ripper_dispatch_scan_event(parser, tEMBDOC);
6555
6727
  }
6556
- first_p = Qfalse;
6728
+ first_p = FALSE;
6557
6729
  #endif
6558
6730
  c = nextc();
6559
6731
  if (c == -1) {
@@ -6597,12 +6769,12 @@ parser_yylex(struct parser_params *parser)
6597
6769
  return '=';
6598
6770
 
6599
6771
  case '<':
6772
+ last_state = lex_state;
6600
6773
  c = nextc();
6601
6774
  if (c == '<' &&
6602
- lex_state != EXPR_END &&
6603
6775
  lex_state != EXPR_DOT &&
6604
- lex_state != EXPR_ENDARG &&
6605
6776
  lex_state != EXPR_CLASS &&
6777
+ !IS_END() &&
6606
6778
  (!IS_ARG() || space_seen)) {
6607
6779
  int token = heredoc_identifier();
6608
6780
  if (token) return token;
@@ -6627,6 +6799,7 @@ parser_yylex(struct parser_params *parser)
6627
6799
  return tOP_ASGN;
6628
6800
  }
6629
6801
  pushback(c);
6802
+ warn_balanced("<<", "here document");
6630
6803
  return tLSHFT;
6631
6804
  }
6632
6805
  pushback(c);
@@ -6660,7 +6833,7 @@ parser_yylex(struct parser_params *parser)
6660
6833
 
6661
6834
  case '`':
6662
6835
  if (lex_state == EXPR_FNAME) {
6663
- lex_state = EXPR_END;
6836
+ lex_state = EXPR_ENDFN;
6664
6837
  return c;
6665
6838
  }
6666
6839
  if (lex_state == EXPR_DOT) {
@@ -6678,7 +6851,7 @@ parser_yylex(struct parser_params *parser)
6678
6851
  return tSTRING_BEG;
6679
6852
 
6680
6853
  case '?':
6681
- if (lex_state == EXPR_END || lex_state == EXPR_ENDARG) {
6854
+ if (IS_END()) {
6682
6855
  lex_state = EXPR_VALUE;
6683
6856
  return '?';
6684
6857
  }
@@ -6769,7 +6942,7 @@ parser_yylex(struct parser_params *parser)
6769
6942
  return tOP_ASGN;
6770
6943
  }
6771
6944
  pushback(c);
6772
- if (IS_ARG() && space_seen && !ISSPACE(c)) {
6945
+ if (IS_SPCARG(c)) {
6773
6946
  rb_warning0("`&' interpreted as argument prefix");
6774
6947
  c = tAMPER;
6775
6948
  }
@@ -6777,6 +6950,7 @@ parser_yylex(struct parser_params *parser)
6777
6950
  c = tAMPER;
6778
6951
  }
6779
6952
  else {
6953
+ warn_balanced("&", "argument prefix");
6780
6954
  c = '&';
6781
6955
  }
6782
6956
  switch (lex_state) {
@@ -6827,9 +7001,7 @@ parser_yylex(struct parser_params *parser)
6827
7001
  lex_state = EXPR_BEG;
6828
7002
  return tOP_ASGN;
6829
7003
  }
6830
- if (IS_BEG() ||
6831
- (IS_ARG() && space_seen && !ISSPACE(c))) {
6832
- if (IS_ARG()) arg_ambiguous();
7004
+ if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous())) {
6833
7005
  lex_state = EXPR_BEG;
6834
7006
  pushback(c);
6835
7007
  if (c != -1 && ISDIGIT(c)) {
@@ -6840,6 +7012,7 @@ parser_yylex(struct parser_params *parser)
6840
7012
  }
6841
7013
  lex_state = EXPR_BEG;
6842
7014
  pushback(c);
7015
+ warn_balanced("+", "unary operator");
6843
7016
  return '+';
6844
7017
 
6845
7018
  case '-':
@@ -6861,9 +7034,7 @@ parser_yylex(struct parser_params *parser)
6861
7034
  lex_state = EXPR_ARG;
6862
7035
  return tLAMBDA;
6863
7036
  }
6864
- if (IS_BEG() ||
6865
- (IS_ARG() && space_seen && !ISSPACE(c))) {
6866
- if (IS_ARG()) arg_ambiguous();
7037
+ if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous())) {
6867
7038
  lex_state = EXPR_BEG;
6868
7039
  pushback(c);
6869
7040
  if (c != -1 && ISDIGIT(c)) {
@@ -6873,6 +7044,7 @@ parser_yylex(struct parser_params *parser)
6873
7044
  }
6874
7045
  lex_state = EXPR_BEG;
6875
7046
  pushback(c);
7047
+ warn_balanced("-", "unary operator");
6876
7048
  return '-';
6877
7049
 
6878
7050
  case '.':
@@ -6905,6 +7077,7 @@ parser_yylex(struct parser_params *parser)
6905
7077
  c = nextc();
6906
7078
  }
6907
7079
  if (c == '0') {
7080
+ #define no_digits() do {yyerror("numeric literal without digits"); return 0;} while (0)
6908
7081
  int start = toklen();
6909
7082
  c = nextc();
6910
7083
  if (c == 'x' || c == 'X') {
@@ -6925,10 +7098,10 @@ parser_yylex(struct parser_params *parser)
6925
7098
  pushback(c);
6926
7099
  tokfix();
6927
7100
  if (toklen() == start) {
6928
- yyerror("numeric literal without digits");
7101
+ no_digits();
6929
7102
  }
6930
7103
  else if (nondigit) goto trailing_uc;
6931
- set_yylval_literal(rb_cstr_to_inum(tok(), 16, Qfalse));
7104
+ set_yylval_literal(rb_cstr_to_inum(tok(), 16, FALSE));
6932
7105
  return tINTEGER;
6933
7106
  }
6934
7107
  if (c == 'b' || c == 'B') {
@@ -6949,10 +7122,10 @@ parser_yylex(struct parser_params *parser)
6949
7122
  pushback(c);
6950
7123
  tokfix();
6951
7124
  if (toklen() == start) {
6952
- yyerror("numeric literal without digits");
7125
+ no_digits();
6953
7126
  }
6954
7127
  else if (nondigit) goto trailing_uc;
6955
- set_yylval_literal(rb_cstr_to_inum(tok(), 2, Qfalse));
7128
+ set_yylval_literal(rb_cstr_to_inum(tok(), 2, FALSE));
6956
7129
  return tINTEGER;
6957
7130
  }
6958
7131
  if (c == 'd' || c == 'D') {
@@ -6973,10 +7146,10 @@ parser_yylex(struct parser_params *parser)
6973
7146
  pushback(c);
6974
7147
  tokfix();
6975
7148
  if (toklen() == start) {
6976
- yyerror("numeric literal without digits");
7149
+ no_digits();
6977
7150
  }
6978
7151
  else if (nondigit) goto trailing_uc;
6979
- set_yylval_literal(rb_cstr_to_inum(tok(), 10, Qfalse));
7152
+ set_yylval_literal(rb_cstr_to_inum(tok(), 10, FALSE));
6980
7153
  return tINTEGER;
6981
7154
  }
6982
7155
  if (c == '_') {
@@ -6987,7 +7160,7 @@ parser_yylex(struct parser_params *parser)
6987
7160
  /* prefixed octal */
6988
7161
  c = nextc();
6989
7162
  if (c == -1 || c == '_' || !ISDIGIT(c)) {
6990
- yyerror("numeric literal without digits");
7163
+ no_digits();
6991
7164
  }
6992
7165
  }
6993
7166
  if (c >= '0' && c <= '7') {
@@ -7008,7 +7181,7 @@ parser_yylex(struct parser_params *parser)
7008
7181
  pushback(c);
7009
7182
  tokfix();
7010
7183
  if (nondigit) goto trailing_uc;
7011
- set_yylval_literal(rb_cstr_to_inum(tok(), 8, Qfalse));
7184
+ set_yylval_literal(rb_cstr_to_inum(tok(), 8, FALSE));
7012
7185
  return tINTEGER;
7013
7186
  }
7014
7187
  if (nondigit) {
@@ -7045,7 +7218,7 @@ parser_yylex(struct parser_params *parser)
7045
7218
  }
7046
7219
  else {
7047
7220
  int c0 = nextc();
7048
- if (c == -1 || !ISDIGIT(c0)) {
7221
+ if (c0 == -1 || !ISDIGIT(c0)) {
7049
7222
  pushback(c0);
7050
7223
  goto decode_num;
7051
7224
  }
@@ -7091,13 +7264,13 @@ parser_yylex(struct parser_params *parser)
7091
7264
 
7092
7265
  decode_num:
7093
7266
  pushback(c);
7094
- tokfix();
7095
7267
  if (nondigit) {
7096
7268
  char tmp[30];
7097
7269
  trailing_uc:
7098
- sprintf(tmp, "trailing `%c' in number", nondigit);
7270
+ snprintf(tmp, sizeof(tmp), "trailing `%c' in number", nondigit);
7099
7271
  yyerror(tmp);
7100
7272
  }
7273
+ tokfix();
7101
7274
  if (is_float) {
7102
7275
  double d = strtod(tok(), 0);
7103
7276
  if (errno == ERANGE) {
@@ -7107,7 +7280,7 @@ parser_yylex(struct parser_params *parser)
7107
7280
  set_yylval_literal(DBL2NUM(d));
7108
7281
  return tFLOAT;
7109
7282
  }
7110
- set_yylval_literal(rb_cstr_to_inum(tok(), 10, Qfalse));
7283
+ set_yylval_literal(rb_cstr_to_inum(tok(), 10, FALSE));
7111
7284
  return tINTEGER;
7112
7285
  }
7113
7286
 
@@ -7118,7 +7291,7 @@ parser_yylex(struct parser_params *parser)
7118
7291
  COND_LEXPOP();
7119
7292
  CMDARG_LEXPOP();
7120
7293
  if (c == ')')
7121
- lex_state = EXPR_END;
7294
+ lex_state = EXPR_ENDFN;
7122
7295
  else
7123
7296
  lex_state = EXPR_ENDARG;
7124
7297
  return c;
@@ -7126,16 +7299,16 @@ parser_yylex(struct parser_params *parser)
7126
7299
  case ':':
7127
7300
  c = nextc();
7128
7301
  if (c == ':') {
7129
- if (IS_BEG() ||
7130
- lex_state == EXPR_CLASS || (IS_ARG() && space_seen)) {
7302
+ if (IS_BEG() || lex_state == EXPR_CLASS || IS_SPCARG(-1)) {
7131
7303
  lex_state = EXPR_BEG;
7132
7304
  return tCOLON3;
7133
7305
  }
7134
7306
  lex_state = EXPR_DOT;
7135
7307
  return tCOLON2;
7136
7308
  }
7137
- if (lex_state == EXPR_END || lex_state == EXPR_ENDARG || (c != -1 && ISSPACE(c))) {
7309
+ if (IS_END() || ISSPACE(c)) {
7138
7310
  pushback(c);
7311
+ warn_balanced(":", "symbol literal");
7139
7312
  lex_state = EXPR_BEG;
7140
7313
  return ':';
7141
7314
  }
@@ -7164,12 +7337,10 @@ parser_yylex(struct parser_params *parser)
7164
7337
  return tOP_ASGN;
7165
7338
  }
7166
7339
  pushback(c);
7167
- if (IS_ARG() && space_seen) {
7168
- if (!ISSPACE(c)) {
7169
- arg_ambiguous();
7170
- lex_strterm = NEW_STRTERM(str_regexp, '/', 0);
7171
- return tREGEXP_BEG;
7172
- }
7340
+ if (IS_SPCARG(c)) {
7341
+ arg_ambiguous();
7342
+ lex_strterm = NEW_STRTERM(str_regexp, '/', 0);
7343
+ return tREGEXP_BEG;
7173
7344
  }
7174
7345
  switch (lex_state) {
7175
7346
  case EXPR_FNAME: case EXPR_DOT:
@@ -7177,6 +7348,7 @@ parser_yylex(struct parser_params *parser)
7177
7348
  default:
7178
7349
  lex_state = EXPR_BEG; break;
7179
7350
  }
7351
+ warn_balanced("/", "regexp literal");
7180
7352
  return '/';
7181
7353
 
7182
7354
  case '^':
@@ -7196,7 +7368,7 @@ parser_yylex(struct parser_params *parser)
7196
7368
 
7197
7369
  case ';':
7198
7370
  lex_state = EXPR_BEG;
7199
- command_start = Qtrue;
7371
+ command_start = TRUE;
7200
7372
  return ';';
7201
7373
 
7202
7374
  case ',':
@@ -7219,10 +7391,8 @@ parser_yylex(struct parser_params *parser)
7219
7391
  if (IS_BEG()) {
7220
7392
  c = tLPAREN;
7221
7393
  }
7222
- else if (space_seen) {
7223
- if (IS_ARG()) {
7224
- c = tLPAREN_ARG;
7225
- }
7394
+ else if (IS_SPCARG(-1)) {
7395
+ c = tLPAREN_ARG;
7226
7396
  }
7227
7397
  paren_nest++;
7228
7398
  COND_PUSH(0);
@@ -7260,9 +7430,11 @@ parser_yylex(struct parser_params *parser)
7260
7430
  lex_state = EXPR_BEG;
7261
7431
  lpar_beg = 0;
7262
7432
  --paren_nest;
7433
+ COND_PUSH(0);
7434
+ CMDARG_PUSH(0);
7263
7435
  return tLAMBEG;
7264
7436
  }
7265
- if (IS_ARG() || lex_state == EXPR_END)
7437
+ if (IS_ARG() || lex_state == EXPR_END || lex_state == EXPR_ENDFN)
7266
7438
  c = '{'; /* block (primary) */
7267
7439
  else if (lex_state == EXPR_ENDARG)
7268
7440
  c = tLBRACE_ARG; /* block (expr) */
@@ -7271,7 +7443,7 @@ parser_yylex(struct parser_params *parser)
7271
7443
  COND_PUSH(0);
7272
7444
  CMDARG_PUSH(0);
7273
7445
  lex_state = EXPR_BEG;
7274
- if (c != tLBRACE) command_start = Qtrue;
7446
+ if (c != tLBRACE) command_start = TRUE;
7275
7447
  return c;
7276
7448
 
7277
7449
  case '\\':
@@ -7359,7 +7531,7 @@ parser_yylex(struct parser_params *parser)
7359
7531
  lex_state = EXPR_BEG;
7360
7532
  return tOP_ASGN;
7361
7533
  }
7362
- if (IS_ARG() && space_seen && !ISSPACE(c)) {
7534
+ if (IS_SPCARG(c)) {
7363
7535
  goto quotation;
7364
7536
  }
7365
7537
  switch (lex_state) {
@@ -7369,10 +7541,10 @@ parser_yylex(struct parser_params *parser)
7369
7541
  lex_state = EXPR_BEG; break;
7370
7542
  }
7371
7543
  pushback(c);
7544
+ warn_balanced("%%", "string literal");
7372
7545
  return '%';
7373
7546
 
7374
7547
  case '$':
7375
- last_state = lex_state;
7376
7548
  lex_state = EXPR_END;
7377
7549
  newtok();
7378
7550
  c = nextc();
@@ -7406,7 +7578,7 @@ parser_yylex(struct parser_params *parser)
7406
7578
  tokadd('$');
7407
7579
  tokadd(c);
7408
7580
  tokfix();
7409
- set_yylval_id(rb_intern(tok()));
7581
+ set_yylval_name(rb_intern(tok()));
7410
7582
  return tGVAR;
7411
7583
 
7412
7584
  case '-':
@@ -7421,7 +7593,7 @@ parser_yylex(struct parser_params *parser)
7421
7593
  }
7422
7594
  gvar:
7423
7595
  tokfix();
7424
- set_yylval_id(rb_intern(tok()));
7596
+ set_yylval_name(rb_intern(tok()));
7425
7597
  return tGVAR;
7426
7598
 
7427
7599
  case '&': /* $&: last match */
@@ -7570,12 +7742,11 @@ parser_yylex(struct parser_params *parser)
7570
7742
  }
7571
7743
 
7572
7744
  if ((lex_state == EXPR_BEG && !cmd_state) ||
7573
- lex_state == EXPR_ARG ||
7574
- lex_state == EXPR_CMDARG) {
7745
+ IS_ARG()) {
7575
7746
  if (peek(':') && !(lex_p + 1 < lex_pend && lex_p[1] == ':')) {
7576
7747
  lex_state = EXPR_BEG;
7577
7748
  nextc();
7578
- set_yylval_id(TOK_INTERN(!ENC_SINGLE(mb)));
7749
+ set_yylval_name(TOK_INTERN(!ENC_SINGLE(mb)));
7579
7750
  return tLABEL;
7580
7751
  }
7581
7752
  }
@@ -7588,11 +7759,11 @@ parser_yylex(struct parser_params *parser)
7588
7759
  enum lex_state_e state = lex_state;
7589
7760
  lex_state = kw->state;
7590
7761
  if (state == EXPR_FNAME) {
7591
- set_yylval_id(rb_intern(kw->name));
7762
+ set_yylval_name(rb_intern(kw->name));
7592
7763
  return kw->id[0];
7593
7764
  }
7594
7765
  if (kw->id[0] == keyword_do) {
7595
- command_start = Qtrue;
7766
+ command_start = TRUE;
7596
7767
  if (lpar_beg && lpar_beg == paren_nest) {
7597
7768
  lpar_beg = 0;
7598
7769
  --paren_nest;
@@ -7625,6 +7796,9 @@ parser_yylex(struct parser_params *parser)
7625
7796
  lex_state = EXPR_ARG;
7626
7797
  }
7627
7798
  }
7799
+ else if (lex_state == EXPR_FNAME) {
7800
+ lex_state = EXPR_ENDFN;
7801
+ }
7628
7802
  else {
7629
7803
  lex_state = EXPR_END;
7630
7804
  }
@@ -7632,7 +7806,7 @@ parser_yylex(struct parser_params *parser)
7632
7806
  {
7633
7807
  ID ident = TOK_INTERN(!ENC_SINGLE(mb));
7634
7808
 
7635
- set_yylval_id(ident);
7809
+ set_yylval_name(ident);
7636
7810
  if (last_state != EXPR_DOT && is_local_id(ident) && lvar_defined(ident)) {
7637
7811
  lex_state = EXPR_END;
7638
7812
  }
@@ -7823,6 +7997,7 @@ list_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
7823
7997
  static int
7824
7998
  literal_concat0(struct parser_params *parser, VALUE head, VALUE tail)
7825
7999
  {
8000
+ if (NIL_P(tail)) return 1;
7826
8001
  if (!rb_enc_compatible(head, tail)) {
7827
8002
  compile_error(PARSER_ARG "string literal encodings differ (%s / %s)",
7828
8003
  rb_enc_name(rb_enc_get(head)),
@@ -7846,7 +8021,7 @@ literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
7846
8021
 
7847
8022
  htype = nd_type(head);
7848
8023
  if (htype == NODE_EVSTR) {
7849
- NODE *node = NEW_DSTR(STR_NEW0());
8024
+ NODE *node = NEW_DSTR(Qnil);
7850
8025
  head = list_append(node, head);
7851
8026
  }
7852
8027
  switch (nd_type(tail)) {
@@ -7873,6 +8048,12 @@ literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
7873
8048
  rb_gc_force_recycle((VALUE)head);
7874
8049
  head = tail;
7875
8050
  }
8051
+ else if (NIL_P(tail->nd_lit)) {
8052
+ head->nd_alen += tail->nd_alen - 1;
8053
+ head->nd_next->nd_end->nd_next = tail->nd_next;
8054
+ head->nd_next->nd_end = tail->nd_next->nd_end;
8055
+ rb_gc_force_recycle((VALUE)tail);
8056
+ }
7876
8057
  else {
7877
8058
  nd_set_type(tail, NODE_ARRAY);
7878
8059
  tail->nd_head = NEW_STR(tail->nd_lit);
@@ -7895,7 +8076,7 @@ static NODE *
7895
8076
  evstr2dstr_gen(struct parser_params *parser, NODE *node)
7896
8077
  {
7897
8078
  if (nd_type(node) == NODE_EVSTR) {
7898
- node = list_append(NEW_DSTR(STR_NEW0()), node);
8079
+ node = list_append(NEW_DSTR(Qnil), node);
7899
8080
  }
7900
8081
  return node;
7901
8082
  }
@@ -8009,11 +8190,24 @@ gettable_gen(struct parser_params *parser, ID id)
8009
8190
  compile_error(PARSER_ARG "identifier %s is not valid to get", rb_id2name(id));
8010
8191
  return 0;
8011
8192
  }
8193
+ #endif /* !RIPPER */
8012
8194
 
8195
+ #ifdef RIPPER
8196
+ static VALUE
8197
+ assignable_gen(struct parser_params *parser, VALUE lhs)
8198
+ #else
8013
8199
  static NODE*
8014
8200
  assignable_gen(struct parser_params *parser, ID id, NODE *val)
8201
+ #endif
8015
8202
  {
8016
- if (!id) return 0;
8203
+ #ifdef RIPPER
8204
+ ID id = get_id(lhs);
8205
+ # define assignable_result(x) get_value(lhs)
8206
+ # define parser_yyerror(parser, x) dispatch1(assign_error, lhs)
8207
+ #else
8208
+ # define assignable_result(x) x
8209
+ #endif
8210
+ if (!id) return assignable_result(0);
8017
8211
  if (id == keyword_self) {
8018
8212
  yyerror("Can't change the value of self");
8019
8213
  }
@@ -8038,53 +8232,55 @@ assignable_gen(struct parser_params *parser, ID id, NODE *val)
8038
8232
  else if (is_local_id(id)) {
8039
8233
  if (dyna_in_block()) {
8040
8234
  if (dvar_curr(id)) {
8041
- return NEW_DASGN_CURR(id, val);
8235
+ return assignable_result(NEW_DASGN_CURR(id, val));
8042
8236
  }
8043
8237
  else if (dvar_defined(id)) {
8044
- return NEW_DASGN(id, val);
8238
+ return assignable_result(NEW_DASGN(id, val));
8045
8239
  }
8046
8240
  else if (local_id(id)) {
8047
- return NEW_LASGN(id, val);
8241
+ return assignable_result(NEW_LASGN(id, val));
8048
8242
  }
8049
- else{
8243
+ else {
8050
8244
  dyna_var(id);
8051
- return NEW_DASGN_CURR(id, val);
8245
+ return assignable_result(NEW_DASGN_CURR(id, val));
8052
8246
  }
8053
8247
  }
8054
8248
  else {
8055
8249
  if (!local_id(id)) {
8056
8250
  local_var(id);
8057
8251
  }
8058
- return NEW_LASGN(id, val);
8252
+ return assignable_result(NEW_LASGN(id, val));
8059
8253
  }
8060
8254
  }
8061
8255
  else if (is_global_id(id)) {
8062
- return NEW_GASGN(id, val);
8256
+ return assignable_result(NEW_GASGN(id, val));
8063
8257
  }
8064
8258
  else if (is_instance_id(id)) {
8065
- return NEW_IASGN(id, val);
8259
+ return assignable_result(NEW_IASGN(id, val));
8066
8260
  }
8067
8261
  else if (is_const_id(id)) {
8068
- if (in_def || in_single)
8069
- yyerror("dynamic constant assignment");
8070
- return NEW_CDECL(id, val, 0);
8262
+ if (!in_def && !in_single)
8263
+ return assignable_result(NEW_CDECL(id, val, 0));
8264
+ yyerror("dynamic constant assignment");
8071
8265
  }
8072
8266
  else if (is_class_id(id)) {
8073
- return NEW_CVASGN(id, val);
8267
+ return assignable_result(NEW_CVASGN(id, val));
8074
8268
  }
8075
8269
  else {
8076
8270
  compile_error(PARSER_ARG "identifier %s is not valid to set", rb_id2name(id));
8077
8271
  }
8078
- return 0;
8272
+ return assignable_result(0);
8273
+ #undef assignable_result
8274
+ #undef parser_yyerror
8079
8275
  }
8080
8276
 
8081
- static void
8277
+ static ID
8082
8278
  shadowing_lvar_gen(struct parser_params *parser, ID name)
8083
8279
  {
8084
8280
  ID uscore;
8085
8281
 
8086
8282
  CONST_ID(uscore, "_");
8087
- if (uscore == name) return;
8283
+ if (uscore == name) return name;
8088
8284
  if (dyna_in_block()) {
8089
8285
  if (dvar_curr(name)) {
8090
8286
  yyerror("duplicated argument name");
@@ -8099,6 +8295,7 @@ shadowing_lvar_gen(struct parser_params *parser, ID name)
8099
8295
  yyerror("duplicated argument name");
8100
8296
  }
8101
8297
  }
8298
+ return name;
8102
8299
  }
8103
8300
 
8104
8301
  static void
@@ -8114,6 +8311,7 @@ new_bv_gen(struct parser_params *parser, ID name)
8114
8311
  dyna_var(name);
8115
8312
  }
8116
8313
 
8314
+ #ifndef RIPPER
8117
8315
  static NODE *
8118
8316
  aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx)
8119
8317
  {
@@ -8165,7 +8363,10 @@ arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
8165
8363
  if (!node2) return node1;
8166
8364
  switch (nd_type(node1)) {
8167
8365
  case NODE_BLOCK_PASS:
8168
- node1->nd_iter = arg_concat(node1->nd_iter, node2);
8366
+ if (node1->nd_head)
8367
+ node1->nd_head = arg_concat(node1->nd_head, node2);
8368
+ else
8369
+ node1->nd_head = NEW_LIST(node2);
8169
8370
  return node1;
8170
8371
  case NODE_ARGSPUSH:
8171
8372
  if (nd_type(node2) != NODE_ARRAY) break;
@@ -8251,7 +8452,7 @@ value_expr_gen(struct parser_params *parser, NODE *node)
8251
8452
  case NODE_DEFN:
8252
8453
  case NODE_DEFS:
8253
8454
  parser_warning(node, "void value expression");
8254
- return Qfalse;
8455
+ return FALSE;
8255
8456
 
8256
8457
  case NODE_RETURN:
8257
8458
  case NODE_BREAK:
@@ -8260,7 +8461,7 @@ value_expr_gen(struct parser_params *parser, NODE *node)
8260
8461
  case NODE_RETRY:
8261
8462
  if (!cond) yyerror("void value expression");
8262
8463
  /* or "control never reach"? */
8263
- return Qfalse;
8464
+ return FALSE;
8264
8465
 
8265
8466
  case NODE_BLOCK:
8266
8467
  while (node->nd_next) {
@@ -8282,7 +8483,7 @@ value_expr_gen(struct parser_params *parser, NODE *node)
8282
8483
  node = node->nd_body;
8283
8484
  break;
8284
8485
  }
8285
- if (!value_expr(node->nd_body)) return Qfalse;
8486
+ if (!value_expr(node->nd_body)) return FALSE;
8286
8487
  node = node->nd_else;
8287
8488
  break;
8288
8489
 
@@ -8293,11 +8494,11 @@ value_expr_gen(struct parser_params *parser, NODE *node)
8293
8494
  break;
8294
8495
 
8295
8496
  default:
8296
- return Qtrue;
8497
+ return TRUE;
8297
8498
  }
8298
8499
  }
8299
8500
 
8300
- return Qtrue;
8501
+ return TRUE;
8301
8502
  }
8302
8503
 
8303
8504
  static void
@@ -8428,6 +8629,7 @@ reduce_nodes_gen(struct parser_params *parser, NODE **body)
8428
8629
  (reduce_nodes(&node->n1), body = &node->n2, 1))
8429
8630
 
8430
8631
  while (node) {
8632
+ int newline = (int)(node->flags & NODE_FL_NEWLINE);
8431
8633
  switch (nd_type(node)) {
8432
8634
  end:
8433
8635
  case NODE_NIL:
@@ -8435,9 +8637,11 @@ reduce_nodes_gen(struct parser_params *parser, NODE **body)
8435
8637
  return;
8436
8638
  case NODE_RETURN:
8437
8639
  *body = node = node->nd_stts;
8640
+ if (newline && node) node->flags |= NODE_FL_NEWLINE;
8438
8641
  continue;
8439
8642
  case NODE_BEGIN:
8440
8643
  *body = node = node->nd_body;
8644
+ if (newline && node) node->flags |= NODE_FL_NEWLINE;
8441
8645
  continue;
8442
8646
  case NODE_BLOCK:
8443
8647
  body = &node->nd_end->nd_head;
@@ -8461,6 +8665,7 @@ reduce_nodes_gen(struct parser_params *parser, NODE **body)
8461
8665
  return;
8462
8666
  }
8463
8667
  node = *body;
8668
+ if (newline && node) node->flags |= NODE_FL_NEWLINE;
8464
8669
  }
8465
8670
 
8466
8671
  #undef subnodes
@@ -8476,6 +8681,7 @@ assign_in_cond(struct parser_params *parser, NODE *node)
8476
8681
 
8477
8682
  case NODE_LASGN:
8478
8683
  case NODE_DASGN:
8684
+ case NODE_DASGN_CURR:
8479
8685
  case NODE_GASGN:
8480
8686
  case NODE_IASGN:
8481
8687
  break;
@@ -8484,6 +8690,7 @@ assign_in_cond(struct parser_params *parser, NODE *node)
8484
8690
  return 0;
8485
8691
  }
8486
8692
 
8693
+ if (!node->nd_value) return 1;
8487
8694
  switch (nd_type(node->nd_value)) {
8488
8695
  case NODE_LIT:
8489
8696
  case NODE_STR:
@@ -8534,7 +8741,7 @@ fixup_nodes(NODE **rootnode)
8534
8741
  case NODE_DOT2:
8535
8742
  case NODE_DOT3:
8536
8743
  val = rb_range_new(head->nd_beg->nd_lit, head->nd_end->nd_lit,
8537
- type == NODE_DOT3 ? Qtrue : Qfalse);
8744
+ type == NODE_DOT3);
8538
8745
  rb_gc_force_recycle((VALUE)head->nd_beg);
8539
8746
  rb_gc_force_recycle((VALUE)head->nd_end);
8540
8747
  nd_set_type(head, NODE_LIT);
@@ -8653,9 +8860,9 @@ static NODE*
8653
8860
  logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
8654
8861
  {
8655
8862
  value_expr(left);
8656
- if (left && nd_type(left) == type) {
8863
+ if (left && (enum node_type)nd_type(left) == type) {
8657
8864
  NODE *node = left, *second;
8658
- while ((second = node->nd_2nd) != 0 && nd_type(second) == type) {
8865
+ while ((second = node->nd_2nd) != 0 && (enum node_type)nd_type(second) == type) {
8659
8866
  node = second;
8660
8867
  }
8661
8868
  node->nd_2nd = NEW_NODE(type, second, right, 0);
@@ -8759,6 +8966,7 @@ new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b
8759
8966
  ruby_sourceline = saved_line;
8760
8967
  return node;
8761
8968
  }
8969
+ #endif /* !RIPPER */
8762
8970
 
8763
8971
  static void
8764
8972
  local_push_gen(struct parser_params *parser, int inherit_dvars)
@@ -8782,6 +8990,7 @@ local_pop_gen(struct parser_params *parser)
8782
8990
  lvtbl = local;
8783
8991
  }
8784
8992
 
8993
+ #ifndef RIPPER
8785
8994
  static ID*
8786
8995
  vtable_tblcpy(ID *buf, const struct vtable *src)
8787
8996
  {
@@ -8810,6 +9019,7 @@ local_tbl_gen(struct parser_params *parser)
8810
9019
  buf[0] = cnt;
8811
9020
  return buf;
8812
9021
  }
9022
+ #endif
8813
9023
 
8814
9024
  static int
8815
9025
  arg_var_gen(struct parser_params *parser, ID id)
@@ -8847,15 +9057,16 @@ local_id_gen(struct parser_params *parser, ID id)
8847
9057
  }
8848
9058
  }
8849
9059
 
8850
- static void
9060
+ static const struct vtable *
8851
9061
  dyna_push_gen(struct parser_params *parser)
8852
9062
  {
8853
9063
  lvtbl->args = vtable_alloc(lvtbl->args);
8854
9064
  lvtbl->vars = vtable_alloc(lvtbl->vars);
9065
+ return lvtbl->args;
8855
9066
  }
8856
9067
 
8857
9068
  static void
8858
- dyna_pop_gen(struct parser_params *parser)
9069
+ dyna_pop_1(struct parser_params *parser)
8859
9070
  {
8860
9071
  struct vtable *tmp;
8861
9072
 
@@ -8867,6 +9078,20 @@ dyna_pop_gen(struct parser_params *parser)
8867
9078
  vtable_free(tmp);
8868
9079
  }
8869
9080
 
9081
+ static void
9082
+ dyna_pop_gen(struct parser_params *parser, const struct vtable *lvargs)
9083
+ {
9084
+ while (lvtbl->args != lvargs) {
9085
+ dyna_pop_1(parser);
9086
+ if (!lvtbl->args) {
9087
+ struct local_vars *local = lvtbl->prev;
9088
+ xfree(lvtbl);
9089
+ lvtbl = local;
9090
+ }
9091
+ }
9092
+ dyna_pop_1(parser);
9093
+ }
9094
+
8870
9095
  static int
8871
9096
  dyna_in_block_gen(struct parser_params *parser)
8872
9097
  {
@@ -8906,7 +9131,8 @@ dvar_curr_gen(struct parser_params *parser, ID id)
8906
9131
  vtable_included(lvtbl->vars, id));
8907
9132
  }
8908
9133
 
8909
- VALUE rb_reg_compile(VALUE str, int options);
9134
+ #ifndef RIPPER
9135
+ VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
8910
9136
  VALUE rb_reg_check_preprocess(VALUE);
8911
9137
 
8912
9138
  static void
@@ -8948,17 +9174,19 @@ reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options)
8948
9174
  c, rb_enc_name(rb_enc_get(str)));
8949
9175
  }
8950
9176
 
8951
- static void
9177
+ static int
8952
9178
  reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options)
8953
9179
  {
8954
9180
  VALUE err;
8955
- reg_fragment_setenc_gen(parser, str, options);
9181
+ reg_fragment_setenc(str, options);
8956
9182
  err = rb_reg_check_preprocess(str);
8957
9183
  if (err != Qnil) {
8958
9184
  err = rb_obj_as_string(err);
8959
9185
  compile_error(PARSER_ARG "%s", RSTRING_PTR(err));
8960
9186
  RB_GC_GUARD(err);
9187
+ return 0;
8961
9188
  }
9189
+ return 1;
8962
9190
  }
8963
9191
 
8964
9192
  typedef struct {
@@ -8976,7 +9204,7 @@ reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
8976
9204
  reg_named_capture_assign_t *arg = (reg_named_capture_assign_t*)arg0;
8977
9205
  struct parser_params* parser = arg->parser;
8978
9206
  rb_encoding *enc = arg->enc;
8979
- int len = name_end - name;
9207
+ long len = name_end - name;
8980
9208
  const char *s = (const char *)name;
8981
9209
  ID var;
8982
9210
 
@@ -8988,7 +9216,8 @@ reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
8988
9216
  }
8989
9217
 
8990
9218
  if (!len || (*name != '_' && ISASCII(*name) && !rb_enc_islower(*name, enc)) ||
8991
- rb_reserved_word(s, len) || !rb_enc_symname2_p(s, len, enc)) {
9219
+ (len < MAX_WORD_LENGTH && rb_reserved_word(s, (int)len)) ||
9220
+ !rb_enc_symname2_p(s, len, enc)) {
8992
9221
  return ST_CONTINUE;
8993
9222
  }
8994
9223
  var = rb_intern3(s, len, enc);
@@ -9048,7 +9277,7 @@ reg_compile_gen(struct parser_params* parser, VALUE str, int options)
9048
9277
 
9049
9278
  reg_fragment_setenc(str, options);
9050
9279
  err = rb_errinfo();
9051
- re = rb_reg_compile(str, options & RE_OPTION_MASK);
9280
+ re = rb_reg_compile(str, options & RE_OPTION_MASK, ruby_sourcefile, ruby_sourceline);
9052
9281
  if (NIL_P(re)) {
9053
9282
  ID mesg = rb_intern("mesg");
9054
9283
  VALUE m = rb_attr_get(rb_errinfo(), mesg);
@@ -9078,7 +9307,7 @@ rb_parser_append_print(VALUE vparser, NODE *node)
9078
9307
 
9079
9308
  if (!node) return node;
9080
9309
 
9081
- Data_Get_Struct(vparser, struct parser_params, parser);
9310
+ TypedData_Get_Struct(vparser, struct parser_params, &parser_data_type, parser);
9082
9311
 
9083
9312
  node = node->nd_body;
9084
9313
 
@@ -9110,7 +9339,7 @@ rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
9110
9339
 
9111
9340
  if (!node) return node;
9112
9341
 
9113
- Data_Get_Struct(vparser, struct parser_params, parser);
9342
+ TypedData_Get_Struct(vparser, struct parser_params, &parser_data_type, parser);
9114
9343
 
9115
9344
  node = node->nd_body;
9116
9345
 
@@ -9168,14 +9397,20 @@ static const struct {
9168
9397
  {tCOLON2, "::"},
9169
9398
  };
9170
9399
 
9171
- #define op_tbl_count (sizeof(op_tbl) / sizeof(op_tbl[0]))
9400
+ #define op_tbl_count numberof(op_tbl)
9401
+
9402
+ #ifndef ENABLE_SELECTOR_NAMESPACE
9403
+ #define ENABLE_SELECTOR_NAMESPACE 0
9404
+ #endif
9172
9405
 
9173
9406
  static struct symbols {
9174
9407
  ID last_id;
9175
9408
  st_table *sym_id;
9176
9409
  st_table *id_str;
9410
+ #if ENABLE_SELECTOR_NAMESPACE
9177
9411
  st_table *ivar2_id;
9178
9412
  st_table *id_ivar2;
9413
+ #endif
9179
9414
  VALUE op_sym[tLAST_TOKEN];
9180
9415
  } global_symbols = {tLAST_ID};
9181
9416
 
@@ -9184,6 +9419,7 @@ static const struct st_hash_type symhash = {
9184
9419
  rb_str_hash,
9185
9420
  };
9186
9421
 
9422
+ #if ENABLE_SELECTOR_NAMESPACE
9187
9423
  struct ivar2_key {
9188
9424
  ID id;
9189
9425
  VALUE klass;
@@ -9208,14 +9444,17 @@ static const struct st_hash_type ivar2_hash_type = {
9208
9444
  ivar2_cmp,
9209
9445
  ivar2_hash,
9210
9446
  };
9447
+ #endif
9211
9448
 
9212
9449
  void
9213
9450
  Init_sym(void)
9214
9451
  {
9215
9452
  global_symbols.sym_id = st_init_table_with_size(&symhash, 1000);
9216
9453
  global_symbols.id_str = st_init_numtable_with_size(1000);
9454
+ #if ENABLE_SELECTOR_NAMESPACE
9217
9455
  global_symbols.ivar2_id = st_init_table_with_size(&ivar2_hash_type, 1000);
9218
9456
  global_symbols.id_ivar2 = st_init_numtable_with_size(1000);
9457
+ #endif
9219
9458
 
9220
9459
  Init_id();
9221
9460
  }
@@ -9227,6 +9466,7 @@ rb_gc_mark_symbols(void)
9227
9466
  rb_gc_mark_locations(global_symbols.op_sym,
9228
9467
  global_symbols.op_sym + tLAST_TOKEN);
9229
9468
  }
9469
+ #endif /* !RIPPER */
9230
9470
 
9231
9471
  static ID
9232
9472
  internal_id_gen(struct parser_params *parser)
@@ -9236,6 +9476,7 @@ internal_id_gen(struct parser_params *parser)
9236
9476
  return ID_INTERNAL | (id << ID_SCOPE_SHIFT);
9237
9477
  }
9238
9478
 
9479
+ #ifndef RIPPER
9239
9480
  static int
9240
9481
  is_special_global_name(const char *m, const char *e, rb_encoding *enc)
9241
9482
  {
@@ -9262,7 +9503,7 @@ is_special_global_name(const char *m, const char *e, rb_encoding *enc)
9262
9503
  do {
9263
9504
  if (!ISASCII(*m)) mb = 1;
9264
9505
  ++m;
9265
- } while (rb_enc_isdigit(*m, enc));
9506
+ } while (m < e && rb_enc_isdigit(*m, enc));
9266
9507
  }
9267
9508
  return m == e ? mb + 1 : 0;
9268
9509
  }
@@ -9280,19 +9521,19 @@ rb_enc_symname_p(const char *name, rb_encoding *enc)
9280
9521
  }
9281
9522
 
9282
9523
  int
9283
- rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
9524
+ rb_enc_symname2_p(const char *name, long len, rb_encoding *enc)
9284
9525
  {
9285
9526
  const char *m = name;
9286
9527
  const char *e = m + len;
9287
- int localid = Qfalse;
9528
+ int localid = FALSE;
9288
9529
 
9289
- if (!m) return Qfalse;
9530
+ if (!m) return FALSE;
9290
9531
  switch (*m) {
9291
9532
  case '\0':
9292
- return Qfalse;
9533
+ return FALSE;
9293
9534
 
9294
9535
  case '$':
9295
- if (is_special_global_name(++m, e, enc)) return Qtrue;
9536
+ if (is_special_global_name(++m, e, enc)) return TRUE;
9296
9537
  goto id;
9297
9538
 
9298
9539
  case '@':
@@ -9317,7 +9558,7 @@ rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
9317
9558
  switch (*++m) {
9318
9559
  case '~': ++m; break;
9319
9560
  case '=': if (*++m == '=') ++m; break;
9320
- default: return Qfalse;
9561
+ default: return FALSE;
9321
9562
  }
9322
9563
  break;
9323
9564
 
@@ -9334,15 +9575,15 @@ rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
9334
9575
  break;
9335
9576
 
9336
9577
  case '[':
9337
- if (*++m != ']') return Qfalse;
9578
+ if (*++m != ']') return FALSE;
9338
9579
  if (*++m == '=') ++m;
9339
9580
  break;
9340
9581
 
9341
9582
  case '!':
9342
9583
  switch (*++m) {
9343
- case '\0': return Qtrue;
9584
+ case '\0': return TRUE;
9344
9585
  case '=': case '~': ++m; break;
9345
- default: return Qfalse;
9586
+ default: return FALSE;
9346
9587
  }
9347
9588
  break;
9348
9589
 
@@ -9350,7 +9591,7 @@ rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
9350
9591
  localid = !rb_enc_isupper(*m, enc);
9351
9592
  id:
9352
9593
  if (m >= e || (*m != '_' && !rb_enc_isalpha(*m, enc) && ISASCII(*m)))
9353
- return Qfalse;
9594
+ return FALSE;
9354
9595
  while (m < e && is_identchar(m, e, enc)) m += rb_enc_mbclen(m, e, enc);
9355
9596
  if (localid) {
9356
9597
  switch (*m) {
@@ -9359,7 +9600,7 @@ rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
9359
9600
  }
9360
9601
  break;
9361
9602
  }
9362
- return *m ? Qfalse : Qtrue;
9603
+ return m == e;
9363
9604
  }
9364
9605
 
9365
9606
  static ID
@@ -9380,8 +9621,9 @@ rb_intern3(const char *name, long len, rb_encoding *enc)
9380
9621
  unsigned char c;
9381
9622
  VALUE str;
9382
9623
  ID id;
9383
- int last;
9624
+ long last;
9384
9625
  int mb;
9626
+ st_data_t data;
9385
9627
  struct RString fake_str;
9386
9628
  fake_str.basic.flags = T_STRING|RSTRING_NOEMBED|FL_FREEZE;
9387
9629
  fake_str.basic.klass = rb_cString;
@@ -9391,8 +9633,12 @@ rb_intern3(const char *name, long len, rb_encoding *enc)
9391
9633
  str = (VALUE)&fake_str;
9392
9634
  rb_enc_associate(str, enc);
9393
9635
 
9394
- if (st_lookup(global_symbols.sym_id, str, (st_data_t *)&id))
9395
- return id;
9636
+ if (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN) {
9637
+ rb_raise(rb_eEncodingError, "invalid encoding symbol");
9638
+ }
9639
+
9640
+ if (st_lookup(global_symbols.sym_id, str, &data))
9641
+ return (ID)data;
9396
9642
 
9397
9643
  if (rb_cString && !rb_enc_asciicompat(enc)) {
9398
9644
  id = ID_JUNK;
@@ -9482,6 +9728,16 @@ rb_intern3(const char *name, long len, rb_encoding *enc)
9482
9728
  mbstr:;
9483
9729
  }
9484
9730
  new_id:
9731
+ if (global_symbols.last_id >= ~(ID)0 >> (ID_SCOPE_SHIFT+RUBY_SPECIAL_SHIFT)) {
9732
+ if (len > 20) {
9733
+ rb_raise(rb_eRuntimeError, "symbol table overflow (symbol %.20s...)",
9734
+ name);
9735
+ }
9736
+ else {
9737
+ rb_raise(rb_eRuntimeError, "symbol table overflow (symbol %.*s)",
9738
+ (int)len, name);
9739
+ }
9740
+ }
9485
9741
  id |= ++global_symbols.last_id << ID_SCOPE_SHIFT;
9486
9742
  id_register:
9487
9743
  return register_symid(id, name, len, enc);
@@ -9525,7 +9781,7 @@ rb_id2str(ID id)
9525
9781
  if (id < tLAST_TOKEN) {
9526
9782
  int i = 0;
9527
9783
 
9528
- if (rb_ispunct(id)) {
9784
+ if (id < INT_MAX && rb_ispunct((int)id)) {
9529
9785
  VALUE str = global_symbols.op_sym[i = (int)id];
9530
9786
  if (!str) {
9531
9787
  char name[2];
@@ -9622,36 +9878,31 @@ rb_sym_all_symbols(void)
9622
9878
  int
9623
9879
  rb_is_const_id(ID id)
9624
9880
  {
9625
- if (is_const_id(id)) return Qtrue;
9626
- return Qfalse;
9881
+ return is_const_id(id);
9627
9882
  }
9628
9883
 
9629
9884
  int
9630
9885
  rb_is_class_id(ID id)
9631
9886
  {
9632
- if (is_class_id(id)) return Qtrue;
9633
- return Qfalse;
9887
+ return is_class_id(id);
9634
9888
  }
9635
9889
 
9636
9890
  int
9637
9891
  rb_is_instance_id(ID id)
9638
9892
  {
9639
- if (is_instance_id(id)) return Qtrue;
9640
- return Qfalse;
9893
+ return is_instance_id(id);
9641
9894
  }
9642
9895
 
9643
9896
  int
9644
9897
  rb_is_local_id(ID id)
9645
9898
  {
9646
- if (is_local_id(id)) return Qtrue;
9647
- return Qfalse;
9899
+ return is_local_id(id);
9648
9900
  }
9649
9901
 
9650
9902
  int
9651
9903
  rb_is_junk_id(ID id)
9652
9904
  {
9653
- if (is_junk_id(id)) return Qtrue;
9654
- return Qfalse;
9905
+ return is_junk_id(id);
9655
9906
  }
9656
9907
 
9657
9908
  #endif /* !RIPPER */
@@ -9676,7 +9927,7 @@ parser_initialize(struct parser_params *parser)
9676
9927
  parser->parser_tokidx = 0;
9677
9928
  parser->parser_toksiz = 0;
9678
9929
  parser->parser_heredoc_end = 0;
9679
- parser->parser_command_start = Qtrue;
9930
+ parser->parser_command_start = TRUE;
9680
9931
  parser->parser_deferred_nodes = 0;
9681
9932
  parser->parser_lex_pbeg = 0;
9682
9933
  parser->parser_lex_p = 0;
@@ -9695,7 +9946,7 @@ parser_initialize(struct parser_params *parser)
9695
9946
 
9696
9947
  parser->result = Qnil;
9697
9948
  parser->parsing_thread = Qnil;
9698
- parser->toplevel_p = Qtrue;
9949
+ parser->toplevel_p = TRUE;
9699
9950
  #endif
9700
9951
  #ifdef YYMALLOC
9701
9952
  parser->heap = NULL;
@@ -9754,10 +10005,46 @@ parser_free(void *ptr)
9754
10005
  xfree(p);
9755
10006
  }
9756
10007
 
10008
+ static size_t
10009
+ parser_memsize(const void *ptr)
10010
+ {
10011
+ struct parser_params *p = (struct parser_params*)ptr;
10012
+ struct local_vars *local;
10013
+ size_t size = sizeof(*p);
10014
+
10015
+ if (!ptr) return 0;
10016
+ size += p->parser_toksiz;
10017
+ for (local = p->parser_lvtbl; local; local = local->prev) {
10018
+ size += sizeof(*local);
10019
+ if (local->vars) size += local->vars->capa * sizeof(ID);
10020
+ }
10021
+ #ifndef RIPPER
10022
+ if (p->parser_ruby_sourcefile) {
10023
+ size += strlen(p->parser_ruby_sourcefile) + 1;
10024
+ }
10025
+ #endif
10026
+ return size;
10027
+ }
10028
+
10029
+ static const rb_data_type_t parser_data_type = {
10030
+ "parser",
10031
+ parser_mark,
10032
+ parser_free,
10033
+ parser_memsize,
10034
+ };
10035
+
9757
10036
  VALUE rb_parser_get_yydebug(VALUE);
9758
10037
  VALUE rb_parser_set_yydebug(VALUE, VALUE);
9759
10038
 
9760
10039
  #ifndef RIPPER
10040
+ #undef rb_reserved_word
10041
+
10042
+ const struct kwtable *
10043
+ rb_reserved_word(const char *str, unsigned int len)
10044
+ {
10045
+ return reserved_word(str, len);
10046
+ }
10047
+
9761
10048
  static struct parser_params *
9762
10049
  parser_new(void)
9763
10050
  {
@@ -9774,7 +10061,7 @@ rb_parser_new(void)
9774
10061
  {
9775
10062
  struct parser_params *p = parser_new();
9776
10063
 
9777
- return Data_Wrap_Struct(0, parser_mark, parser_free, p);
10064
+ return TypedData_Wrap_Struct(0, &parser_data_type, p);
9778
10065
  }
9779
10066
 
9780
10067
  /*
@@ -9789,7 +10076,7 @@ rb_parser_end_seen_p(VALUE vparser)
9789
10076
  {
9790
10077
  struct parser_params *parser;
9791
10078
 
9792
- Data_Get_Struct(vparser, struct parser_params, parser);
10079
+ TypedData_Get_Struct(vparser, struct parser_params, &parser_data_type, parser);
9793
10080
  return ruby__end__seen ? Qtrue : Qfalse;
9794
10081
  }
9795
10082
 
@@ -9804,7 +10091,7 @@ rb_parser_encoding(VALUE vparser)
9804
10091
  {
9805
10092
  struct parser_params *parser;
9806
10093
 
9807
- Data_Get_Struct(vparser, struct parser_params, parser);
10094
+ TypedData_Get_Struct(vparser, struct parser_params, &parser_data_type, parser);
9808
10095
  return rb_enc_from_encoding(parser->enc);
9809
10096
  }
9810
10097
 
@@ -9819,7 +10106,7 @@ rb_parser_get_yydebug(VALUE self)
9819
10106
  {
9820
10107
  struct parser_params *parser;
9821
10108
 
9822
- Data_Get_Struct(self, struct parser_params, parser);
10109
+ TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
9823
10110
  return yydebug ? Qtrue : Qfalse;
9824
10111
  }
9825
10112
 
@@ -9834,7 +10121,7 @@ rb_parser_set_yydebug(VALUE self, VALUE flag)
9834
10121
  {
9835
10122
  struct parser_params *parser;
9836
10123
 
9837
- Data_Get_Struct(self, struct parser_params, parser);
10124
+ TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
9838
10125
  yydebug = RTEST(flag);
9839
10126
  return flag;
9840
10127
  }
@@ -9928,7 +10215,10 @@ ripper_validate_object(VALUE self, VALUE x)
9928
10215
  case T_FLOAT:
9929
10216
  return x;
9930
10217
  case T_NODE:
9931
- rb_raise(rb_eArgError, "NODE given: %p", x);
10218
+ if (nd_type(x) != NODE_LASGN) {
10219
+ rb_raise(rb_eArgError, "NODE given: %p", x);
10220
+ }
10221
+ return ((NODE *)x)->nd_rval;
9932
10222
  default:
9933
10223
  rb_raise(rb_eArgError, "wrong type of ruby object: %p (%s)",
9934
10224
  x, rb_obj_classname(x));
@@ -9937,7 +10227,7 @@ ripper_validate_object(VALUE self, VALUE x)
9937
10227
  }
9938
10228
  #endif
9939
10229
 
9940
- #define validate(x)
10230
+ #define validate(x) (x = get_value(x))
9941
10231
 
9942
10232
  static VALUE
9943
10233
  ripper_dispatch0(struct parser_params *parser, ID mid)
@@ -10065,9 +10355,9 @@ ripper_id2sym(ID id)
10065
10355
  char buf[8];
10066
10356
 
10067
10357
  if (id <= 256) {
10068
- buf[0] = id;
10358
+ buf[0] = (char)id;
10069
10359
  buf[1] = '\0';
10070
- return ID2SYM(rb_intern(buf));
10360
+ return ID2SYM(rb_intern2(buf, 1));
10071
10361
  }
10072
10362
  if ((name = keyword_id_to_str(id))) {
10073
10363
  return ID2SYM(rb_intern(name));
@@ -10084,15 +10374,30 @@ ripper_id2sym(ID id)
10084
10374
  if (!name) {
10085
10375
  rb_bug("cannot convert ID to string: %ld", (unsigned long)id);
10086
10376
  }
10087
- break;
10377
+ return ID2SYM(id);
10088
10378
  }
10089
10379
  return ID2SYM(rb_intern(name));
10090
10380
  }
10091
10381
 
10382
+ static ID
10383
+ ripper_get_id(VALUE v)
10384
+ {
10385
+ NODE *nd;
10386
+ if (!RB_TYPE_P(v, T_NODE)) return 0;
10387
+ nd = (NODE *)v;
10388
+ if (nd_type(nd) != NODE_LASGN) return 0;
10389
+ return nd->nd_vid;
10390
+ }
10391
+
10092
10392
  static VALUE
10093
- ripper_intern(const char *s)
10393
+ ripper_get_value(VALUE v)
10094
10394
  {
10095
- return ID2SYM(rb_intern(s));
10395
+ NODE *nd;
10396
+ if (v == Qundef) return Qnil;
10397
+ if (!RB_TYPE_P(v, T_NODE)) return v;
10398
+ nd = (NODE *)v;
10399
+ if (nd_type(nd) != NODE_LASGN) return Qnil;
10400
+ return nd->nd_rval;
10096
10401
  }
10097
10402
 
10098
10403
  static void
@@ -10156,7 +10461,7 @@ ripper_s_allocate(VALUE klass)
10156
10461
 
10157
10462
  p = ALLOC_N(struct parser_params, 1);
10158
10463
  MEMZERO(p, struct parser_params, 1);
10159
- self = Data_Wrap_Struct(klass, parser_mark, parser_free, p);
10464
+ self = TypedData_Wrap_Struct(klass, &parser_data_type, p);
10160
10465
  p->value = self;
10161
10466
  return self;
10162
10467
  }
@@ -10179,7 +10484,7 @@ ripper_initialize(int argc, VALUE *argv, VALUE self)
10179
10484
  struct parser_params *parser;
10180
10485
  VALUE src, fname, lineno;
10181
10486
 
10182
- Data_Get_Struct(self, struct parser_params, parser);
10487
+ TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
10183
10488
  rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
10184
10489
  if (rb_obj_respond_to(src, ripper_id_gets, 0)) {
10185
10490
  parser->parser_lex_gets = ripper_lex_get_generic;
@@ -10218,7 +10523,7 @@ ripper_parse0(VALUE parser_v)
10218
10523
  {
10219
10524
  struct parser_params *parser;
10220
10525
 
10221
- Data_Get_Struct(parser_v, struct parser_params, parser);
10526
+ TypedData_Get_Struct(parser_v, struct parser_params, &parser_data_type, parser);
10222
10527
  parser_prepare(parser);
10223
10528
  ripper_yyparse((void*)parser);
10224
10529
  return parser->result;
@@ -10229,7 +10534,7 @@ ripper_ensure(VALUE parser_v)
10229
10534
  {
10230
10535
  struct parser_params *parser;
10231
10536
 
10232
- Data_Get_Struct(parser_v, struct parser_params, parser);
10537
+ TypedData_Get_Struct(parser_v, struct parser_params, &parser_data_type, parser);
10233
10538
  parser->parsing_thread = Qnil;
10234
10539
  return Qnil;
10235
10540
  }
@@ -10245,7 +10550,7 @@ ripper_parse(VALUE self)
10245
10550
  {
10246
10551
  struct parser_params *parser;
10247
10552
 
10248
- Data_Get_Struct(self, struct parser_params, parser);
10553
+ TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
10249
10554
  if (!ripper_initialized_p(parser)) {
10250
10555
  rb_raise(rb_eArgError, "method called for uninitialized object");
10251
10556
  }
@@ -10274,7 +10579,7 @@ ripper_column(VALUE self)
10274
10579
  struct parser_params *parser;
10275
10580
  long col;
10276
10581
 
10277
- Data_Get_Struct(self, struct parser_params, parser);
10582
+ TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
10278
10583
  if (!ripper_initialized_p(parser)) {
10279
10584
  rb_raise(rb_eArgError, "method called for uninitialized object");
10280
10585
  }
@@ -10283,6 +10588,24 @@ ripper_column(VALUE self)
10283
10588
  return LONG2NUM(col);
10284
10589
  }
10285
10590
 
10591
+ /*
10592
+ * call-seq:
10593
+ * ripper#filename -> String
10594
+ *
10595
+ * Return current parsing filename.
10596
+ */
10597
+ static VALUE
10598
+ ripper_filename(VALUE self)
10599
+ {
10600
+ struct parser_params *parser;
10601
+
10602
+ TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
10603
+ if (!ripper_initialized_p(parser)) {
10604
+ rb_raise(rb_eArgError, "method called for uninitialized object");
10605
+ }
10606
+ return parser->parser_ruby_sourcefile_string;
10607
+ }
10608
+
10286
10609
  /*
10287
10610
  * call-seq:
10288
10611
  * ripper#lineno -> Integer
@@ -10295,7 +10618,7 @@ ripper_lineno(VALUE self)
10295
10618
  {
10296
10619
  struct parser_params *parser;
10297
10620
 
10298
- Data_Get_Struct(self, struct parser_params, parser);
10621
+ TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
10299
10622
  if (!ripper_initialized_p(parser)) {
10300
10623
  rb_raise(rb_eArgError, "method called for uninitialized object");
10301
10624
  }
@@ -10334,6 +10657,7 @@ Init_ripper(void)
10334
10657
  rb_define_method(Ripper, "initialize", ripper_initialize, -1);
10335
10658
  rb_define_method(Ripper, "parse", ripper_parse, 0);
10336
10659
  rb_define_method(Ripper, "column", ripper_column, 0);
10660
+ rb_define_method(Ripper, "filename", ripper_filename, 0);
10337
10661
  rb_define_method(Ripper, "lineno", ripper_lineno, 0);
10338
10662
  rb_define_method(Ripper, "end_seen?", rb_parser_end_seen_p, 0);
10339
10663
  rb_define_method(Ripper, "encoding", rb_parser_encoding, 0);