[ruby-core:93383] [Ruby trunk Feature#15865] `<expr> in <pattern>` expression
From:
pvande@...
Date:
2019-06-27 06:23:51 UTC
List:
ruby-core #93383
SXNzdWUgIzE1ODY1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgcHZhbmRlIChQaWV0ZXIgdmFuIGRlIEJy dWdnZW4pLg0KDQoNCm1hbWUgKFl1c3VrZSBFbmRvaCkgd3JvdGU6DQo+IEknZCBsaWtlIHRvIGF2 b2lkIHRvIGRpc2N1c3MgYSBjb21tb24gdG9waWMgYmV0d2VlbiBvbmUtbGluZSBhbmQgYGNhc2Uv aW5gIGluIHRoaXMgcGFydGljdWxhciB0aWNrZXQuDQoNCkFncmVlZDsgdGhlIGdpc3QgZGlzY3Vz c2VzIHRoZSBlbnRpcmV0eSBvZiB0aGUgZmVhdHVyZS1zcGFjZSwgYnV0IHRoZSBjb252ZXJzYXRp b24gaW4gdGhpcyB0aWNrZXQgc2hvdWxkIGJlIGNvbnN0cmFpbmVkIHRvIGp1c3QgdGhlIG9uZS1s aW5lIHBhdHRlcm4gbWF0Y2hpbmcgcHJvcG9zYWwuDQoNCj4gWW91IGhhdmUgdGhyZWUgcG9pbnRz Lg0KPiANCj4gMS4gTWF0Y2hpbmcgaXMgbm90IHN0cmljdC4NCj4gMi4gVGhlIHByb3Bvc2VkIDxt YXRjaC1vcD4gaXMgYGluYC4NCj4gMy4gVGhlIHBhdHRlcm4gaXMgb24gdGhlIFJIUy4NCj4gDQo+ IFRoZSBkZXNpZ24gY2hvaWNlIG9mICgxKSBpcyBkb25lIGluIGBjYXNlL2luYCBzdGF0ZW1lbnQu ICBUaGUgb25lLWxpbmUgdmVyc2lvbiBhbmQgYGNhc2UvaW5gIHNob3VsZCBzaGFyZSB0aGUgc2Vt YW50aWNzIG9mIGVhY2ggcGF0dGVybi4gIEl0IGlzIHVuYXJndWFibHkgdG9vIGNvbmZ1c2luZyBp ZiB0aGV5IGhhdmUgZGlmZmVyZW50IHNlbWFudGljcy4gIFNvLCBJIGxpa2Ugbm90IHRvIGRpc2N1 c3MgdGhpcyBpc3N1ZSBpbiB0aGlzIHRpY2tldC4NCg0KQWdyZWVkLiAgSSB3b3VsZCBleHBlY3Qg dGhlIHNlbWFudGljcyB0byBtYXRjaCwgZWl0aGVyIHdheS4NCg0KPiBTbywgeW91IGhhdmUgdHdv IGNvbmNlcm5zIGZvciBteSBwcm9wb3NhbCBhYm91dCBvbmUtbGluZSBwYXR0ZXJuIG1hdGNoaW5n IHN5bnRheDogKDIpIHRoZSBrZXl3b3JkIGBpbmAgYW5kICgzKSB0aGUgd29yZCBvcmRlci4gIEkg dW5kZXJzdGFuZCB0aGF0IGl0IGlzIHVubmF0dXJhbCBpbiBFbmdsaXNoLiAgKEhvbmVzdGx5LCBp dCBpcyBtYXRoZW1hdGljYWxseS9sb2dpY2FsbHkgY29ycmVjdCBhcyB5b3Ugc2FpZCwgc28gaXQg d29ya3MgZm9yIG1lLCBhIG5vbi1uYXRpdmUsIHRob3VnaC4pIA0KDQpUaGUgVHdpdHRlciBwb3N0 IGZyb20ga28xIHRoYXQgSSB3YXMgcmVzcG9uZGluZyB0byB3YXMgc3BlY2lmaWNhbGx5IHNvbGlj aXRpbmcgZmVlZGJhY2sgYWJvdXQgdGhlIHN5bnRheDoNCg0KRnJvbSBodHRwczovL3R3aXR0ZXIu Y29tL19rbzEvc3RhdHVzLzExMzU3ODg4NDQ5MTYxOTUzMjk6DQo+IFdlIHdhbnQgdG8gYXNrIEVu Z2xpc2ggc3BlYWtlciBhYm91dCB0aGlzIHByb3Bvc2FsLiBEbyB5b3UgZmVlbCBuYXR1cmFsIG9u IHRoaXMgc3ludGF4Pw0KDQpUbyBiZSBjbGVhciDigJMgSSBkbyBub3QuICBJJ20gaGFwcHkgdG8g ZWxhYm9yYXRlIG9uIGV4YWN0bHkgKndoeSogbm90LCBidXQg4oCTIGFzIHlvdSBwb2ludCBvdXQg 4oCTwqBteSBvYmplY3Rpb25zIGFyZSBub3QgcHJpbmNpcGFsbHkgdG8gdGhlIGlubGluZSBzeW50 YXguDQoNCj4gSG93ZXZlciwgSSBiZWxpZXZlIHRoYXQgdGhpcyBpcyB0aGUgYmVzdCBjaG9pY2Ug Zm9yIHNvbWUgcmVhc29uczoNCj4NCj4gKiBUaGUgYXBwZWFyYW5jZSBvZiBgY2FzZS9pbmAgc3Rh dGVtZW50IGlzIGBjYXNlIDxleHByPjsgaW4gPHBhdHRlcm4+OyAuLi4gZW5kYC4gIEluIGEgc2Vu c2UsIHRoZSBrZXl3b3JkIGBpbmAgYW5kIHRoZSBvcmRlciB0aGF0IGA8cGF0dGVybj5gIGZvbGxv d3MgdGhlIGtleXdvcmQgYGluYCBhcmUgYWxyZWFkeSBlc3RhYmxpc2hlZCwgYXMgbG9uZyBhcyB3 ZSBhY2NlcHQgYGNhc2UvaW5gIHN0YXRlbWVudC4NCg0KSSBhZ3JlZSwgYW5kIEkgaGF2ZSBwb3N0 ZWQgdGhlIHNhbWUgZ2lzdCBpbiB0aGUgb3RoZXIgdGlja2V0IChhcyB5b3Ugc3VnZ2VzdGVkKSBp biB0aGUgaG9wZXMgb2Ygc3Bhcmtpbmcgc2ltaWxhciBkaXNjdXNzaW9uIHRoZXJlLg0KDQo+ICog VGhlIG9yZGVyIGA8cGF0dGVybj4gPG1hdGNoLW9wPiA8ZXhwcj5gIGlzIHZlcnkgZGlmZmljdWx0 IChvciBtYXliZSBpbXBvc3NpYmxlPykgdG8gaW1wbGVtZW50IHBhcnNpbmcgcnVsZXMuICBQZXJo YXBzIHdlIG5lZWQgdG8gdXNlIGA8cGF0dGVybi1tYXJrZXI+IDxwYXR0ZXJuPiA8bWF0Y2gtb3A+ IDxleHByPmAsIGJ1dCBpdCBpcyB2ZXJ5IHRvdWdoIHRvIGFncmVlIHdpdGggc3ltYm9sIG9yIGtl eXdvcmQgb2YgYDxwYXR0ZXJuLW1hcmtlcj5gIGFuZCBgPG1hdGNoLW9wPmAuDQoNCkkgY2FuJ3Qg c3BlYWsgZGlyZWN0bHkgdG8gdGhlIHBhcnNpbmcgZGlmZmljdWx0eS4gIEZyb20gdGhlIG91dHNp ZGUsIGl0ICpsb29rcyogbGlrZSBhIGNvbWJpbmF0aW9uIG9mIGRlc3RydWN0dXJpbmcgYXNzaWdu bWVudCAod2hpY2ggZGVhbHMgd2l0aCBtdWx0aXBsZSBMSFMgYXJndW1lbnRzKSwgQXJyYXkgYW5k IEhhc2ggbGl0ZXJhbHMsIGFuZCBtZXRob2QgYXJndW1lbnRzIChlLmcuIHJlcXVpcmVkIEhhc2gg a2V5cywga2V5d29yZCBzcGxhdHMpLiAgVGhlIHByaW1hcnkgZGlmZmljdWx0eSwgdGhlbiwgd291 bGQgc2VlbSB0byBjb21lIGZyb20gbm90IGtub3dpbmcgKGUuZy4pIGlmIHRoZSBtYWxmb3JtZWQg SGFzaCB5b3UganVzdCBwYXJzZWQgd2FzIGEgKnBhdHRlcm4qIG9yIGEgKnN5bnRheCBlcnJvciog dW50aWwgeW91IGtub3cgd2hldGhlciBvciBub3QgaXQncyBmb2xsb3dlZCBieSBgPG1hdGNoLW9w PmAuDQogDQo+IFlvdSBjYW4gZGlzY3VzcyB0aGUgZ3JhbmQgZGVzaWduIG9mIHBhdHRlcm4gbWF0 Y2hpbmcgYW5kIHRoZSBzeW50YXggb2YgYGNhc2UvaW5gIHN0YXRlbWVudCBpbiAjMTQ5MTIuICBJ ZiB0aGUgZ3JhbmQgZGVzaWduIGlzIG92ZXJ0dXJuZWQsIG15IHByb3Bvc2FsIHdpbGwgbmVlZCB0 byBjaGFuZ2UgZHJhc3RpY2FsbHkuICAoQnV0IGluIHNob3J0LCBJIHJlc3BlY3QgdGhlIGRlc2ln biBkZWNpc2lvbi4gIEknbSBub3QgZnVsbHkgc2F0aXNmaWVkIHdpdGggdGhlIHN5bnRheCwgYnV0 IHdlIHNwZW50IHZlcnkgbG9uZyB0aW1lIHRvIGRpc2N1c3Mgd2hhdCBrZXl3b3JkIGlzIHN1aXRh YmxlIGFuZCBmZWFzaWJsZSwgYW5kIGZpbmFsbHkgY2hvc2UgdGhlIGRlc2lnbiBpbmNsdWRpbmcg dGhlIGtleXdvcmQgYGluYC4pDQoNCk9uY2UgYWdhaW4sIEkgYWdyZWUuICBJdCBpcyBjb3JyZWN0 IGZvciB0aGlzIHN5bnRheCB0byBtaXJyb3IgdGhlIGJsb2NrIGZvcm0sIGFuZCBJIGhhdmUgbm90 IHRyaWVkIHRvIGltcGx5IG90aGVyd2lzZS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTU4NjU6IGA8ZXhwcj4gaW4gPHBhdHRlcm4+YCBleHBy ZXNzaW9uDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTU4NjUjY2hhbmdlLTc4 OTA2DQoNCiogQXV0aG9yOiBtYW1lIChZdXN1a2UgRW5kb2gpDQoqIFN0YXR1czogT3Blbg0KKiBQ cmlvcml0eTogTm9ybWFsDQoqIEFzc2lnbmVlOiBtYXR6IChZdWtpaGlybyBNYXRzdW1vdG8pDQoq IFRhcmdldCB2ZXJzaW9uOiANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCkhvdyBhYm91dCBhZGRpbmcgYSBzeW50YXggZm9yIG9uZS1saW5lIHBhdHRlcm4gbWF0Y2hp bmc6IGA8ZXhwcj4gaW4gPHBhdHRlcm4+YCA/DQoNCmBgYA0KWzEsIDIsIDNdIGluIHgsIHksIHog Iz0+IHRydWUgKHdpdGggYXNzaWduaW5nIDEgdG8geCwgMiB0byB5LCBhbmQgMyB0byB6KQ0KWzEs IDIsIDNdIGluIDEsIDIsIDQgIz0+IGZhbHNlDQpgYGANCg0KTW9yZSByZWFsaXN0aWMgZXhhbXBs ZToNCg0KYGBgDQpqc29uID0gew0KICBuYW1lOiAia28xIiwNCiAgYWdlOiAzOSwNCiAgYWRkcmVz czogeyBwb3N0YWw6IDEyMywgY2l0eTogIlRhaXRvLWt1IiB9DQp9DQoNCmlmIGpzb24gaW4geyBu YW1lOiwgYWdlOiAoMjAuLiksIGFkZHJlc3M6IHsgY2l0eTogIlRhaXRvLWt1IiB9IH0NCiAgcCBu YW1lICM9PiAia28xIg0KZWxzZQ0KICByYWlzZSAid3JvbmcgZm9ybWF0Ig0KZW5kDQpgYGANCg0K SXQgaXMgc2ltcGxlciBhbmQgbW9yZSBjb21wb3NhYmxlIHRoYW4gImNhc2UuLi5pbiIgd2hlbiBv bmx5IG9uZSAiaW4iIGNsYXVzZSBpcyBuZWVkZWQuICBJIHRoaW5rIHRoYXQgaW4gUnVieSBhIHBh dHRlcm4gbWF0Y2hpbmcgd291bGQgYmUgb2Z0ZW4gdXNlZCBmb3IgImZvcm1hdC1jaGVja2luZyIs IHRvIGNoZWNrIGEgc3RydWN0dXJlIG9mIGRhdGEsIGFuZCB0aGlzIHVzZSBjYXNlIHdvdWxkIHVz dWFsbHkgcmVxdWlyZSBvbmx5IG9uZSBjbGF1c2UuICBUaGlzIGlzIHRoZSBtYWluIHJhdGlvbmFs ZSBmb3IgdGhlIHN5bnRheCBJIHByb3Bvc2UuDQoNCkFkZGl0aW9uYWwgdHdvIHNtYWxsIHJhdGlv bmFsZXM6DQoNCiogSXQgbWF5IGJlIHVzZWQgYXMgYSBraW5kIG9mICJyaWdodCBhc3NpZ25tZW50 IjogYDEgKyAxIGluIHhgIGJlaGF2ZXMgbGlrZSBgeCA9IDEgKyAxYC4gIEl0IHJldHVybnMgdHJ1 ZSBpbnN0ZWFkIG9mIDIsIHRob3VnaC4NCiogVGhlcmUgYXJlIHNvbWUgYXJndW1lbnRzIGFib3V0 IHRoZSBzeW50YXggImNhc2UuLi5pbiIuICBCdXQgaWYgd2UgaGF2ZSBgPGV4cHI+IGluIDxwYXR0 ZXJuPmAsICJjYXNlLi4uaW4iIGNhbiBiZSBjb25zaWRlcmVkIGFzIGEgc3ludGFjdGljIHN1Z2Fy IHRoYXQgaXMgdXNlZnVsIGZvciBtdWx0aXBsZS1jbGF1c2UgY2FzZXMsIGFuZCBsb29rcyBtb3Jl IG5hdHVyYWwgdG8gbWUuDQoNClRoZXJlIGFyZSB0d28gcG9pbnRzIEkgc2hvdWxkIG5vdGU6DQoN CiogYDxleHByPiBpbiA8cGF0dGVybj5gIGlzIGFuIGV4cHJlc3Npb24gbGlrZSBgPGV4cHI+IGFu ZCA8ZXhwcj5gLCBzbyB3ZSBjYW5ub3Qgd3JpdGUgaXQgYXMgYW4gYXJndW1lbnQ6IGBmb28oMSBp biAxKWAgY2F1c2VzIFN5bnRheEVycm9yLiAgWW91IG5lZWQgdG8gd3JpdGUgYGZvbygoMSBpbiAx KSlgIGFzIGxpa2UgYGZvbygoMSBhbmQgMSkpYC4gIEkgdGhpbmsgaXQgaXMgaW1wb3NzaWJsZSB0 byBpbXBsZW1lbnQuDQoqIEluY29tcGxldGUgcGF0dGVybiBtYXRjaGluZyBhbHNvIHJld3JpdGVz IHZhcmlhYmxlczogYFsxLCAyLCAzXSBpbiB4LCA0MiwgemAgd2lsbCB3cml0ZSAxIHRvIHRoZSB2 YXJpYWJsZSAieCIuICBUaGlzIGJlaGF2aW9yIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50ICJj YXNlLi4uaW4iLg0KDQpOb2J1IHdyb3RlIGEgcGF0Y2g6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub2J1 L3J1YnkvcHVsbC9uZXcvZmVhdHVyZS9leHByLWluLXBhdHRlcm4NCg0KDQoNCi0tIA0KaHR0cHM6 Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJl cXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1 YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=