Skip to content

Commit

Permalink
* eval.c (rb_mod_define_method): should have clear method cache.
Browse files Browse the repository at this point in the history
* eval.c (rb_mod_define_method): should have raised exception for
  type error.

* ruby.h: changed "extern INLINE" to "static inline".


git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
matz committed Mar 27, 2001
1 parent 7c5000b commit 6731d42
Show file tree
Hide file tree
Showing 10 changed files with 124 additions and 40 deletions.
11 changes: 11 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
Tue Mar 27 15:00:54 2001 K.Kosako <kosako@sofnec.co.jp>

* 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 <matz@ruby-lang.org>

* ruby.h: changed "extern INLINE" to "static inline".

Mon Mar 26 23:19:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>

* time.c (rb_strftime): check whether strftime returns empty string.
Expand Down
3 changes: 0 additions & 3 deletions configure.in
Original file line number Diff line number Diff line change
Expand Up @@ -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([
Expand Down
3 changes: 3 additions & 0 deletions eval.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
}

Expand Down
104 changes: 92 additions & 12 deletions ext/tk/lib/tk.rb
Original file line number Diff line number Diff line change
Expand Up @@ -651,12 +651,76 @@ def tk_call(*args)
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
Expand All @@ -680,6 +744,10 @@ def Tk.focus_lastfor(win)
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
Expand Down Expand Up @@ -710,11 +778,11 @@ def Tk.delete_kinsoku(chars, mode='both')
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

Expand Down Expand Up @@ -1446,7 +1514,7 @@ def TkXIM.configinfo(window, slot=nil)
end

def useinputmethods(value=nil)
TkXIM.useinputmethods(self, value=nil)
TkXIM.useinputmethods(self, value)
end

def imconfigure(window, slot, value=None)
Expand Down Expand Up @@ -2370,7 +2438,7 @@ def grid_location(x, y)

def grid_propagate(mode=nil)
if mode
tk_call('grid', 'propagate', epath, bool)
tk_call('grid', 'propagate', epath, mode)
else
bool(tk_call('grid', 'propagate', epath))
end
Expand Down Expand Up @@ -2708,8 +2776,16 @@ def create_self
tk_call 'scale', path
end

def get
number(tk_send('get'))
def get(x=None, y=None)
number(tk_send('get', x, y))
end

def coords(val=None)
tk_split_list(tk_send('coords', val))
end

def identify(x, y)
tk_send('identify', x, y)
end

def set(val)
Expand Down Expand Up @@ -2744,8 +2820,8 @@ def fraction(x=None, y=None)
number(tk_send('fraction', x, y))
end

def identify(x=None, y=None)
tk_send('fraction', x, y)
def identify(x, y)
tk_send('identify', x, y)
end

def get
Expand All @@ -2760,6 +2836,10 @@ def get
def set(first, last)
tk_send "set", first, last
end

def activate(element=None)
tk_send('activate', element)
end
end

class TkTextWin<TkWindow
Expand Down Expand Up @@ -3033,12 +3113,12 @@ def invoke(index)
tk_send 'invoke', index
end
def insert(index, type, keys=nil)
tk_send 'add', index, type, *hash_kv(keys)
tk_send 'insert', index, type, *hash_kv(keys)
end
def delete(index, last=None)
tk_send 'delete', index, last
end
def popup(x, y, index=nil)
def popup(x, y, index=None)
tk_call 'tk_popup', path, x, y, index
end
def post(x, y)
Expand Down Expand Up @@ -3128,12 +3208,12 @@ def entryconfiginfo(index, key=nil)
end

class TkMenuClone<TkMenu
def initialize(parent, type=nil)
def initialize(parent, type=None)
unless parent.kind_of?(TkMenu)
fail ArgumentError, "parent must be TkMenu"
end
@parent = parent
install_win(@parent)
install_win(@parent.path)
tk_call @parent.path, 'clone', @path, type
end
end
Expand Down
8 changes: 4 additions & 4 deletions ext/tk/lib/tkcanvas.rb
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ def addtag_withtag(tagOrId, tag)
end

def bbox(tagOrId, *tags)
list(tk_send('bbox', tagid(tagOrId), *tags))
list(tk_send('bbox', tagid(tagOrId), *tags.collect{|t| tagid(t)}))
end

def itembind(tag, context, cmd=Proc.new, args=nil)
Expand Down Expand Up @@ -207,7 +207,7 @@ def dchars(tag, first, last=None)
end

def delete(*args)
tk_send 'delete', *args
tk_send 'delete', *args.collect{|t| tagid(t)}
end
alias remove delete

Expand Down Expand Up @@ -375,7 +375,7 @@ def itemconfiginfo(tagOrId, key=nil)
end

def lower(tag, below=None)
tk_send 'lower', tagid(tag), below
tk_send 'lower', tagid(tag), tagid(below)
end

def move(tag, x, y)
Expand All @@ -387,7 +387,7 @@ def postscript(keys)
end

def raise(tag, above=None)
tk_send 'raise', tagid(tag), above
tk_send 'raise', tagid(tag), tagid(above)
end

def scale(tag, x, y, xs, ys)
Expand Down
2 changes: 1 addition & 1 deletion ext/tk/lib/tkentry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def selection_from(index)
tk_send 'selection', 'from', index
end
def selection_present()
tk_send('selection', 'present') == 1
bool(tk_send('selection', 'present'))
end
def selection_range(s, e)
tk_send 'selection', 'range', s, e
Expand Down
8 changes: 8 additions & 0 deletions ext/tk/lib/tktext.rb
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,14 @@ def mark_names
}
end

def mark_next(index)
tagid2obj(tk_send('mark', 'next', index))
end

def mark_previous(index)
tagid2obj(tk_send('mark', 'previous', index))
end

def window_names
tk_send('window', 'names').collect{|elt|
tagid2obj(elt)
Expand Down
20 changes: 3 additions & 17 deletions ruby.h
Original file line number Diff line number Diff line change
Expand Up @@ -541,18 +541,7 @@ EXTERN VALUE rb_eNameError;
EXTERN VALUE rb_eSyntaxError;
EXTERN VALUE rb_eLoadError;

#ifdef INLINE_DEFINE
#define INLINE
#else
#define INLINE inline
#endif

extern INLINE VALUE rb_class_of _((VALUE));
extern INLINE int rb_type _((VALUE));
extern INLINE int rb_special_const_p _((VALUE));

#if !defined(NO_C_INLINE) || defined(INLINE_DEFINE)
extern INLINE VALUE
static inline VALUE
#if defined(__cplusplus)
rb_class_of(VALUE obj)
#else
Expand All @@ -569,7 +558,7 @@ rb_class_of(obj)
return RBASIC(obj)->klass;
}

extern INLINE int
static inline int
#if defined(__cplusplus)
rb_type(VALUE obj)
#else
Expand All @@ -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
Expand All @@ -597,9 +586,6 @@ rb_special_const_p(obj)
if (SPECIAL_CONST_P(obj)) return Qtrue;
return Qfalse;
}
#endif

#undef INLINE

#include "intern.h"

Expand Down
1 change: 0 additions & 1 deletion util.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
#include "missing/file.h"
#endif

#define INLINE_DEFINE
#include "ruby.h"

#include "util.h"
Expand Down
4 changes: 2 additions & 2 deletions version.h
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 6731d42

Please sign in to comment.