diff options
author | murphy <murphy@rubychan.de> | 2010-04-14 23:59:03 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2010-04-14 23:59:03 +0000 |
commit | 200144dd009d33ff8334be24d0fb2cc91b3a87ab (patch) | |
tree | f46c939cd01b8d4165b5d9f3444c20e072b51408 /test/scanners/diff/const_missing.in.diff | |
parent | 612a14e17bdae5dbb5b13cdceec797523725cbbe (diff) | |
download | coderay-200144dd009d33ff8334be24d0fb2cc91b3a87ab.tar.gz |
Moving scanner tests into separate repository. The repository can be reached at http://svn.rubychan.de/coderay-scanner-tests/trunk.
Diffstat (limited to 'test/scanners/diff/const_missing.in.diff')
-rw-r--r-- | test/scanners/diff/const_missing.in.diff | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/test/scanners/diff/const_missing.in.diff b/test/scanners/diff/const_missing.in.diff deleted file mode 100644 index 5549794..0000000 --- a/test/scanners/diff/const_missing.in.diff +++ /dev/null @@ -1,75 +0,0 @@ -Index: error.c -=================================================================== ---- error.c (revision 26674) -+++ error.c (working copy) -@@ -402,4 +402,6 @@ VALUE rb_eSyntaxError; - VALUE rb_eLoadError; - -+VALUE rb_eNoConstantError; -+ - VALUE rb_eSystemCallError; - VALUE rb_mErrno; -@@ -1143,4 +1145,5 @@ Init_Exception(void) - rb_define_method(rb_eNoMethodError, "initialize", nometh_err_initialize, -1); - rb_define_method(rb_eNoMethodError, "args", nometh_err_args, 0); -+ rb_eNoConstantError = rb_define_class("NoConstantError", rb_eNameError); - - rb_eRuntimeError = rb_define_class("RuntimeError", rb_eStandardError); -Index: variable.c -=================================================================== ---- variable.c (revision 26674) -+++ variable.c (working copy) -@@ -1356,7 +1356,29 @@ uninitialized_constant(VALUE klass, ID i - - static VALUE -+const_missing_call(VALUE arg) -+{ -+ VALUE *args = (VALUE *)arg; -+ ID const_missing_id; -+ CONST_ID(const_missing_id, "const_missing"); -+ return rb_check_funcall(args[0], const_missing_id, 1, &args[1]); -+} -+ -+static VALUE -+const_missing_rescue(VALUE arg, VALUE errinfo) -+{ -+ return arg; -+} -+ -+extern VALUE rb_eNoConstantError; -+ -+static VALUE - const_missing(VALUE klass, ID id) - { -- return rb_funcall(klass, rb_intern("const_missing"), 1, ID2SYM(id)); -+ VALUE args[2]; -+ args[0] = klass; -+ args[1] = ID2SYM(id); -+ return rb_rescue2(const_missing_call, (VALUE)args, -+ const_missing_rescue, (VALUE)Qundef, -+ rb_eNoConstantError, (VALUE)0); - } - -@@ -1598,5 +1620,21 @@ rb_const_get_0(VALUE klass, ID id, int e - } - -- value = const_missing(klass, id); -+ if ((value = const_missing(tmp, id)) == Qundef) { -+ NODE *rb_vm_cref(void); -+ NODE *cref = rb_vm_cref(); -+ while (cref && cref->nd_next && -+ ((cref->flags & NODE_FL_CREF_PUSHED_BY_EVAL) || -+ NIL_P(tmp = cref->nd_clss) || -+ (value = const_missing(tmp, id)) == Qundef)) { -+ cref = cref->nd_next; -+ } -+ if (value == Qundef) { -+ if (!exclude && BUILTIN_TYPE(klass) == T_MODULE && -+ (value = const_missing(rb_cObject, id)) == Qundef) { -+ uninitialized_constant(klass, id); -+ } -+ } -+ } -+ - rb_vm_inc_const_missing_count(); - return value; |