Commit fd3af6ae authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

introduce toplevel object main; close #327

parent 9c12b47d
...@@ -39,6 +39,8 @@ mrb_class(mrb_state *mrb, mrb_value v) ...@@ -39,6 +39,8 @@ mrb_class(mrb_state *mrb, mrb_value v)
return mrb->fixnum_class; return mrb->fixnum_class;
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
return mrb->float_class; return mrb->float_class;
case MRB_TT_MAIN:
return mrb->object_class;
#ifdef ENABLE_REGEXP #ifdef ENABLE_REGEXP
case MRB_TT_REGEX: case MRB_TT_REGEX:
......
...@@ -34,7 +34,8 @@ enum mrb_vtype { ...@@ -34,7 +34,8 @@ enum mrb_vtype {
MRB_TT_FILE, /* 21 */ MRB_TT_FILE, /* 21 */
MRB_TT_ENV, /* 22 */ MRB_TT_ENV, /* 22 */
MRB_TT_DATA, /* 23 */ MRB_TT_DATA, /* 23 */
MRB_TT_MAXDEFINE /* 24 */ MRB_TT_MAIN, /* 24 */
MRB_TT_MAXDEFINE /* 25 */
}; };
typedef struct mrb_value { typedef struct mrb_value {
...@@ -94,7 +95,8 @@ enum mrb_vtype { ...@@ -94,7 +95,8 @@ enum mrb_vtype {
MRB_TT_FILE, /* 22 */ MRB_TT_FILE, /* 22 */
MRB_TT_ENV, /* 23 */ MRB_TT_ENV, /* 23 */
MRB_TT_DATA, /* 24 */ MRB_TT_DATA, /* 24 */
MRB_TT_MAXDEFINE /* 25 */ MRB_TT_MAIN, /* 25 */
MRB_TT_MAXDEFINE /* 26 */
}; };
#ifdef MRB_ENDIAN_BIG #ifdef MRB_ENDIAN_BIG
......
...@@ -64,6 +64,9 @@ mrb_obj_inspect(mrb_state *mrb, mrb_value obj) ...@@ -64,6 +64,9 @@ mrb_obj_inspect(mrb_state *mrb, mrb_value obj)
else if (mrb_nil_p(obj)) { else if (mrb_nil_p(obj)) {
return mrb_str_new(mrb, "nil", 3); return mrb_str_new(mrb, "nil", 3);
} }
else if (mrb_type(obj) == MRB_TT_MAIN) {
return mrb_str_new(mrb, "main", 4);
}
return mrb_funcall(mrb, obj, "to_s", 0, 0); return mrb_funcall(mrb, obj, "to_s", 0, 0);
} }
......
...@@ -97,6 +97,8 @@ mrb_add_irep(mrb_state *mrb, int idx) ...@@ -97,6 +97,8 @@ mrb_add_irep(mrb_state *mrb, int idx)
mrb_value mrb_value
mrb_top_self(mrb_state *mrb) mrb_top_self(mrb_state *mrb)
{ {
// for now mrb_value v;
return mrb_nil_value();
MRB_SET_VALUE(v, MRB_TT_MAIN, value.i, 0);
return v;
} }
...@@ -338,5 +338,5 @@ end ...@@ -338,5 +338,5 @@ end
assert('Kernel#to_s', '15.3.1.3.46') do assert('Kernel#to_s', '15.3.1.3.46') do
# TODO looks strange.. # TODO looks strange..
to_s == '' nil.to_s == ''
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment