[ruby-core:117790] [Ruby master Feature#19979] Allow methods to declare that they don't accept a block via `&nil`
From:
"kddnewton (Kevin Newton) via ruby-core" <ruby-core@...>
Date:
2024-05-07 12:57:42 UTC
List:
ruby-core #117790
SXNzdWUgIzE5OTc5IGhhcyBiZWVuIHVwZGF0ZWQgYnkga2RkbmV3dG9uIChLZXZpbiBOZXd0b24p Lg0KDQoNClRoaXMgYWxyZWFkeSBleGlzdHMgZm9yIGAqKm5pbGAsIGFzIGluOg0KDQpgYGBydWJ5 DQppcmIobWFpbik6MDAxPiBkZWYgZm9vKCoqbmlsKTsgZW5kDQo9PiA6Zm9vDQppcmIobWFpbik6 MDAyPiBtZXRob2QoOmZvbykucGFyYW1ldGVycw0KPT4gW1s6bm9rZXldXQ0KaXJiKG1haW4pOjAw Mz4NCmBgYA0KDQpJIHRoaW5rIGFkZGluZyB0aGlzIHdvdWxkIGJlIHJlYWxseSBuaWNlIGZyb20g YW55IHN0YXRpYyBwZXJzcGVjdGl2ZSDigJQgaXQgZ2V0cyBhcm91bmQgaGF2aW5nIHRvIGF0dGVt cHQgdG8gaW50ZXJwcmV0IHRoZSBib2R5Lg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxOTk3OTogQWxsb3cgbWV0aG9kcyB0byBkZWNsYXJlIHRo YXQgdGhleSBkb24ndCBhY2NlcHQgYSBibG9jayB2aWEgYCZuaWxgDQpodHRwczovL2J1Z3MucnVi eS1sYW5nLm9yZy9pc3N1ZXMvMTk5NzkjY2hhbmdlLTEwODE5Nw0KDQoqIEF1dGhvcjogdWZ1ayAo VWZ1ayBLYXlzZXJpbGlvZ2x1KQ0KKiBTdGF0dXM6IE9wZW4NCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMjIEFic3RyYWN0DQoNClRoaXMgZmVhdHVyZSBwcm9wb3Nl cyBuZXcgc3ludGF4IHRvIGFsbG93IG1ldGhvZHMgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoYXQg dGhleSBkb24ndCBhY2NlcHQgYmxvY2tzLCBhbmQgbWFrZXMgcGFzc2luZyBvZiBhIGJsb2NrIHRv IHN1Y2ggbWV0aG9kcyBhbiBlcnJvci4NCg0KIyMgQmFja2dyb3VuZA0KDQpJbiAjMTU1NTQsIGl0 IHdhcyBwcm9wb3NlZCB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCBtZXRob2RzIHRoYXQgZG8gbm90 IHVzZSB0aGUgYmxvY2sgcGFzc2VkIHRvIHRoZW0sIGFuZCB0byBlcnJvciBpZiBhIGJsb2NrIHdh cyBwYXNzZWQgdG8gc3VjaCBtZXRob2RzLiBBcyBmYXIgYXMgSSBjYW4gdGVsbCwgaXQgd2FzIGxh dGVyIG9uIGNsb3NlZCBzaW5jZSAjMTA0OTkgc29sdmVkIGEgbGFyZ2UgcGFydCBvZiB0aGUgcHJv YmxlbS4NCg0KVGhhdCBwcm9wb3NhbCBoYXMsIGFzIHBhcnQgb2YgW2EgZGV2IG1lZXRpbmcgZGlz Y3Vzc2lvbl0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvZGV2LW1lZXRpbmctbG9nL2Jsb2IvYjQz NTc4NTNjMDNkZmU3MWI2ZWFiMzIwZDU2NDJkNDYzODU0ZjUwZi8yMDE5L0Rldk1lZXRpbmctMjAx OS0wMS0xMC5tZD9wbGFpbj0xI0wxMTAtTDEyMCksIGEgcHJvcG9zYWwgZnJvbSBAbWF0eiB0byBh bGxvdyBtZXRob2RzIHRvIHVzZSBgJm5pbGAgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoYXQgdGhl eSBkb24ndCBhY2NlcHQgYSBibG9jay4gQXQgdGhlIHRpbWUsIHRoZSBwcm9wb3NhbCB3YXMgdHJ5 aW5nIHRvIHNvbHZlIGEgYmlnZ2VyIHByb2JsZW0sIHNvIHRoaXMgc3ViLXByb3Bvc2FsIHdhcyBu ZXZlciBjb25zaWRlcmVkIHNlcmlvdXNseS4gSG93ZXZlciwgbm90ZXMgaW4gdGhlIHByb3Bvc2Fs IHNheToNCj4gSXQgaXMgZXhwbGljaXQsIGJ1dCBpdCBpcyB0b3VnaCB0byBhZGQgdGhpcyBgJm5p bGAgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIHRvIGFsbCBvZiBtZXRob2RzIChkbyB5b3Ugd2FudCB0 byBhZGQgaXQgdG8gYGRlZiBbXT0oaSwgZSwgJm5pbClgPykuIChJIGFncmVlIGAmbmlsYCBpcyB2 YWx1YWJsZSBvbiBzb21lIHNpdHVhdGlvbnMpDQoNClRoaXMgcHJvcG9zYWwgZXh0cmFjdHMgdGhh dCBzdWItcHJvcG9zYWwgdG8gbWFrZSB0aGlzIGEgbmV3IGxhbmd1YWdlIGZlYXR1cmUuDQoNCiMj IFByb3Bvc2FsDQoNCkluIFJ1YnksIGl0IGlzIGFsd2F5cyB2YWxpZCBmb3IgdGhlIGNhbGxlciB0 byBwYXNzIGEgYmxvY2sgdG8gYSBtZXRob2QgY2FsbCwgZXZlbiBpZiB0aGUgY2FsbGVlIGlzIG5v dCBleHBlY3RpbmcgYSBibG9jayB0byBiZSBwYXNzZWQuIFRoaXMgbGVhZHMgdG8gc3VidGxlIHVz ZXIgZXJyb3JzLCB3aGVyZSB0aGUgYXV0aG9yIG9mIHNvbWUgY29kZSBhc3N1bWVzIGEgbWV0aG9k IGNhbGwgdXNlcyBhIGJsb2NrLCBidXQgdGhlIGJsb2NrIHBhc3NlZCB0byB0aGUgbWV0aG9kIGNh bGwgaXMgc2lsZW50bHkgaWdub3JlZC4NCg0KVGhlIHByb3Bvc2FsIGlzIHRvIGludHJvZHVjZSBg Jm5pbGAgYXQgbWV0aG9kIGRlY2xhcmF0aW9uIHNpdGVzIHRvIG1lYW4gIlRoaXMgbWV0aG9kIGRv ZXMgbm90IGFjY2VwdCBhIGJsb2NrIi4gVGhpcyBpcyBzeW1tZXRyaWMgdG8gdGhlIGFiaWxpdHkg dG8gcGFzcyBgJm5pbGAgYXQgY2FsbCBzaXRlcyB0byBtZWFuICJJIGFtIG5vdCBwYXNzaW5nIGEg YmxvY2sgdG8gdGhpcyBtZXRob2QgY2FsbCIsIHdoaWNoIGlzIHNvbWV0aW1lcyB1c2VmdWwgd2hl biBtYWtpbmcgYHN1cGVyYCBjYWxscyAoc2luY2UgYmxvY2tzIGFyZSBhbHdheXMgaW1wbGljaXRs eSBwYXNzZWQpLg0KDQpFeHBsaWNpdGx5LCB0aGUgcHJvcG9zYWwgaXMgdG8gbWFrZSB0aGUgZm9s bG93aW5nIGJlaGF2aW91ciBiZSBhIHBhcnQgb2YgUnVieToNCmBgYHJ1YnkNCmRlZiBmaW5kKGl0 ZW0gPSBuaWwsICZuaWwpDQogICMgc29tZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXNuJ3QgY2Fs bCBgeWllbGRgIG9yIGBibG9ja19naXZlbj9gDQplbmQNCg0KZmluZCB7IHxpfCBpID09IDQyIH0N CiMgPT4gQXJndW1lbnRFcnJvcjogcGFzc2luZyBibG9jayB0byB0aGUgbWV0aG9kIGBmaW5kJyB0 aGF0IGRvZXMgbm90IGFjY2VwdCBhIGJsb2NrLg0KYGBgDQoNCiMjIEltcGxlbWVudGF0aW9uDQoN CkkgYXNzdW1lIHRoZSBpbXBsZW1lbnRhdGlvbiB3b3VsZCBiZSBhIGdyYW1tYXIgY2hhbmdlIHRv IG1ha2UgYCZuaWxgIHZhbGlkIGF0IG1ldGhvZCBkZWNsYXJhdGlvbiBzaXRlcywgYXMgd2VsbCBh cyByYWlzaW5nIGFuIGBBcmd1bWVudEVycm9yYCBmb3IgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWQg d2l0aCBhIGJsb2NrIGJ1dCBhcmUgZGVjbGFyZWQgd2l0aCBgJm5pbGAuDQoNCiMjIEV2YWx1YXRp b24NCg0KU2luY2UgSSBkb24ndCBoYXZlIGFuIGltcGxlbWVudGF0aW9uLCBJIGNhbid0IG1ha2Ug YSBwcm9wZXIgZXZhbHVhdGlvbiBvZiB0aGUgZmVhdHVyZSBwcm9wb3NhbC4gSG93ZXZlciwgSSB3 b3VsZCBleHBlY3QgdGhlIGxhbmd1YWdlIGNoYW5nZXMgdG8gYmUgbWluaW1hbCB3aXRoIG5vIHJ1 bnRpbWUgY29zdHMgZm9yIG1ldGhvZHMgdGhhdCBkb24ndCB1c2UgdGhlIGAmbmlsYCBzeW50YXgu DQoNCiMjIERpc2N1c3Npb24NCg0KVGhpcyBwcm9wb3NhbCBoYXMgbXVjaCBzbWFsbGVyIHNjb3Bl IHRoYW4gIzE1NTU0IHNvIHRoYXQgdGhlIFJ1YnkgbGFuZ3VhZ2UgY2FuIHN0YXJ0IGdpdmluZyBs aWJyYXJ5IGF1dGhvcnMgdGhlIGFiaWxpdHkgdG8gZXhwbGljaXRseSBtYXJrIHRoZWlyIG1ldGhv ZHMgYXMgbm90IGFjY2VwdGluZyBhIGJsb2NrLiBUaGlzIGlzIGZ1bGx5IGJhY2t3YXJkIGNvbXBh dGlibGUsIHNpbmNlIGl0IGlzIGFuIG9wdC1pbiBiZWhhdmlvdXIgYW5kIG5vdCBhbiBvcHQtb3V0 IG9uZS4NCg0KRnV0dXJlIGRpcmVjdGlvbnMgYWZ0ZXIgdGhpcyBmZWF0dXJlIHByb3Bvc2FsIGNv dWxkIGJlIGEgd2F5IHRvIHNpZ25hbCB0byB0aGUgVk0gdGhhdCBhbnkgbWV0aG9kIGluIGEgZmls ZSB0aGF0IGRvZXNuJ3QgZXhwbGljaXRseSB1c2UgYHlpZWxkYC9gYmxvY2tfZ2l2ZW4/YCBvciBl eHBsaWNpdGx5IGRlY2xhcmVkIGEgYmxvY2sgcGFyYW1ldGVyIHNob3VsZCBiZSB0cmVhdGVkIGFz IG5vdCBhY2NlcHRpbmcgYSBibG9jay4gVGhpcyBjYW4gYmUgZG9uZSB2aWEgc29tZSBraW5kIG9m IHByYWdtYSBzaW1pbGFyIHRvIGBmcm96ZW5fc3RyaW5nX2xpdGVyYWxgLCBvciB0aHJvdWdoIG90 aGVyIG1lYW5zLiBIb3dldmVyLCBzdWNoIGZ1dHVyZSBkaXJlY3Rpb25zIGFyZSBiZXlvbmQgdGhl IHNjb3BlIG9mIHRoaXMgcHJvcG9zYWwuDQoNCiMjIFN1bW1hcnkNCg0KQWRkaW5nIHRoZSBhYmls aXR5IGZvciBtZXRob2RzIHRvIGRlY2xhcmUgdGhhdCB0aGV5IGRvbid0IGFjY2VwdCBhIGJsb2Nr IHdpbGwgbWFrZSB3cml0aW5nIGNvZGUgYWdhaW5zdCBzdWNoIG1ldGhvZHMgc2FmZXIgYW5kIG1v cmUgcmVzaWxpZW50LCBhbmQgd2lsbCBwcmV2ZW50IHNpbGVudGx5IGlnbm9yZWQgYmVoYXZpb3Vy IHRoYXQgaXMgb2Z0ZW4gaGFyZCB0byBjYXRjaCBvciB0cm91Ymxlc2hvb3QuDQoNCg0KDQotLSAN Cmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KIF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0gcnVieS1jb3Jl QG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcnVieS1j b3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0dHBzOi8vbWwu cnVieS1sYW5nLm9yZy9tYWlsbWFuMy9wb3N0b3JpdXMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1Ynkt bGFuZy5vcmcv