[ruby-core:109498] [Ruby master Feature#18368] Range#step semantics for non-Numeric ranges
From:
"Eregon (Benoit Daloze)" <noreply@...>
Date:
2022-08-16 15:03:27 UTC
List:
ruby-core #109498
SXNzdWUgIzE4MzY4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4K CgpJTUhPIDIpIGlzIHRoZSBiZXN0LiBJIHRoaW5rIHRyeWluZyB0byBwcmV2ZW50IHRoZSAidW5k ZXNpcmFibGUgYmVoYXZpb3IiIGlzIHRvbyBhcnRpZmljaWFsLgpBbHNvIHRoYXQgYmVoYXZpb3Ig c2VlbXMgaW50dWl0aXZlIGFuZCBzaW1wbGUgd2hlbiBrbm93aW5nIGArYCBpcyB1c2VkLgpTb21l b25lIG1pZ2h0IGV2ZW4gdXNlIHRoYXQgYXJyYXkgZXhhbXBsZSBpbiBwcmFjdGljZSAoZS5nLiwg Zm9yIHNvbWUgaW5pdGlhbGl6YXRpb24gY29kZSBvciBpbml0aWFsIHZhbHVlIG9mIGEgY2FjaGUp LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJlICMxODM2 ODogUmFuZ2Ujc3RlcCBzZW1hbnRpY3MgZm9yIG5vbi1OdW1lcmljIHJhbmdlcwpodHRwczovL2J1 Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTgzNjgjY2hhbmdlLTk4NjY2CgoqIEF1dGhvcjogenZl cm9rIChWaWN0b3IgU2hlcGVsZXYpCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6IE5vcm1hbAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkkgYW0gc29ycnkgaWYgdGhl IHF1ZXN0aW9uIGhhZCBhbHJlYWR5IGJlZW4gZGlzY3Vzc2VkLCBjYW4ndCBmaW5kIHRoZSByZWxl dmFudCB0b3BpYy4KCiJJbnR1aXRpdmVseSIsIHRoaXMgbG9va3MgKGZvciBtZSkgbGlrZSBhIG1l YW5pbmdmdWwgc3RhdGVtZW50OgoKYGBgcnVieQooVGltZS5wYXJzZSgnMjAyMS0xMi0wMScpLi5U aW1lLnBhcnNlKCcyMDIxLTEyLTI0JykpLnN0ZXAoMS5kYXkpLnRvX2EKIyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eIG9yIGp1c3Qg MjQqNjAqNjAKYGBgClVuZm9ydHVuYXRlbHksIGl0IGRvZXNuJ3Qgd29yayB3aXRoICJUeXBlRXJy b3IgKGNhbid0IGl0ZXJhdGUgZnJvbSBUaW1lKSIuCkluaXRpYWxseSBpdCBsb29rZWQgbGlrZSBh IGJ1ZyBmb3IgbWUsIGJ1dCBhZnRlciBkaWdnaW5nIGEgYml0IGludG8gY29kZS9kb2NzLCBJIHVu ZGVyc3Rvb2QgdGhhdCBgUmFuZ2Ujc3RlcGAgaGFzIGFuIG9kZCBzZW1hbnRpY3Mgb2YgImFkdmFu Y2UgdGhlIGJlZ2luIE4gdGltZXMgd2l0aCBgI3N1Y2NgLCBhbmQgeWllbGQgdGhlIHJlc3VsdCIs IHdpdGggTiBiZWluZyBhbHdheXMgaW50ZWdlcjoKYGBgcnVieQooJ2EnLi4neicpLnN0ZXAoMyku Zmlyc3QoNSkKIyA9PiBbImEiLCAiZCIsICJnIiwgImoiLCAibSJdCmBgYAoKVGhlIGZhY3QgdGhh dCBzZW1hbnRpYyBpcyAib2RkIiBpcyBjb25maXJtZWQgYnkgdGhlIGZhY3QgdGhhdCBmb3IgRmxv YXQgaXQgaXMgcmVkZWZpbmVkIHRvIGRvIHdoYXQgSSAiaW50dWl0aXZlbHkiIGV4cGVjdGVkOgpg YGBydWJ5CigxLjAuLjcuMCkuc3RlcCgwLjMpLmZpcnN0KDUpCiMgPT4gWzEuMCwgMS4zLCAxLjYs IDEuOSwgMi4yXSAKYGBgCihMaWtlIHdpdGggW2BSYW5nZSM9PT1gIHNvbWUgdGltZSBhZ29dKGh0 dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNDU3NSksIEkgYmVsaWV2ZSB0aGF0IHRv IGJlIGEgc3Ryb25nIHByb29mIG9mIHRoZSB3cm9uZyBnZW5lcmljIHNlbWFudGljcywgaWYgZm9y IG51bWJlcnMgdGhlIHNlbWFudGljcyBuZWVkZWQgdG8gYmUgcmVkZWZpbmVkIGNvbXBsZXRlbHku KQoKQW5vdGhlciB0aGluZyB0byBub3RlIGlzIHRoYXQgInNraXAgTiBlbGVtZW50cyIgc2VlbSB0 byBiZSByYXRoZXIgImdlbmVyaWNhbGx5IEVudW1lcmFibGUtcmVsYXRlZCIgeWV0IGl0IGlzbid0 IGRlZmluZWQgb24gYEVudW1lcmFibGVgIChiZWNhdXNlIG5vYm9keSBuZWVkcyB0aGlzIHNlbWFu dGljcywgdHlwaWNhbGx5ISkKCkhlbmNlLCB0d28gcXVlc3Rpb25zOgoqIENhbiB3ZSByZWRlZmlu ZSBnZW5lcmljIGBSYW5nZSNzdGVwYCB0byBuZXcgc2VtYW50aWNzIChvZiB1c2luZyBgYmVnaW4g KyBzdGVwYCBpdGVyYXRpdmVseSk/IEl0IGlzIGhhcmQgdG8gaW1hZ2luZSB0aGUgYW1vdW50IG9m IGFjdHVhbCB1c2FnZSBvZiB0aGUgb2xkIGJlaGF2aW9yICh3aXRoIFN0cmluZz8uLiB0byB3aGF0 IGVuZD8pIGluIHRoZSB3aWxkCiogSWYgdGhlIGFuc3dlciBpcyAibm8iLCBjYW4gd2UgZGVmaW5l IGEgbmV3IG1ldGhvZCB3aXRoIG5ldyBzZW1hbnRpY3MsIGxpa2UsIElESywgYFJhbmdlI292ZXIo c3BhbilgPwoKKipVUEQ6KiogTW9yZSBleGFtcGxlcyBvZiB1c2VmdWwgYmVoYXZpb3IgKGl0IGlz IE5PVCBvbmx5IGFib3V0IGNvcmUgYFRpbWVgIGNsYXNzKToKCmBgYHJ1YnkKcmVxdWlyZSAnYWN0 aXZlX3N1cHBvcnQvYWxsJwoKKDEubWludXRlLi4yMC5taW51dGVzKS5zdGVwKDIubWludXRlcyku dG9fYQojPT4gWzEgbWludXRlLCAzIG1pbnV0ZXMsIDUgbWludXRlcywgNyBtaW51dGVzLCA5IG1p bnV0ZXMsIDExIG1pbnV0ZXMsIDEzIG1pbnV0ZXMsIDE1IG1pbnV0ZXMsIDE3IG1pbnV0ZXMsIDE5 IG1pbnV0ZXNdCgpyZXF1aXJlICd0b2QnCgooVG9kOjpUaW1lT2ZEYXkucGFyc2UoIjhhbSIpLi5U b2Q6OlRpbWVPZkRheS5wYXJzZSgiMTBhbSIpKS5zdGVwKDMwLm1pbnV0ZXMpLnRvX2EgCiM9PiBb IzxUb2Q6OlRpbWVPZkRheSAwODowMDowMD4sICM8VG9kOjpUaW1lT2ZEYXkgMDg6MzA6MDA+LCAj PFRvZDo6VGltZU9mRGF5IDA5OjAwOjAwPiwgIzxUb2Q6OlRpbWVPZkRheSAwOTozMDowMD4sICM8 VG9kOjpUaW1lT2ZEYXkgMTA6MDA6MDA+XQoKCnJlcXVpcmUgJ21hdHJpeCcKKFZlY3RvclsxLCAy LCAzXS4uKS5zdGVwKFZlY3RvclsxLCAxLCAxXSkudGFrZSgzKQojPT4gW1ZlY3RvclsxLCAyLCAz XSwgVmVjdG9yWzIsIDMsIDRdLCBWZWN0b3JbMywgNCwgNV1dCgpyZXF1aXJlICd1bml0d2lzZScK KFVuaXR3aXNlKDAsICdrbScpLi5Vbml0d2lzZSgxLCAna20nKSkuc3RlcChVbml0d2lzZSgxMDAs ICdtJykpLm1hcCgmOnRvX3MpCiM9PiBbIjAga20iLCAiMS8xMCBrbSIsICIxLzUga20iLCAiMy8x MCBrbSIsICIyLzUga20iLCAiMC41IGttIiwgIjMvNSBrbSIsICI3LzEwIGttIiwgIjQvNSBrbSIs ICI5LzEwIGttIiwgIjEga20iXQpgYGAKCgoqKlVQRDoqKiBSZXNwb25kaW5nIHRvIGRpc2N1c3Np b24gcG9pbnRzOgoKKipROioqIE1hdHogaXMgY29uY2VybmVkIHRoYXQgdGhlIHByb3Bvc2VkIHNp bXBsZSBkZWZpbml0aW9uIHdpbGwgYmUgY29uZnVzaW5nIHdpdGggdGhlIGNsYXNzZXMgd2hlcmUg YCtgIGlzIHJlZGVmaW5lZCBhcyBjb25jYXRlbmF0aW9uLgoKKipBOioqIEkgYmVsaWV2ZSB0aGF0 IHNpbXBsaWNpdHkgb2Ygc2VtYW50aWNzIGFuZCBlYXNlIG9mIGV4cGxhaW5pbmcgKCJpdCBqdXN0 IHVzZXMgYCtgIHVuZGVybmVhdGgsIHdoYXRldmVyIGArYCBkb2VzLCB3aWxsIGJlIHBlcmZvcm1l ZCIpIHdpbGwgbWFrZSB0aGUgY29uZnVzaW9uIG1pbmltYWwuCgoqKlE6KiogV2h5IG5vdCBpbnRy b2R1Y2UgbmV3IEFQSSByZXF1aXJlbWVudCAobGlrZSAiY2xhc3Mgb2YgcmFuZ2UncyBgYmVnaW5g IHNob3VsZCBpbXBsZW1lbnQgYGluY3JlbWVudGAgbWV0aG9kLCBhbmQgdGhlbiBpdCB3aWxsIGJl IHVzZWQgaW4gYHN0ZXBgKQoKKipBOioqIHJlcXVpcmUgKmV2ZXJ5KiBnZW0gYXV0aG9yIHRvIGNo YW5nZSAqZXZlcnkqIG9mIHRoZWlyIG9iamVjdHMnIGJlaGF2aW9yLiBGb3IgdGhhdCwgdGhleSBz aG91bGQgYmUgYXdhcmUgb2YgdGhlIGNoYW5nZSwgY29uc2lkZXIgaXQgaW1wb3J0YW50IGVub3Vn aCB0byBjYXJlLCBjbGVhcmx5IHVuZGVyc3RhbmQgdGhlIG5lY2Vzc2FyeSBzZW1hbnRpY3Mgb2Yg aW1wbGVtZW50YXRpb24sIGhhdmUgYSByZXNvdXJjZSB0byByZWxlYXNlIGEgbmV3IHZlcnNpb24u Li4gVGhlbiBhbGwgdXNlcnMgb2YgYWxsIHN1Y2ggZ2VtcyB3b3VsZCBiZSByZXF1aXJlZCB0byB1 cGdyYWRlLiBUaGUgZmVhdHVyZSB3b3VsZCBiZSBET0EgKGRlYWQtb24tYXJyaXZhbCkuCgpUaGUg dHdvIGFsdGVybmF0aXZlIHdheXMgSSBhbSBzdWdnZXN0aW5nOiBjaGFuZ2UgdGhlIGJlaGF2aW9y IG9mIGAjc3RlcGAgb3IgaW50cm9kdWNlIGEgbmV3IG1ldGhvZCB3aXRoIGRlc2lyZWQgYmVoYXZp b3I6CjEuIEVhc3kgdG8gZXhwbGFpbiBhbmQgYW5ub3VuY2UKMi4gUmVxdWlyZSBubyBvdGhlciBj b2RlIGNoYW5nZXMgdG8gaW1tZWRpYXRlbHkgYmVjb21lIHVzZWZ1bAozLiBXaXRoIHNvbWV0aGlu ZyBsaWtlIFtiYWNrcG9ydHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjYW5kcmUvYmFja3BvcnRz KSBvciBbcnVieS1uZXh0XShodHRwczovL2dpdGh1Yi5jb20vcnVieS1uZXh0L3J1YnktbmV4dCkg ZWFzeSB0byBzdGFydCB1c2luZyBldmVuIGluIG9sZGVyIFJ1YnkgdmVyc2lvbiwgbWFraW5nIHRo ZSBjb2RlIG1vcmUgZXhwcmVzc2l2ZSBldmVuIGJlZm9yZSBpdCB3b3VsZCBiZSBwb3NzaWJsZSBm b3Igc29tZSBwYXJ0aWN1bGFyIGFwcC9jb21wbnkgdG8gdXBncmFkZSB0byAoc2F5KSAzLjIKCkFs bCBleGFtcGxlcyBvZiBiZWhhdmlvciBmcm9tIHRoZSBjb2RlIGFib3ZlIGFyZSByZWFsIGBpcmJg IG91dHB1dCB3aXRoIG1vbmtleS1wYXRjaGVkIGBSYW5nZSNzdGVwYCwgZGVtb25zdHJhdGluZyBo b3cgbGl0dGxlIGNoYW5nZSB3aWxsIGJlIG5lZWRlZCB0byBjb2RlIG91dHNpZGUgb2YgdGhlIGBS YW5nZWAuCgoKCi0tIApodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8KClVuc3Vic2NyaWJlOiA8 bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmli ZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1 YnktY29yZT4K