[ruby-core:99524] [Ruby master Bug#17105] A single `return` can return to two different places in a proc inside a lambda inside a method
From:
shyouhei@...
Date:
2020-08-09 10:41:20 UTC
List:
ruby-core #99524
SXNzdWUgIzE3MTA1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgc2h5b3VoZWkgKFNoeW91aGVpIFVyYWJl KS4NCg0KDQorMSB0byBAZXJlZ29uIOKAmXMgaW50ZXJwcmV0YXRpb24uICBDdXJyZW50IGJlaGF2 aW91ciBpcyBhdCBsZWFzdCB2ZXJ5IGNyeXB0aWMuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCkJ1ZyAjMTcxMDU6IEEgc2luZ2xlIGByZXR1cm5gIGNhbiByZXR1 cm4gdG8gdHdvIGRpZmZlcmVudCBwbGFjZXMgaW4gYSBwcm9jIGluc2lkZSBhIGxhbWJkYSBpbnNp ZGUgYSBtZXRob2QNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNzEwNSNjaGFu Z2UtODY5ODQNCg0KKiBBdXRob3I6IEVyZWdvbiAoQmVub2l0IERhbG96ZSkNCiogU3RhdHVzOiBP cGVuDQoqIFByaW9yaXR5OiBOb3JtYWwNCiogQmFja3BvcnQ6IDIuNTogVU5LTk9XTiwgMi42OiBV TktOT1dOLCAyLjc6IFVOS05PV04NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCkEgc2luZ2xlIGByZXR1cm5gIGluIHRoZSBzb3VyY2UgY29kZSBtaWdodCByZXR1cm4g dG8gMiBkaWZmZXJlbnQgbGV4aWNhbCBwbGFjZXMuDQpUaGF0IHNlZW1zIHdyb25nIHRvIG1lLCBh cyBBRkFJSyBhbGwgb3RoZXIgY29udHJvbCBmbG93IGxhbmd1YWdlIGNvbnN0cnVjdHMgYWx3YXlz IGp1bXAgdG8gYSBzaW5nbGUgcGxhY2UuDQoNCmBgYHJ1YnkNCmRlZiBtKGNhbGxfcHJvYykNCiAg ciA9IC0+IHsNCiAgICAjIFRoaXMgc2luZ2xlIHJldHVybiBpbiB0aGUgc291cmNlIG1pZ2h0IGV4 aXQgdGhlIGxhbWJkYSBvciB0aGUgbWV0aG9kIQ0KICAgIHByb2MgPSBQcm9jLm5ldyB7IHJldHVy biA6cmV0dXJuIH0NCg0KICAgIGlmIGNhbGxfcHJvYw0KICAgICAgcHJvYy5jYWxsDQogICAgICA6 YWZ0ZXJfaW5fbGFtYmRhDQogICAgZWxzZQ0KICAgICAgcHJvYw0KICAgIGVuZA0KICB9LmNhbGwg IyByZXR1cm5zIGhlcmUgaWYgY2FsbF9wcm9jDQoNCiAgaWYgY2FsbF9wcm9jDQogICAgWzphZnRl cl9pbl9tZXRob2QsIHJdDQogIGVsc2UNCiAgICByLmNhbGwNCiAgICA6bmV2ZXJfcmVhY2hlZA0K ICBlbmQNCmVuZA0KDQoNCnAgbSh0cnVlKSAgIyA9PiBbOmFmdGVyX2luX21ldGhvZCwgOnJldHVy bl0NCnAgbShmYWxzZSkgIyA6cmV0dXJuDQpgYGANCg0KV2UncmUgdHJ5aW5nIHRvIGZpZ3VyZSBv dXQgdGhlIHNlbWFudGljcyBvZiBgcmV0dXJuYCBpbnNpZGUgYSBwcm9jIGluDQpodHRwczovL2dp dGh1Yi5jb20vb3JhY2xlL3RydWZmbGVydWJ5L2lzc3Vlcy8xNDg4I2lzc3VlY29tbWVudC02Njkx ODU2NzUNCmFuZCB0aGlzIGJlaGF2aW9yIGRvZXNuJ3Qgc2VlbSB0byBtYWtlIG11Y2ggc2Vuc2Uu DQoNCkBoZWFkaXVzIGFsc28gc2VlbXMgdG8gYWdyZWU6DQo+IEkgd291bGQgY29uc2lkZXIgdGhh dCBiZWhhdmlvciB0byBiZSBpbmNvcnJlY3Q7IG9uY2UgdGhlIHByb2MgaGFzIGVzY2FwZWQgZnJv bSB0aGUgbGFtYmRhLCBpdHMgcmV0dXJuIHRhcmdldCBpcyBubyBsb25nZXIgdmFsaWQuIEl0IHNo b3VsZCBub3QgcmV0dXJuIHRvIGEgZGlmZmVyZW50IHBsYWNlLg0KPiBodHRwczovL2dpdGh1Yi5j b20vanJ1YnkvanJ1YnkvaXNzdWVzLzYzNTAjaXNzdWVjb21tZW50LTY2OTYwMzc0MA0KDQpTbzoN CiogaXMgdGhpcyBiZWhhdmlvciBpbnRlbnRpb25hbD8gb3IgaXMgaXQgYSBidWc/DQoqIHdoYXQg YXJlIGFjdHVhbGx5IHRoZSBzZW1hbnRpY3Mgb2YgYHJldHVybmAgaW5zaWRlIGEgcHJvYz8NCg0K VGhlIHNlbWFudGljcyBzZWVtIGluY3JlZGlibHkgY29tcGxpY2F0ZWQgdG8gYSBwb2ludCBkZXZl bG9wZXJzIGhhdmUgbm8gaWRlYSB3aGVyZSBgcmV0dXJuYCBhY3R1YWxseSBnb2VzLg0KQWxzbyBp dCBtdXN0IGdldCBldmVuIG1vcmUgY29tcGxpY2F0ZWQgaWYgb25lIGRlZmluZXMgYSBgbGFtYmRh YCBtZXRob2QgYXMgdGhlIGJsb2NrIGluIGBsYW1iZGEgeyByZXR1cm4gfWAgaXMgdGhlbiBub24t ZGV0ZXJtaW5pc3RpY2FsbHkgYSBwcm9jIG9yIGxhbWJkYS4NCg0KDQoNCi0tIA0KaHR0cHM6Ly9i dWdzLnJ1YnktbGFuZy5vcmcvDQoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJlcXVl c3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1Ynkt bGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=