[ruby-core:121049] [Ruby master Misc#21035] Clarify or redefine Module#autoload? and Module#const_defined?
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2025-02-14 15:14:33 UTC
List:
ruby-core #121049
SXNzdWUgIzIxMDM1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpmeG4gKFhhdmllciBOb3JpYSkgd3JvdGUgaW4gI25vdGUtMTU6DQo+IEkgdGhpbmsgYE1v ZHVsZSNjb25zdGFudHNgIGFuZCBgTW9kdWxlI2NvbnN0X2RlZmluZWQ/YCBzaG91bGQgbWF0Y2gu IEkgYmVsaWV2ZSB3ZSBhZ3JlZSBvbiB0aGF0IG9uZSwgcmlnaHQ/DQoNCkknbSBub3Qgc3VyZSDw n5iFDQpJTU8gYW4gYXV0b2xvYWQgd2hpY2ggZG9lcyBkZWZpbmUgdGhlIGNvbnN0YW50IGNvcnJl Y3RseSBzaG91bGQgc3RheSBpbiBgTW9kdWxlI2NvbnN0YW50c2AgYXQgYWxsIHRpbWVzIGZyb20g dGhlIGBhdXRvbG9hZCA6Rm9vLCAicGF0aCJgLCBvbiBhbGwgdGhyZWFkcy4NCkl0IHNlZW1zIHRv byB3ZWlyZCBmb3IgYSBjb25zdGFudCB0byBkaXNhcHBlYXIgZnJvbSBgTW9kdWxlI2NvbnN0YW50 c2AgYmVjYXVzZSBpdCdzIGJlaW5nIGF1dG9sb2FkZWQgYnkgdGhlIGN1cnJlbnQgdGhyZWFkLCBh bmQgY291bGQgY2F1c2Ugc3VidGxlIHByb2JsZW1zLg0KSU9XLCBJIHRoaW5rIGBNb2R1bGUjY29u c3RhbnRzYCBpcyBjb3JyZWN0IGFzIGl0IGlzLg0KDQpJIGRvIHJlYWxpemUgdGhhdCB3aXRoIGBN b2R1bGUjY29uc3RfZGVmaW5lZD9gIGFuZCBgZGVmaW5lZD9gIGFuZCBgYXV0b2xvYWQ/YCB0aGUg Y29uc3RhbnQgbG9va3MgbGlrZSBpdCBkaXNhcHBlYXJzIHdoaWxlIGl0J3MgYmVpbmcgYXV0b2xv YWRlZCBieSB0aGUgY3VycmVudCB0aHJlYWQuDQoodGhhdCdzIHRoZSBpbmNvbnNpc3RlbmN5IHlv dSBtZW50aW9uIGluIHRoZSBkZXNjcmlwdGlvbikNCkkgdGhpbmsgZm9yIGBNb2R1bGUjY29uc3Rf ZGVmaW5lZD9gIGFuZCBgZGVmaW5lZD9gIHRoZXJlIG1pZ2h0IGJlIHZhbGlkIHJlYXNvbnMgZm9y IGl0LCBub3RhYmx5IGZvciB0aGF0IHBhdHRlcm4gaW4gaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5v cmcvaXNzdWVzLzIxMDM1I25vdGUtOS4NCg0KRm9yIGBhdXRvbG9hZD9gIEkgZG9uJ3Qgc2VlIGFu eSByZWFzb24gdG8gbWFrZSBpdCBkaXNhcHBlYXIgYW5kIHNvIGNvbXBsaWNhdGVkIGJlaGF2aW9y Lg0KSSB0aGluayBgYXV0b2xvYWQ/YCBzaG91bGQganVzdCBxdWVyeSB3aGF0J3MgaW4gdGhlIGNv bnN0YW50IHRhYmxlOiBpZiBpdCdzIGFuIGF1dG9sb2FkIGNvbnN0YW50IGFuZCBpdCdzIG5vdCBy ZXNvbHZlZCB5ZXQgaXQgc2hvdWxkIHJldHVybiB0aGUgYXV0b2xvYWQgcGF0aCwgd2hldGhlciBp dCdzIGN1cnJlbnRseSBsb2FkaW5nIG9yIG5vdCwgb24gYWxsIHRocmVhZHMuDQoNCi0tLQ0KDQo+ IHNob3VsZCBwcmludCAiZm9vIiB1bmNvbmRpdGlvbmFsbHksIEkganVzdCByZWdpc3RlcmVkIHRo ZSBhdXRvbG9hZCENCg0KWWVzLCBJIHRoaW5rIHdlIGNhbiBhZ3JlZSB0aGlzIGlzIHN1cnByaXNp bmcgYmVoYXZpb3IuDQpNYXliZSB3ZSBjYW4gYWdyZWUgaXQgaXMgdW5kZXNpcmVkIGJlaGF2aW9y LCBXRFlUIEBtYW1lPw0KDQpJdCBpcyB1bmZvcnR1bmF0ZWx5IHJhdGhlciBicml0dGxlIHdoZW4g ZS5nLiBkZWZpbmluZyBgYXV0b2xvYWQgOkZvbywgImZvbyJgIHRoYXQgaWYgdGhlcmUgaXMgYW55 IGBmb28ucmJgIHVuZGVyIGAkTE9BRF9QQVRIYCB0aGF0IGlzIGJlaW5nIHJlcXVpcmVkIGN1cnJl bnRseSBpdCdzIGNvbnNpZGVyZWQgdG8gYmUgdGhlIGZpbGUgZGVmaW5pbmcgY29uc3RhbnQgYEZv b2AsIHdoaWNoIGl0IG1heSBvciBtYXkgbm90IGJlLg0KQWx0aG91Z2ggaW4gdGhlb3J5IHN1Y2gg Y29uZmxpY3RzIHNob3VsZCBub3QgaGFwcGVuIG11Y2gsIGJlY2F1c2UgZ2Vtcy9hcHBzIGFyZSBz dXBwb3NlZCB0byBoYXZlIGRpZmZlcmVudCB0b3AtbGV2ZWwgbmFtZXNwYWNlIGFuZCBlLmcuIGBt b2R1bGUgQTsgYXV0b2xvYWQgOkZvbywgImEvZm9vIjsgZW5kYCBkb2VzIG5vdCBjb25mbGljdCB3 aXRoIGBtb2R1bGUgQjsgYXV0b2xvYWQgOkZvbywgImIvZm9vIjsgZW5kYC4NCkBmeG4gRG8geW91 IGhhdmUgYW4gaXNzdWUgZG9jdW1lbnRpbmcgaG93IHRoZSBjb25mbGljdCBpbiBhdXRvbG9hZCBw YXRocyBjYW4gaGFwcGVuIGluIHRoZSByZWFsIHdvcmxkIGZyb20gdGhhdCAyMDE5IGlzc3VlIG9y IG1vcmUgcmVjZW50Pw0KDQpAZnhuIEhvdyBkbyB5b3Ugd29ya2Fyb3VuZCB0aGF0IHN0cmFuZ2Ug YmVoYXZpb3IgaW4gWmVpdHdlcmssIGNvdWxkIHlvdSBwb2ludCB0byBzb21lIGNvZGU/DQoNCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCk1pc2MgIzIxMDM1OiBDbGFy aWZ5IG9yIHJlZGVmaW5lIE1vZHVsZSNhdXRvbG9hZD8gYW5kIE1vZHVsZSNjb25zdF9kZWZpbmVk Pw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIxMDM1I2NoYW5nZS0xMTE5NjEN Cg0KKiBBdXRob3I6IGZ4biAoWGF2aWVyIE5vcmlhKQ0KKiBTdGF0dXM6IE9wZW4NCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClRoZSBkb2N1bWVudGF0aW9uIGZvciBg TW9kdWxlI2F1dG9sb2FkP2Agc2F5czoNCg0KPiBSZXR1cm5zIGZpbGVuYW1lIHRvIGJlIGxvYWRl ZCBpZiBuYW1lIGlzIHJlZ2lzdGVyZWQgYXMgYXV0b2xvYWQgaW4gdGhlIG5hbWVzcGFjZSBvZiBt b2Qgb3Igb25lIG9mIGl0cyBhbmNlc3RvcnMuDQoNCkFzIGEgdXNlciwgaWYgSSBkZWNsYXJlIGFu IGF1dG9sb2FkLCBJIGV4cGVjdCB0aGlzIEFQSToNCg0KYGBgcnVieQ0KbW9kdWxlIE0NCiAgYXV0 b2xvYWQgOkZvbywgJ2ZvbycNCg0KICBjb25zdGFudHMgICAgICAgICAgICAjID0+IFs6Rm9vXQ0K ICBjb25zdF9kZWZpbmVkPyg6Rm9vKSAjID0+IHRydWUNCiAgYXV0b2xvYWQ/KDpGb28pICAgICAg IyA9PiAnZm9vJw0KZW5kDQpgYGANCg0KVGhhdCBpdCBpcyBpbmRlZWQgaG93IGl0IGdlbmVyYWxs eSB3b3Jrcy4gRXZlbiBpZiB0aGUgYXV0b2xvYWQgcGF0aCBkb2VzIG5vdCBleGlzdC4gQnV0IHRo ZXJlIGlzIGFuIGVkZ2UgY2FzZS4NCg0KV2hpbGUgYGNvbnN0YW50c2AgZG9lcyBpbmNsdWRlIGFs d2F5cyBgOkZvb2AgYXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNv bnN0X2RlZmluZWQ/YCBhbmQgYGF1dG9sb2FkP2AgZGVwZW5kcyBvbiB0aGUgc3RhY2sgb2YgZmVh dHVyZXMgYmVpbmcgbG9hZGVkOiBUaGUgYXV0b2xvYWQgcGF0aCBpcyByZXNvbHZlZCBhbmQgaWYg c2VlbiB0byBiZSBpbiB0aGUgc3RhY2sgb2YgZmVhdHVyZXMgYmVpbmcgbG9hZGVkLCB0aGUgcHJl ZGljYXRlcyByZXR1cm4gYGZhbHNlYCBhbmQgYG5pbGAsIHJlc3BlY3RpdmVseS4gRG8geW91IHRo aW5rIHRoYXQgaXMgaW50dWl0aXZlPw0KDQpJIGZpbmQgdGhhdCBsb2dpYyB0b3RhbGx5IHVuZXhw ZWN0ZWQuIEkganVzdCBkZWZpbmVkIGFuIGF1dG9sb2FkLCB0aGVyZWZvcmUsIEkgdGhpbmsgaXQg d291bGQgYmUgbmF0dXJhbCBmb3IgYGF1dG9sb2FkP2AgdG8gcmV0dXJuIHdoYXQgSSBqdXN0IGNv bmZpZ3VyZWQuIFdoeSBzaG91bGQgYGNvbnN0X2RlZmluZWQ/YCByZXR1cm4gbm90aGluZyBidXQg YHRydWVgPyBBbmQgd2h5IGlzIGl0IG5vdCBjb25zaXN0ZW50IHdpdGggYGNvbnN0YW50c2A/DQoN ClRvIG1lLCBpdCB3b3VsZCBtYWtlIG1vcmUgc2Vuc2UgdGhhdCBpbiB0aGUgcHJldmlvdXMgZXhh bXBsZSBgY29uc3RfZGVmaW5lZD9gIHJldHVybnMgYHRydWVgLCBhbmQgYGF1dG9sb2FkP2AgcmV0 dXJucyBgZm9vYCB1bmNvbmRpdGlvbmFsbHkgKGFuZCBpbnN0YW50bHksIG5vd2FkYXlzIGl0IHRh a2VzIGEgcmVsYXRpdmUgbG9uZyB0aW1lIGR1ZSB0byB0aGUgbG9va3VwKS4NCg0KTm93LCBpZiB0 aGUgYXV0b2xvYWQgaXMgdHJpZ2dlcmVkIGluIGEgbG9va3VwICoqdGhlbioqIEkgd291bGQgZXhw ZWN0IGBLZXJuZWwjcmVxdWlyZWAgbG9naWMgdG8gYXBwbHkuIEJ1dCBub3Qgd2hlbiBjYWxsaW5n IHNvbWUgc2ltcGxlIHByZWRpY2F0ZXMuDQoNClBsZWFzZSwgbm90ZSB0aGF0IHRoZSBwcmVzZW50 IGJlaGF2aW9yIGlzIG5vdCBkb2N1bWVudGVkLCBzbyBvbiBwYXBlciB0aGUgY2hhbmdlIHdvdWxk IG5vdCBiZSBiYWNrd2FyZHMgaW5jb21wYXRpYmxlLg0KDQpJZiwgb24gdGhlIG90aGVyIHNpZGUs IGl0IGlzIHByZWZlcnJlZCB0byBrZWVwIHRoZSBiZWhhdmlvciBhcyBpdCBpcywgSSBndWVzcyBp dCBzaG91bGQgYmUgZG9jdW1lbnRlZCB3aXRoIHByZWNpc2lvbiAoYWNjb3VudGluZyBmb3Igc3lt bGlua3MsIHJlbGF0aXZlIHBhdGhzIGluIGAkTE9BRF9QQVRIYCwgZXRjLikNCg0KDQoNCg0KLS0g DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29y ZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1Ynkt Y29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21s LnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv