[ruby-core:122830] [Ruby Feature#21515] Add `&return` as sugar for `x=my_calculation; return x if x`
From:
lpogic via ruby-core <ruby-core@...>
Date:
2025-07-20 22:40:00 UTC
List:
ruby-core #122830
SXNzdWUgIzIxNTE1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbHBvZ2ljICjFgXVrYXN6IFBvbWlldMWC bykuDQoNCg0KamVyZW15ZXZhbnMwIChKZXJlbXkgRXZhbnMpIHdyb3RlIGluICNub3RlLTY6DQo+ IE5vdCBzdXJlIHdoeSB0aGUgbG9jYWwgdmFyaWFibGUgZGVjbGFyYXRpb24gd291bGQgbWF0dGVy LCBhcyBsb25nIGFzIHlvdSBkb24ndCBwaWNrIG9uZSBhbHJlYWR5IGluIHVzZS4NCg0KQmVjYXVz ZSB5b3UgaGF2ZSB0byB3cml0ZSBpdCB0d2ljZS4gQW5kIGNvbWluZyB1cCB3aXRoIG5hbWVzIGNh biBiZSB0ZWRpb3VzLiBFc3BlY2lhbGx5IGZvciB0cml2aWFsIGFuZCByZXBldGl0aXZlIHBhdHRl cm5zIGxpa2UgdGhpcyBvbmUuDQoNCmplcmVteWV2YW5zMCAoSmVyZW15IEV2YW5zKSB3cm90ZSBp biAjbm90ZS02Og0KPiBgYGBydWJ5DQo+IGRlZiBteV9jYWxjdWxhdGlvbihhLCBiKQ0KPiAgIGEg PT0gYiB8fCBuaWwNCj4gZW5kDQo+IA0KPiBkZWYgdChhLCBiKQ0KPiAgIG15X2NhbGN1bGF0aW9u KGEsIGIpJi50aGVue3JldHVybiBpdH0NCj4gICBwcm9je30NCj4gZW5kDQo+IA0KPiBiZWZvcmUg PSB7fQ0KPiBhZnRlciA9IHt9DQo+IA0KPiBjYXNlcyA9IFtbMSwgMV0sIFsxLCAyXV0NCj4gR0Mu c3RhcnQNCj4gR0MuZGlzYWJsZQ0KPiBjYXNlcy5lYWNoIGRvIHxhLCBifA0KPiAgIE9iamVjdFNw YWNlLmNvdW50X29iamVjdHMoYmVmb3JlKQ0KPiAgIGMgPSB0KGEsIGIpDQo+ICAgT2JqZWN0U3Bh Y2UuY291bnRfb2JqZWN0cyhhZnRlcikNCj4gICAjIFByb2NzIGhhdmUgVF9EQVRBIGludGVybmFs IHR5cGUNCj4gICBwIFthLCBiLCBjLCBhZnRlcls6VF9EQVRBXSAtIGJlZm9yZVs6VF9EQVRBXV0N Cj4gZW5kDQo+IGBgYA0KDQpJbmRlZWQsIHlvdSBhcmUgcmlnaHQuIEFueXdheSwgdGhlICImLnRo ZW4iIG9wdGlvbiBkb2VzIGV4dHJhIHdvcmssIG1ha2luZyBpdCBhIGJpdCBzbG93ZXI6DQpgYGBy Yg0KcmVxdWlyZSAnYmVuY2htYXJrJw0KDQpkZWYgbXlfY2FsY3VsYXRpb24oYSwgYikNCiAgYSAr IGINCmVuZA0KDQpkZWYgY2FsY3VsYXRlX3dpdGhfaWYNCiAgeCA9IG15X2NhbGN1bGF0aW9uKDEs IDEpOyByZXR1cm4geCBpZiB4DQplbmQNCg0KZGVmIGNhbGN1bGF0ZV93aXRoX2FuZA0KICB4ID0g bXlfY2FsY3VsYXRpb24oMSwgMSkgYW5kIHJldHVybiB4DQplbmQNCg0KZGVmIGNhbGN1bGF0ZV93 aXRoX3RoZW4NCiAgbXlfY2FsY3VsYXRpb24oMSwgMSkmLnRoZW57IHJldHVybiBpdCB9DQplbmQN Cg0KbiA9IDEwXzAwMF8wMDANCg0KQmVuY2htYXJrLmJtYm0gZG8gfHh8DQogIHgucmVwb3J0KCJ4 ID0gbXlfY2FsY3VsYXRpb24oMSwgMSk7IHJldHVybiB4IGlmIHgiKSAgeyBuLnRpbWVzeyBjYWxj dWxhdGVfd2l0aF9pZiB9IH0NCiAgeC5yZXBvcnQoInggPSBteV9jYWxjdWxhdGlvbigxLCAxKSBh bmQgcmV0dXJuIHgiKSB7IG4udGltZXN7IGNhbGN1bGF0ZV93aXRoX2FuZCB9IH0NCiAgeC5yZXBv cnQoIm15X2NhbGN1bGF0aW9uKDEsIDEpJi50aGVueyByZXR1cm4gaXQgfSIpIHsgbi50aW1lc3sg Y2FsY3VsYXRlX3dpdGhfdGhlbiB9IH0NCmVuZA0KYGBgDQoNCmBgYA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgICAgIHN5c3RlbSAgICAgIHRvdGFs ICAgICAgICByZWFsDQp4ID0gbXlfY2FsY3VsYXRpb24oMSwgMSk7IHJldHVybiB4IGlmIHggICAw Ljk1NDAwMCAgIDAuMDAwMDAwICAgMC45NTQwMDAgKCAgMC45NDc5NjkpDQp4ID0gbXlfY2FsY3Vs YXRpb24oMSwgMSkgYW5kIHJldHVybiB4ICAgICAwLjk2ODAwMCAgIDAuMDAwMDAwICAgMC45Njgw MDAgKCAgMC45NzAwMjMpDQpteV9jYWxjdWxhdGlvbigxLCAxKSYudGhlbnsgcmV0dXJuIGl0IH0g ICAyLjUzMjAwMCAgIDAuMDE1MDAwICAgMi41NDcwMDAgKCAgMi41MzkxMjMpDQpgYGANCkl0J3Mg bm90IGJhZC4gQnV0IEkganVzdCB3YW50ZWQgdG8ga25vdyBpZiB0aGVyZSB3YXMgYSB3YXkgdGhh dCB3b3VsZCwgbGlrZSB0aGUgcHJvcG9zZWQgc3ludGF4LCBhdm9pZCB0aGlzIGNvbXByb21pc2Uu DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIx NTE1OiBBZGQgYCZyZXR1cm5gIGFzIHN1Z2FyIGZvciBgeD1teV9jYWxjdWxhdGlvbjsgcmV0dXJu IHggaWYgeGANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTUxNSNjaGFuZ2Ut MTE0MTE5DQoNCiogQXV0aG9yOiBuaG9ydG9uIChOb2FoIEhvcnRvbikNCiogU3RhdHVzOiBPcGVu DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpMZXQgbWUgcHJlZmFj ZSB0aGlzIGJ5IHNheWluZyBJIGhhdmUgbm8gbWFycmlhZ2UgdG8gdGhlIGV4YWN0IGtleXdvcmQg bmFtZSBvZiBgJnJldHVybmAuDQoNCiMgUHJvYmxlbQ0KSXQgaXMgdmVyeSBjb21tb24gdG8gaGF2 ZSBhbiBlYXJseSByZXR1cm4gaW4gY29kZSB3aGVyZSB5b3UgZ2V0IHNvbWUgaW5pdGlhbCB2YWx1 ZSBhbmQgcmV0dXJuIGl0IGlmIGl0IGlzIG5vbi1udWxsLiBpLmUuDQoNCmBgYA0KcmV0dXJuIG15 X2NhbGN1bGF0aW9uKGlucHV0X2EsIGlucHV0X2IpIGlmIG15X2NhbGN1bGF0aW9uKGlucHV0X2Es IGlucHV0X2IpDQpgYGANCg0KVGhhdCBmb3JtIG9uIGl0cyBvd24gaXMgdmVyYm9zZSBhbmQgb25l IHdoZXJlIHlvdSBuZWVkIHRvIGxvb2sgYXQgaXQgZm9yIGEgbW9tZW50IHRvIGNvbmZpcm0gaXQg aXMgdGhlIHNhbWUgY29kZSBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgaWYuDQoNCklmIGBteV9jYWxj dWxhdGlvbmAgaXMgbm9uLXRyaXZpYWwgYXQgYWxsLCBpdCBub3JtYWxseSBnZXRzIHR1cm5lZCBp bnRvIHNvbWV0aGluZyB3aXRoIGEgdmFyaWFibGU6DQoNCmBgYA0KbXlfY2FsYyA9IG15X2NhbGN1 bGF0aW9uKGlucHV0X2EsIGlucHV0X2IpDQpyZXR1cm4gbXlfY2FsYyBpZiBteV9jYWxjDQpgYGAN Cg0KVGhhdCBpcyBub3cgdHdvIGxpbmVzLiBUaGUgd29yc2Ugc2NlbmFyaW8sIGhvd2V2ZXIsIGlz IGlmIHRoZSB1c2VyIGRpZCBub3QgYm90aGVyIGRvaW5nIHRoYXQgYW5kIG15X2NhbGN1bGF0aW9u IHR1cm5lZCBvdXQgdG8gYmUgZXhwZW5zaXZlIChhbmQgdGhleSBkaWQgbm90IGtub3cgaXQpLg0K DQojIFByb3Bvc2FsDQpJIHByb3Bvc2UgYSBzeW50YXggb2YgYCZyZXR1cm4gbXlfY2FsY3VsYXRp b24oaW5wdXRfYSwgaW5wdXRfYilgIHdoZXJlIGl0IHdpbGwgZXZhbHVhdGUgdGhlIGFyZ3VtZW50 IGFuZCByZXR1cm4gaXQgYXMgdGhlIHJlc3VsdCBvZiB0aGUgbWV0aG9kIGlmIGl0IGlzIG5vbi1u aWwsIG90aGVyd2lzZSBpdCB3aWxsIGNvbnRpbnVlIG9uLg0KDQojIEFsdGVybmF0aXZlcw0KIyMg RG8gTm90aGluZw0KVGhlcmUgaXMgbm8gd2F5IHRvIHdvcmsgYXJvdW5kIHRoaXMgd2l0aCByb2xs aW5nIHlvdXIgb3duIG1ldGhvZHMuIFlvdSBjYW4ndCBtYWtlIGEgYHJldHVybmlmYCBtZXRob2Qg b3Igc29tZXRoaW5nIHlvdXJzZWxmIHNpbmNlIHlvdSBjYW4ndCBkbyBhIHJldHVybiBpbiB0aGUg Y2FsbGVyJ3Mgc2NvcGUuDQoNCiMjIERpZmZlcmVudCBOYW1lDQoNClRoZSBiZXN0IG90aGVyIG5h bWUgSSBzYXcgd2VyZSBwZXJtdXRhdGlvbnMgb2YgYHJldHVybmlmYC4gVGhlIGJpZ2dlc3QgaXNz dWUgSSBzZWUgaXMgdGhlIHNpbWlsYXJpdHkgb2YgdGhlIGZvbGxvd2luZyB0d28gc3RhdGVtZW50 czoNCg0KYGBgDQpyZXR1cm4gaWYgZm9vDQpyZXR1cm5pZiBmb28NCmBgYA0KDQpUaG9zZSBhcmUg b2J2aW91c2x5IHZlcnksIHZlcnkgZGlmZmVyZW50IHN0YXRlbWVudHMsIGJ1dCBhcmUgc29tZXdo YXQgc2ltaWxhci4gSG93ZXZlciwgdGhpbmdzIGxpa2UgdGhpcyBhcmUgY29tbW9uLCBhbmQgdGhl IGNvZGUgaXMgc3RpbGwgcXVpdGUgZGlzdGluY3Qgb24gdGhvc2UsIHNvIEkgdGhpbmsgaXQgaXMg YWNjZXB0YWJsZS4NCg0KVWx0aW1hdGVseSwgdGhpcyBmZWVscyBzbyBzaW1pbGFyIHRvIHRoZSBz YWZlIG5hdmlnYXRvciB0aGF0IHVzaW5nIGAmYCBpbiB0aGlzIGNvbnRleHQgZmVlbHMgYXBwcm9w cmlhdGUuDQoNClRoYW5rIHlvdSBhbGwgZm9yIHlvdXIgY29uc2lkZXJhdGlvbi4NCg0KDQoNCg0K DQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBydWJ5 LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBy dWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0cHM6 Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcu b3JnLwo=