From b60a365763c4abce061a49c2e68b1105f81fe598 Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 27 Mar 2001 07:10:58 +0000 Subject: * eval.c (rb_mod_define_method): should have clear method cache. * eval.c (rb_mod_define_method): should have raised exception for type error. * ruby.h: changed "extern INLINE" to "static inline". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 11 ++++++ configure.in | 3 -- eval.c | 3 ++ ext/tk/lib/tk.rb | 104 +++++++++++++++++++++++++++++++++++++++++++------ ext/tk/lib/tkcanvas.rb | 8 ++-- ext/tk/lib/tkentry.rb | 2 +- ext/tk/lib/tktext.rb | 8 ++++ ruby.h | 20 ++-------- util.c | 1 - version.h | 4 +- 10 files changed, 124 insertions(+), 40 deletions(-) diff --git a/ChangeLog b/ChangeLog index 63a7e346d5..4da62af8f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Tue Mar 27 15:00:54 2001 K.Kosako + + * eval.c (rb_mod_define_method): should have clear method cache. + + * eval.c (rb_mod_define_method): should have raised exception for + type error. + +Tue Mar 27 14:48:17 2001 Yukihiro Matsumoto + + * ruby.h: changed "extern INLINE" to "static inline". + Mon Mar 26 23:19:33 2001 WATANABE Hirofumi * time.c (rb_strftime): check whether strftime returns empty string. diff --git a/configure.in b/configure.in index 5d299d88f6..fc46d4e975 100644 --- a/configure.in +++ b/configure.in @@ -378,9 +378,6 @@ AC_C_BIGENDIAN AC_C_CONST AC_C_CHAR_UNSIGNED AC_C_INLINE -if test "$ac_cv_c_inline" = no; then - AC_DEFINE(NO_C_INLINE) -fi AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign, [AC_TRY_RUN([ diff --git a/eval.c b/eval.c index 50c99aabb8..ffa465a6b1 100644 --- a/eval.c +++ b/eval.c @@ -6730,6 +6730,7 @@ rb_mod_define_method(argc, argv, mod) } if (TYPE(body) != T_DATA) { /* type error */ + rb_raise(rb_eTypeError, "wrong argument type (expected Proc)"); } if (RDATA(body)->dmark == (RUBY_DATA_FUNC)bm_mark) { rb_add_method(mod, id, NEW_DMETHOD(method_unbind(body)), NOEX_PUBLIC); @@ -6739,8 +6740,10 @@ rb_mod_define_method(argc, argv, mod) } else { /* type error */ + rb_raise(rb_eTypeError, "wrong argument type (expected Proc)"); } + rb_clear_cache_by_id(id); return body; } diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index a088d5c493..873c823910 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -651,12 +651,76 @@ module TkCore end end +module TkPackage + include TkCore + extend TkPackage + + def forget(package) + tk_call('package', 'forget', package) + nil + end + + def names + tk_split_simplelist(tk_call('package', 'names')) + end + + def provide(package, version=nil) + if version + tk_call('package', 'provide', package, version) + nil + else + tk_call('package', 'provide', package) + end + end + + def present(package, version=None) + tk_call('package', 'present', package, version) + end + + def present_exact(package, version) + tk_call('package', 'present', '-exact', package, version) + end + + def require(package, version=None) + tk_call('package', 'require', package, version) + end + + def require_exact(package, version) + tk_call('package', 'require', '-exact', package, version) + end + + def versions(package) + tk_split_simplelist(tk_call('package', 'versions', package)) + end + + def vcompare(version1, version2) + Integer(tk_call('package', 'vcompare', version1, version2)) + end + + def vsatisfies(version1, version2) + bool(tk_call('package', 'vsatisfies', version1, version2)) + end +end + module Tk include TkCore extend Tk TCL_VERSION = INTERP._invoke("info", "tclversion") TK_VERSION = INTERP._invoke("set", "tk_version") + + TCL_PATCHLEVEL = INTERP._invoke("info", "patchlevel") + TK_PATCHLEVEL = INTERP._invoke("set", "tk_patchLevel") + + TCL_LIBRARY = INTERP._invoke("set", "tcl_library") + TK_LIBRARY = INTERP._invoke("set", "tk_library") + LIBRARY = INTERP._invoke("info", "library") + + TCL_PACKAGE_PATH = INTERP._invoke("set", "tcl_pkgPath") + AUTO_PATH = tk_split_simplelist(INTERP._invoke("set", "auto_path")) + + PLATFORM = Hash[*tk_split_simplelist(INTERP._eval('array get tcl_platform'))] + JAPANIZED_TK = (INTERP._invoke("info", "commands", "kanji") != "") def root @@ -680,6 +744,10 @@ module Tk tk_tcl2ruby(tk_call('focus', '-lastfor', win)) end + def Tk.strictMotif(bool=None) + bool(tk_call('set', 'tk_strictMotif', bool)) + end + def Tk.show_kinsoku(mode='both') begin if /^8\.*/ === TK_VERSION && JAPANIZED_TK @@ -710,11 +778,11 @@ module Tk end end - def toUTF8(str,encoding) + def Tk.toUTF8(str,encoding) INTERP._toUTF8(str,encoding) end - def fromUTF8(str,encoding) + def Tk.fromUTF8(str,encoding) INTERP._fromUTF8(str,encoding) end @@ -1446,7 +1514,7 @@ module TkXIM end def useinputmethods(value=nil) - TkXIM.useinputmethods(self, value=nil) + TkXIM.useinputmethods(self, value) end def imconfigure(window, slot, value=None) @@ -2370,7 +2438,7 @@ class TkWindowklass; } -extern INLINE int +static inline int #if defined(__cplusplus) rb_type(VALUE obj) #else @@ -586,7 +575,7 @@ rb_type(obj) return BUILTIN_TYPE(obj); } -extern INLINE int +static inline int #if defined(__cplusplus) rb_special_const_p(VALUE obj) #else @@ -597,9 +586,6 @@ rb_special_const_p(obj) if (SPECIAL_CONST_P(obj)) return Qtrue; return Qfalse; } -#endif - -#undef INLINE #include "intern.h" diff --git a/util.c b/util.c index 56059d4dc6..5bb9c87f13 100644 --- a/util.c +++ b/util.c @@ -16,7 +16,6 @@ #include "missing/file.h" #endif -#define INLINE_DEFINE #include "ruby.h" #include "util.h" diff --git a/version.h b/version.h index a63876f4b7..1ba0f06af8 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ #define RUBY_VERSION "1.7.0" -#define RUBY_RELEASE_DATE "2001-03-26" +#define RUBY_RELEASE_DATE "2001-03-27" #define RUBY_VERSION_CODE 170 -#define RUBY_RELEASE_CODE 20010326 +#define RUBY_RELEASE_CODE 20010327 -- cgit v1.2.1