ささだです。 Range リテラル (x..y) の評価順序が C の処理系によっては y, x になる場 合があるようなので、 eval.c の rb_eval の NODE_DOT[23] の、 result = rb_range_new(rb_eval(self, node->nd_beg), rb_eval(self, node->nd_end), nd_type(node) == NODE_DOT3); を VALUE beg = rb_eval(self, node->nd_beg); VALUE end = rb_eval(self, node->nd_end); result = rb_range_new(beg, end, nd_type(node) == NODE_DOT3); みたいにしませんか。 -- // SASADA Koichi at atdot dot net //