Yukihiro "Matz" Matsumoto
2b0d866da1
class.c (find_visibility_scope): rename the function; ref #6512
...
Since the function returns either callinfo or env, thus the name does
not describe the current behavior. In addition, we did some refactoring
on the function.
2025-05-08 12:02:00 +09:00
Yukihiro "Matz" Matsumoto
50c8e180d8
class.c (find_visibility_ci): refactor to reduce complexity; ref #6512
2025-05-08 07:57:35 +09:00
Yukihiro "Matz" Matsumoto
dbc4768758
mruby/internal.h: rename visibility separation macros; ref #6512
2025-05-08 07:32:36 +09:00
Yukihiro "Matz" Matsumoto
41e91a2ca8
vm.c (mrb_exec_irep): remove recently added separate_module argument
...
The argument was added in #6512
2025-05-08 07:27:23 +09:00
Yukihiro "Matz" Matsumoto
aec8d0c58b
Merge branch 'visibility' of github.com:dearblue/mruby into dearblue-visibility
2025-05-07 15:37:08 +09:00
Yukihiro "Matz" Matsumoto
6eb969ff04
backtrace.c (print_backtrace): use mrb_exc_get_output()
...
To keep the old error print even after Exception#inspect format changed.
2025-05-07 12:22:11 +09:00
Yukihiro "Matz" Matsumoto
33d9ad6c44
error.c (mrb_exc_get_output): a new function for old inspect format
2025-05-07 12:19:05 +09:00
Yukihiro "Matz" Matsumoto
333c364d5f
error.c (mrb_exc_inspect): Update format to match CRuby
2025-05-07 12:19:04 +09:00
Yukihiro "Matz" Matsumoto
b5ad35d8ef
proc.h (MRB_SET_VISIBILITY_FLAGS): rename macro
2025-05-07 12:19:04 +09:00
Yukihiro "Matz" Matsumoto
30d1db4528
10error.rb: move 2 more classes to error.c
...
- FloatDomainError
- RegexpError
2025-05-02 08:50:20 +09:00
Yukihiro "Matz" Matsumoto
0fb280adbf
10error.rb: move some error class definitions to error.c
...
- Exception
- ArgumentError
- LocalJumpError
- RangeErrpr
- TypeError
- IndexError
- KeyError
- NotImplementError
- FrozenError
- ZeroDivisionError
2025-05-01 15:10:55 +09:00
Yukihiro "Matz" Matsumoto
1bc16676a1
class.c: implement BasicObject#!= in C file
...
The method is defined in inline bytecode. As a side-effect, `00class.rb`
was removed.
2025-05-01 10:23:03 +09:00
Yukihiro "Matz" Matsumoto
683ecc09b5
codedump.c: do not print extra ';' if operands are not local vars
2025-04-30 07:54:40 +09:00
Yukihiro "Matz" Matsumoto
789d350da9
codedump.c: put parenthesis around virtual operand
...
Some operands are virtual (e.g. `a` and `a+1`). It is easier to count
instructions if you can distinguish virtual and real operands.
2025-04-29 07:49:59 +09:00
Yukihiro "Matz" Matsumoto
08f74dd2be
class.c: move alias attr attr_reader from 00class.rb
2025-04-28 14:20:07 +09:00
Yukihiro "Matz" Matsumoto
6c72f8b378
class.c (extend_object): remove method; implement Kernel#extend in C
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
6c25b5896a
class.c (prepend_features): remove the method
...
Just like `#append_features`, we remove `#prepend_features` and
implemented `#prepend` directly in C.
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
9387cd382e
class.c (append_features): remove the method
...
The technique is called "double dispatch" (that was popular in
Smalltalk), but it does not work well with mruby. It's slower and
consumes more memory. Even thought `#append_features` defined in ISO
standard (15.2.2.4.11), we decided to remove it. Strictly speaking, it
is mruby limitation. And it should be documented clearly.
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
5fe406d59c
vm.c (send_method): should not use C++ keyword public
2025-04-28 10:30:00 +09:00
Yukihiro "Matz" Matsumoto
a6ef3a45d1
vm.c (mrb_f_public_send): define #public_send method
...
The method itself is available when mruby-metaprog is loaded.
2025-04-25 17:39:12 +09:00
Yukihiro "Matz" Matsumoto
dd96afd5a8
variable.c (mrb_const_set): call const_added hook
2025-04-25 16:25:36 +09:00
Yukihiro "Matz" Matsumoto
e5478c2b40
class.c (setup_class): simplified using mrb_const_set()
2025-04-25 16:23:02 +09:00
Yukihiro "Matz" Matsumoto
8f120971b5
variable.c: merge mrb_vm_const_set to mrb_const_set
...
Inline vm part to the VM itself.
2025-04-25 16:12:06 +09:00
Yukihiro "Matz" Matsumoto
03719490eb
class.c: define const_added method (with empty body)
2025-04-25 15:56:57 +09:00
Yukihiro "Matz" Matsumoto
8b213c4fbf
string.c (sub_replace): check if found argument is within proper range
...
Since it is an internal method, we didn't check the argument range, but
if it's called directly, out-of-range argument could cause SEGV.
2025-04-15 07:11:09 +09:00
Yukihiro "Matz" Matsumoto
1969100fb4
variable.c (mrb_vm_get_const): seek singleton class superclass; fix #6506
...
Also ensure we don't revive #2515 , #3003 , #3598
2025-04-14 22:09:35 +09:00
Yukihiro "Matz" Matsumoto
953ebdf334
variable.c (mrb_vm_const_get): refactoring for singleton classes
2025-04-14 22:09:35 +09:00
Yukihiro "Matz" Matsumoto
e08452585e
variable.c (mrb_mod_cv_get): c must not be NULL as an argument
2025-04-14 22:09:34 +09:00
Yukihiro "Matz" Matsumoto
90d77e71f5
variable.c (mrb_mod_cv_set): small refactoring
...
The argument c should not be NULL.
2025-04-14 22:09:34 +09:00
Yukihiro "Matz" Matsumoto
118e13d85c
variable.c: a new function mrb_mod_const_at()
...
And mrb_mod_constants() use the new function now.
2025-04-14 22:09:34 +09:00
Yukihiro "Matz" Matsumoto
0d5fecf833
variable.c (mrb_const_get): adjust local variable scope
2025-04-14 22:09:33 +09:00
dearblue
3fd5e1c250
Fixed visibility at method definition
...
There was a problem with visibility state from proc that straddles a fiber or is independent.
Therefore, it has been changed to give priority to env objects, if any.
Also, added "separate module" flag to block traversal to a higher level env object.
Note that the "separate module" flag is now set when calling blocks with the `mrb_yield_with_class()` function.
fixed https://github.com/mruby/mruby/issues/6494
2025-04-11 21:36:26 +09:00
dearblue
84e1b0045c
Fixed class method visibility via module_function
...
The following code should work
```ruby
module M
def me
p self
end
module_function :me
end
M.me
```
2025-04-07 21:40:56 +09:00
John Bampton
b56f984c25
misc: fix typos
2025-03-30 14:04:34 +10:00
Yukihiro "Matz" Matsumoto
7351f1127b
vm.c: ci_bidx() returns mrb_int, that may be different in size from int
2025-03-26 16:19:26 +09:00
Yukihiro "Matz" Matsumoto
a574034cb2
hash.c (hash_set_default_proc): mrb_proc_arity() returns mrb_int
2025-03-25 08:09:21 +09:00
Yukihiro "Matz" Matsumoto
226acdc540
hash.c (mrb_hash_set_default_proc): avoid repeated calls for mrb_nil_p()
2025-03-19 14:57:02 +09:00
Yukihiro "Matz" Matsumoto
a55e3685a9
string.c: rename local variable indx to idx
...
`indx` seems not to be a common abbreviation.
2025-03-18 10:40:30 +09:00
Mark Delk
6396aac434
fix a typo, update specs
2025-03-17 10:47:33 -05:00
Yukihiro "Matz" Matsumoto
1e6442f54e
Revert "class.c (include_module_at): narrow local variable scope"
...
C++ does not compile `goto` cross local variable declaration.
This reverts commit c618b44fee .
2025-03-10 19:33:49 +09:00
Yukihiro "Matz" Matsumoto
1e36d7662c
object.h: rename gccolor to clearer gc_color
2025-03-10 14:23:51 +09:00
Yukihiro "Matz" Matsumoto
92b18d6a44
gc.c: fix re-using to reusing
2025-03-10 14:23:21 +09:00
Yukihiro "Matz" Matsumoto
f4de205960
range.c (range_num_to_a): reduce integer to float conversion
...
For big numbers (especially integers close to MRB_INT_MAX), float
conversion may be lose precisions. So we try not to convert numbers, but
just compare.
2025-03-10 13:13:10 +09:00
Yukihiro "Matz" Matsumoto
c618b44fee
class.c (include_module_at): narrow local variable scope
2025-03-10 11:26:13 +09:00
Yukihiro "Matz" Matsumoto
48f93adcdc
class.c (boot_defclass): unify variable declaration and initialization
2025-03-10 11:25:34 +09:00
Yukihiro "Matz" Matsumoto
4ba0cac481
numeric.c (coerce_step_counter): move local variable definition
...
To avoid unused local variable warning.
2025-03-09 16:42:28 +09:00
Yukihiro "Matz" Matsumoto
9a226c28bc
hash.c: add arity check for Hash#default_proc (and Hash.new); fix #6484
2025-03-08 16:14:26 +09:00
Yukihiro "Matz" Matsumoto
a7f3cfb711
hash.c: allow 'default_proc=nil' to clear default_proc; ref #6483
2025-03-08 15:49:26 +09:00
Yukihiro "Matz" Matsumoto
837f62f18a
hash.c: should check type before setting default_proc; fix #6483
2025-03-08 12:34:25 +09:00
Yukihiro "Matz" Matsumoto
87680d3ab2
hash.c (mrb_hash_rehash): call hash_modify before actual modify; fix #6485
2025-03-08 11:21:27 +09:00