3 Commits

Author SHA1 Message Date
Yukihiro "Matz" Matsumoto e2c4e2f4a7 mruby-errno: add comprehensive call-seq documentation for errno handling
Added complete call-seq documentation for all errno module methods in
mrblib/errno.rb (3 methods):

## Errno Module Methods:

- const_defined?: checks if errno constant exists on the system, provides
  dynamic errno constant detection by querying both system-defined errno
  values and superclass constants with proper boolean return values

- const_missing: handles dynamic errno constant definition when undefined
  constants are referenced, automatically defines errno classes for valid
  system error codes and delegates to superclass for invalid names

- constants: returns array of all available errno constant names on the
  system, includes both already defined constants and those that can be
  dynamically defined, with dependency note for mruby-metaprog gem

Co-authored-by: Atlassian Rovo Dev
2025-08-14 10:52:46 +09:00
Yukihiro "Matz" Matsumoto 9caa4d642c errno.rb: fixed a typo. 2022-09-18 08:01:07 +09:00
dearblue c14e26d79e Define Errno::EXXX when needed
If the `Errno::EXXX` class is defined minimally when needed, it will save about 17 KiB of RAM in a 32-bit environment.
Define the singular methods `.const_defined?`, `.const_missing` and `.constants` in the `Errno` module and act as if there are classes that have not yet been defined.

However, if real classes are enumerated, for example by the following code, the effect is lost.

```ruby
Errno.constants.map { |id| Errno.const_get(id) }
```

But I believe that such codes are rarely written with the intention of being written.

In this patch, the `Errno::EXXX#initialize` method is no longer defined for further memory reduction.
Instead, it has been merged into the `SystemCallError#initialize` method.
2022-07-10 20:53:55 +09:00