[ruby-core:93029] [Ruby trunk Feature#14912] Introduce pattern matching syntax
From:
mame@...
Date:
2019-06-09 00:43:25 UTC
List:
ruby-core #93029
SXNzdWUgIzE0OTEyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWFtZSAoWXVzdWtlIEVuZG9oKS4NCg0K DQpAcGl0ci5jaA0KUGxlYXNlIGJyaWVmbHkgc3VtbWFyaXplIHlvdXIgcHJvcG9zYWwgZmlyc3Qu ICBVc2UgY2FzZSBpcyBpbXBvcnRhbnQsIGJ1dCBleHBsYWluaW5nIGEgcHJvcG9zYWwgYnkgdXNl IGNhc2UgaXMgZGlmZmljdWx0IHRvIHJlYWQgKHVubGVzcyB0aGUgdXNlIGNhc2UgaXMgcmVhbGx5 IHNpbXBsZSkuDQoNCkknbSB1bnN1cmUgYnV0IEkgZ3Vlc3MgeW91ciBwcm9wb3NhbDoNCg0KMSkg QWRkIGEgc3ludGFjdGljIHN1Z2FyOiBgY2FzZSBpbiA8cGF0dGVybj47IDxleHByPjsgLi4uOyBl bmRgIOKGkiBgLT4geCB7IGNhc2UgeCBpbiA8cGF0dGVybj47IDxleHByPjsgLi4uOyBlbmQgfWAN CjIpIEFsbG93IGhhc2ggcm9ja2V0IHBhdHRlcm46IGB7IDxwYXR0ZXJuPiA9PiA8cGF0dGVybj4g fWANCjMpIEFkZCBhIHN5bnRhY3RpYyBzdWdhcjogYGluIDxwYXR0ZXJuPiB7IDxleHByPiB9YCDi hpIgYC0+IHggeyBjYXNlIHggaW4gPHBhdHRlcm4+OyA8ZXhwcj47IGVuZCB9YA0KDQpUaGUgZm9s bG93aW5nIGlzIG15IG9waW5pb24uDQoNCg0KSSBkb24ndCBsaWtlICgxKS4gIEl0IHdvdWxkIGJl IG1vcmUgcmVhZGFibGUgdG8gd3JpdGUgaXQgZXhwbGljaXRseToNCg0KYGBgDQpkYXRhLnBvcF9h bGwgZG8gfGVudHJ5fA0KICBjYXNlIGVudHJ5DQogIGluIFsiZmF0YWwiLCBtZXNzYWdlXQ0KICAg IGRlYWxfd2l0aF9mYXRhbCBtZXNzYWdlDQogIGluIFsiZXJyb3IiLCBtZXNzYWdlXQ0KICAgIGRl YWxfd2l0aF9lcnJvciBtZXNzYWdlDQogIGVuZA0KZW5kDQpgYGANCg0KDQpXZSBuZWVkIHRvIGJl IGNhcmVmdWwgYWJvdXQgKDIpLiAgSWYgYD0+YCBwYXR0ZXJuIGlzIGFsbG93ZWQsIHdlIGNhbiB3 cml0ZSBhIHZhcmlhYmxlIGFzIGEga2V5LCBidXQgaXQgYnJpbmdzIGFtYmlndWl0eS4NCg0KYGBg DQpoID0geyAiZm9vIiA9PiAxLCAiYmFyIiA9PiAxIH0NCg0KY2FzZSBoDQppbiB7IHggPT4gMSB9 DQogIHAgeCAjPT4gImZvbyI/ICJiYXIiPw0KZW5kDQpgYGANCg0KSSB0aGluayB0aGUgY3VycmVu dCBkZXNpZ24gKGFsbG93aW5nIG9ubHkgc3ltYm9sIGtleXMpIGlzIHJlYXNvbmFibGUuDQoNCg0K KDMpIHdpbGwgaW50cm9kdWNlIHN5bnRhY3RpYyBhbWJpZ3VpdHkuICBDb25zaWRlciB0aGUgZm9s bG93aW5nIGV4YW1wbGUuDQoNCmBgYA0KY2FzZSB4DQppbiAxDQogIHt9DQppbiAyDQogIHt9ICAj IElzIHRoaXMgdGhlIHNlY29uZCBwYXR0ZXJuPyAgT3IgaXMgdGhpcyBhIGxhbWJkYT8gIA0KZW5k DQpgYGANCg0KSXQgbG9va3MgbGlrZSB0aGlzIGNhc2Ugc3RhdGVtZW50IGhhcyB0d28gY2xhdXNl cywgYnV0IGBpbiAyIHt9YCAoYSBsYW1iZGEgZXhwcmVzc2lvbiB5b3UgcHJvcG9zZSkgY2FuIGJl IGFsc28gcGFyc2VkLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpGZWF0dXJlICMxNDkxMjogSW50cm9kdWNlIHBhdHRlcm4gbWF0Y2hpbmcgc3ludGF4DQpodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTQ5MTIjY2hhbmdlLTc4NDAzDQoNCiogQXV0 aG9yOiBrdHNqIChLYXp1a2kgVHN1amltb3RvKQ0KKiBTdGF0dXM6IEFzc2lnbmVkDQoqIFByaW9y aXR5OiBOb3JtYWwNCiogQXNzaWduZWU6IGt0c2ogKEthenVraSBUc3VqaW1vdG8pDQoqIFRhcmdl dCB2ZXJzaW9uOiAyLjcNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CkkgcHJvcG9zZSBuZXcgcGF0dGVybiBtYXRjaGluZyBzeW50YXguDQoNCiMgUGF0dGVybiBzeW50 YXgNCkhlcmUncyBhIHN1bW1hcnkgb2YgcGF0dGVybiBzeW50YXguDQoNCmBgYA0KIyBjYXNlIHZl cnNpb24NCmNhc2UgZXhwcg0KaW4gcGF0IFtpZnx1bmxlc3MgY29uZF0NCiAgLi4uDQppbiBwYXQg W2lmfHVubGVzcyBjb25kXQ0KICAuLi4NCmVsc2UNCiAgLi4uDQplbmQNCg0KcGF0OiB2YXIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFZhcmlhYmxl IHBhdHRlcm4uIEl0IG1hdGNoZXMgYW55IHZhbHVlLCBhbmQgYmluZHMgdGhlIHZhcmlhYmxlIG5h bWUgdG8gdGhhdCB2YWx1ZS4NCiAgIHwgbGl0ZXJhbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBWYWx1ZSBwYXR0ZXJuLiBUaGUgcGF0dGVybiBtYXRjaGVz IGFuIG9iamVjdCBzdWNoIHRoYXQgcGF0dGVybiA9PT0gb2JqZWN0Lg0KICAgfCBDb25zdGFudCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERpdHRvLg0KICAg fCB2YXJfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IERpdHRvLiBJdCBpcyBlcXVpdmFsZW50IHRvIHBpbiBvcGVyYXRvciBpbiBFbGl4aXIuDQogICB8 IChwYXQsIC4uLiwgKnZhciwgcGF0LCAuLi4sIGlkOiwgaWQ6IHBhdCwgLi4uLCAqKnZhcikgICMg RGVjb25zdHJ1Y3RpbmcgcGF0dGVybi4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuDQogICB8 IHBhdChwYXQsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg RGl0dG8uIFN5bnRhY3RpYyBzdWdhciBvZiAocGF0LCBwYXQsIC4uLikuDQogICB8IHBhdCwgLi4u ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRGl0dG8uIFlv dSBjYW4gb21pdCB0aGUgcGFyZW50aGVzaXMgKHRvcC1sZXZlbCBvbmx5KS4gDQogICB8IHBhdCB8 IHBhdCB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWx0ZXJu YXRpdmUgcGF0dGVybi4gVGhlIHBhdHRlcm4gbWF0Y2hlcyBpZiBhbnkgb2YgcGF0cyBtYXRjaC4N CiAgIHwgcGF0ID0+IHZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBBcyBwYXR0ZXJuLiBCaW5kIHRoZSB2YXJpYWJsZSB0byB0aGUgdmFsdWUgaWYgcGF0IG1h dGNoLg0KDQojIG9uZS1saW5lciB2ZXJzaW9uDQokKHBhdCwgLi4uKSA9IGV4cHIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRGVjb25zdHJ1Y3RpbmcgcGF0dGVybi4N CmBgYA0KDQpUaGUgcGF0dGVybnMgYXJlIHJ1biBpbiBzZXF1ZW5jZSB1bnRpbCB0aGUgZmlyc3Qg b25lIHRoYXQgbWF0Y2hlcy4NCklmIG5vIHBhdHRlcm4gbWF0Y2hlcyBhbmQgbm8gZWxzZSBjbGF1 c2UsIE5vTWF0Y2hpbmdQYXR0ZXJuRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4NCg0KIyMgRGVj b25zdHJ1Y3RpbmcgcGF0dGVybg0KVGhpcyBpcyBzaW1pbGFyIHRvIEV4dHJhY3RvciBpbiBTY2Fs YS4NCg0KVGhlIHBhdHRlbiBtYXRjaGVzIGlmOg0KDQoqIEFuIG9iamVjdCBoYXZlICNkZWNvbnN0 cnVjdCBtZXRob2QNCiogUmV0dXJuIHZhbHVlIG9mICNkZWNvbnN0cnVjdCBtZXRob2QgbXVzdCBi ZSBBcnJheSBvciBIYXNoLCBhbmQgaXQgbWF0Y2hlcyBzdWIgcGF0dGVybnMgb2YgdGhpcw0KDQpg YGANCmNsYXNzIEFycmF5DQogIGFsaWFzIGRlY29uc3RydWN0IGl0c2VsZg0KZW5kDQoNCmNhc2Ug WzEsIDIsIDMsIGQ6IDQsIGU6IDUsIGY6IDZdDQppbiBhLCAqYiwgYywgZDosIGU6IEludGVnZXIg fCBGbG9hdCA9PiBpLCAqKmYNCiAgcCBhICM9PiAxDQogIHAgYiAjPT4gWzJdDQogIHAgYyAjPT4g Mw0KICBwIGQgIz0+IDQNCiAgcCBpICM9PiA1DQogIHAgZiAjPT4ge2Y6IDZ9DQogIGUgICAjPT4g TmFtZUVycm9yDQplbmQNCmBgYA0KDQpUaGlzIHBhdHRlcm4gY2FuIGJlIHVzZWQgYXMgb25lLWxp bmVyIHZlcnNpb24gbGlrZSBkZXN0cnVjdHVyaW5nIGFzc2lnbm1lbnQuDQoNCmBgYA0KY2xhc3Mg SGFzaA0KICBhbGlhcyBkZWNvbnN0cnVjdCBpdHNlbGYNCmVuZA0KDQokKHg6LCB5OiAoXywgeikp ID0ge3g6IDAsIHk6IFsxLCAyXX0NCnAgeCAjPT4gMA0KcCB6ICM9PiAyDQpgYGANCg0KIyBTYW1w bGUgY29kZQ0KYGBgDQpjbGFzcyBTdHJ1Y3QNCiAgZGVmIGRlY29uc3RydWN0OyBbc2VsZl0gKyB2 YWx1ZXM7IGVuZA0KZW5kDQoNCkEgPSBTdHJ1Y3QubmV3KDphLCA6YikNCmNhc2UgQVswLCAxXQ0K aW4gKEEsIDEsIDEpDQogIDpub3RfbWF0Y2gNCmluIEEoeCwgMSkgIyBTeW50YWN0aWMgc3VnYXIg b2YgYWJvdmUNCiAgcCB4ICM9PiAwDQplbmQNCmBgYA0KDQpgYGANCnJlcXVpcmUgJ2pzb24nDQoN CiQoeDosIHk6IChfLCB6KSkgPSBKU09OLnBhcnNlKCd7IngiOiAwLCAieSI6IFsxLCAyXX0nLCBz eW1ib2xpemVfbmFtZXM6IHRydWUpDQpwIHggIz0+IDANCnAgeiAjPT4gMg0KYGBgDQoNCiMgSW1w bGVtZW50YXRpb24NCiogaHR0cHM6Ly9naXRodWIuY29tL2stdHNqL3J1YnkvdHJlZS9wbTIuNy1w cm90b3R5cGUNCiAgICogVGVzdCBjb2RlOiBodHRwczovL2dpdGh1Yi5jb20vay10c2ovcnVieS9i bG9iL3BtMi43LXByb3RvdHlwZS90ZXN0X3N5bnRheC5yYg0KDQojIERlc2lnbiBwb2xpY3kNCiog S2VlcCBjb21wYXRpYmlsaXR5DQogICAqIERvbid0IGRlZmluZSBuZXcgcmVzZXJ2ZWQgd29yZHMN CiAgICogMCBjb25mbGljdCBpbiBwYXJzZS55LiBJdCBwYXNzZXMgdGVzdC90ZXN0LWFsbA0KKiBC ZSBSdWJ5LWlzaA0KICAgKiBQb3dlcmZ1bCBBcnJheSwgSGFzaCBzdXBwb3J0DQogICAqIEVuY291 cmFnZSBkdWNrIHR5cGluZyBzdHlsZQ0KICAgKiBldGMNCiogT3B0aW1pemUgc3ludGF4IGZvciBt YWpvciB1c2UgY2FzZQ0KICAgKiBZb3UgY2FuIHNlZSBzZXZlcmFsIHJlYWwgdXNlIGNhc2VzIG9m IHBhdHRlcm4gbWF0Y2hpbmcgYXQgZm9sbG93aW5nIGxpbmtzIDopDQogICAgICAqIGh0dHBzOi8v Z2l0aHViLmNvbS9rLXRzai9wb3dlcl9hc3NlcnQvYmxvYi84ZTllMDM5OWEwMzI5MzZlM2UzZjNj MWYwNmUwZDAzODU2NWY4MDQ0L2xpYi9wb3dlcl9hc3NlcnQucmIjTDEwNg0KICAgICAgKiBodHRw czovL2dpdGh1Yi5jb20vay10c2ovcGF0dGVybi1tYXRjaC9uZXR3b3JrL2RlcGVuZGVudHMNCg0K DQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCgpVbnN1YnNjcmliZTogPG1h aWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+ CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5 LWNvcmU+Cg==