[3.8] bpo-37830: Fix compilation of break and continue in finally. (GH-15320) (GH-15456)

Fix compilation of "break" and "continue" in the
"finally" block when the corresponding "try" block
contains "return" with a non-constant value.
(cherry picked from commit ef61c524dd)
This commit is contained in:
Serhiy Storchaka 2019-08-24 13:41:53 +03:00 committed by GitHub
parent 920ec4b776
commit ed146b52a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 305 additions and 194 deletions

84
Python/importlib.h generated
View file

@ -301,14 +301,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
0,0,115,6,0,0,0,8,2,8,4,8,4,114,50,0,
0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
0,0,0,8,0,0,0,67,0,0,0,115,130,0,0,0,
116,0,160,1,161,0,1,0,122,106,122,14,116,2,124,0,
25,0,131,0,125,1,87,0,110,24,4,0,116,3,107,10,
116,0,160,1,161,0,1,0,122,106,122,14,116,3,124,0,
25,0,131,0,125,1,87,0,110,24,4,0,116,4,107,10,
114,48,1,0,1,0,1,0,100,1,125,1,89,0,110,2,
88,0,124,1,100,1,107,8,114,112,116,4,100,1,107,8,
114,76,116,5,124,0,131,1,125,1,110,8,116,6,124,0,
88,0,124,1,100,1,107,8,114,112,116,5,100,1,107,8,
114,76,116,6,124,0,131,1,125,1,110,8,116,7,124,0,
131,1,125,1,124,0,102,1,100,2,100,3,132,1,125,2,
116,7,160,8,124,1,124,2,161,2,116,2,124,0,60,0,
87,0,53,0,116,0,160,9,161,0,1,0,88,0,124,1,
116,8,160,9,124,1,124,2,161,2,116,3,124,0,60,0,
87,0,53,0,116,0,160,2,161,0,1,0,88,0,124,1,
83,0,41,4,122,139,71,101,116,32,111,114,32,99,114,101,
97,116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,
111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,
@ -320,22 +320,22 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
32,32,32,95,109,111,100,117,108,101,95,108,111,99,107,115,
46,78,99,2,0,0,0,0,0,0,0,0,0,0,0,2,
0,0,0,8,0,0,0,83,0,0,0,115,48,0,0,0,
116,0,160,1,161,0,1,0,122,24,116,2,160,3,124,1,
161,1,124,0,107,8,114,30,116,2,124,1,61,0,87,0,
53,0,116,0,160,4,161,0,1,0,88,0,100,0,83,0,
116,0,160,1,161,0,1,0,122,24,116,3,160,4,124,1,
161,1,124,0,107,8,114,30,116,3,124,1,61,0,87,0,
53,0,116,0,160,2,161,0,1,0,88,0,100,0,83,0,
114,13,0,0,0,41,5,218,4,95,105,109,112,218,12,97,
99,113,117,105,114,101,95,108,111,99,107,218,13,95,109,111,
100,117,108,101,95,108,111,99,107,115,114,34,0,0,0,218,
12,114,101,108,101,97,115,101,95,108,111,99,107,41,2,218,
99,113,117,105,114,101,95,108,111,99,107,218,12,114,101,108,
101,97,115,101,95,108,111,99,107,218,13,95,109,111,100,117,
108,101,95,108,111,99,107,115,114,34,0,0,0,41,2,218,
3,114,101,102,114,17,0,0,0,114,10,0,0,0,114,10,
0,0,0,114,11,0,0,0,218,2,99,98,176,0,0,0,
115,10,0,0,0,0,1,8,1,2,4,14,1,10,2,122,
28,95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,
107,46,60,108,111,99,97,108,115,62,46,99,98,41,10,114,
57,0,0,0,114,58,0,0,0,114,59,0,0,0,218,8,
75,101,121,69,114,114,111,114,114,23,0,0,0,114,49,0,
0,0,114,20,0,0,0,218,8,95,119,101,97,107,114,101,
102,114,61,0,0,0,114,60,0,0,0,41,3,114,17,0,
57,0,0,0,114,58,0,0,0,114,59,0,0,0,114,60,
0,0,0,218,8,75,101,121,69,114,114,111,114,114,23,0,
0,0,114,49,0,0,0,114,20,0,0,0,218,8,95,119,
101,97,107,114,101,102,114,61,0,0,0,41,3,114,17,0,
0,0,114,24,0,0,0,114,62,0,0,0,114,10,0,0,
0,114,10,0,0,0,114,11,0,0,0,114,53,0,0,0,
157,0,0,0,115,28,0,0,0,0,6,8,1,2,1,2,
@ -910,14 +910,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
0,106,0,125,2,116,1,124,2,131,1,143,180,1,0,116,
2,106,3,160,4,124,2,161,1,124,1,107,9,114,54,100,
1,160,5,124,2,161,1,125,3,116,6,124,3,124,2,100,
2,141,2,130,1,122,106,124,0,106,7,100,3,107,8,114,
106,124,0,106,8,100,3,107,8,114,90,116,6,100,4,124,
0,106,0,100,2,141,2,130,1,116,9,124,0,124,1,100,
5,100,6,141,3,1,0,110,52,116,9,124,0,124,1,100,
5,100,6,141,3,1,0,116,10,124,0,106,7,100,7,131,
2,115,146,124,0,106,7,160,11,124,2,161,1,1,0,110,
12,124,0,106,7,160,12,124,1,161,1,1,0,87,0,53,
0,116,2,106,3,160,13,124,0,106,0,161,1,125,1,124,
2,141,2,130,1,122,106,124,0,106,8,100,3,107,8,114,
106,124,0,106,9,100,3,107,8,114,90,116,6,100,4,124,
0,106,0,100,2,141,2,130,1,116,10,124,0,124,1,100,
5,100,6,141,3,1,0,110,52,116,10,124,0,124,1,100,
5,100,6,141,3,1,0,116,11,124,0,106,8,100,7,131,
2,115,146,124,0,106,8,160,12,124,2,161,1,1,0,110,
12,124,0,106,8,160,13,124,1,161,1,1,0,87,0,53,
0,116,2,106,3,160,7,124,0,106,0,161,1,125,1,124,
1,116,2,106,3,124,0,106,0,60,0,88,0,87,0,53,
0,81,0,82,0,88,0,124,1,83,0,41,8,122,70,69,
120,101,99,117,116,101,32,116,104,101,32,115,112,101,99,39,
@ -930,10 +930,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
115,105,110,103,32,108,111,97,100,101,114,84,114,143,0,0,
0,114,150,0,0,0,41,14,114,17,0,0,0,114,50,0,
0,0,114,15,0,0,0,114,92,0,0,0,114,34,0,0,
0,114,45,0,0,0,114,79,0,0,0,114,109,0,0,0,
114,117,0,0,0,114,148,0,0,0,114,4,0,0,0,218,
11,108,111,97,100,95,109,111,100,117,108,101,114,150,0,0,
0,218,3,112,111,112,41,4,114,95,0,0,0,114,96,0,
0,114,45,0,0,0,114,79,0,0,0,218,3,112,111,112,
114,109,0,0,0,114,117,0,0,0,114,148,0,0,0,114,
4,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,
101,114,150,0,0,0,41,4,114,95,0,0,0,114,96,0,
0,0,114,17,0,0,0,218,3,109,115,103,114,10,0,0,
0,114,10,0,0,0,114,11,0,0,0,114,93,0,0,0,
71,2,0,0,115,34,0,0,0,0,2,6,1,10,1,16,
@ -961,8 +961,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
110,2,88,0,124,1,83,0,41,7,78,114,98,0,0,0,
114,145,0,0,0,114,141,0,0,0,114,128,0,0,0,114,
22,0,0,0,114,105,0,0,0,41,14,114,109,0,0,0,
114,155,0,0,0,114,17,0,0,0,114,15,0,0,0,114,
92,0,0,0,114,156,0,0,0,114,6,0,0,0,114,98,
114,156,0,0,0,114,17,0,0,0,114,15,0,0,0,114,
92,0,0,0,114,155,0,0,0,114,6,0,0,0,114,98,
0,0,0,114,106,0,0,0,114,1,0,0,0,114,145,0,
0,0,114,4,0,0,0,114,129,0,0,0,114,105,0,0,
0,114,151,0,0,0,114,10,0,0,0,114,10,0,0,0,
@ -979,22 +979,22 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
116,3,124,0,131,1,125,1,100,2,124,0,95,4,122,162,
124,1,116,5,106,6,124,0,106,7,60,0,122,52,124,0,
106,0,100,0,107,8,114,96,124,0,106,8,100,0,107,8,
114,108,116,9,100,3,124,0,106,7,100,4,141,2,130,1,
114,108,116,9,100,4,124,0,106,7,100,5,141,2,130,1,
110,12,124,0,106,0,160,10,124,1,161,1,1,0,87,0,
110,50,1,0,1,0,1,0,122,14,116,5,106,6,124,0,
106,7,61,0,87,0,110,20,4,0,116,11,107,10,114,152,
1,0,1,0,1,0,89,0,110,2,88,0,130,0,89,0,
110,2,88,0,116,5,106,6,160,12,124,0,106,7,161,1,
125,1,124,1,116,5,106,6,124,0,106,7,60,0,116,13,
100,5,124,0,106,7,124,0,106,0,131,3,1,0,87,0,
53,0,100,6,124,0,95,4,88,0,124,1,83,0,41,7,
78,114,150,0,0,0,84,114,154,0,0,0,114,16,0,0,
0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,35,
32,123,33,114,125,70,41,14,114,109,0,0,0,114,4,0,
100,6,124,0,106,7,124,0,106,0,131,3,1,0,87,0,
53,0,100,3,124,0,95,4,88,0,124,1,83,0,41,7,
78,114,150,0,0,0,84,70,114,154,0,0,0,114,16,0,
0,0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,
35,32,123,33,114,125,41,14,114,109,0,0,0,114,4,0,
0,0,114,158,0,0,0,114,152,0,0,0,90,13,95,105,
110,105,116,105,97,108,105,122,105,110,103,114,15,0,0,0,
114,92,0,0,0,114,17,0,0,0,114,117,0,0,0,114,
79,0,0,0,114,150,0,0,0,114,63,0,0,0,114,156,
79,0,0,0,114,150,0,0,0,114,63,0,0,0,114,155,
0,0,0,114,76,0,0,0,114,151,0,0,0,114,10,0,
0,0,114,10,0,0,0,114,11,0,0,0,218,14,95,108,
111,97,100,95,117,110,108,111,99,107,101,100,138,2,0,0,
@ -1158,7 +1158,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
99,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111,
100,114,166,0,0,0,114,167,0,0,0,114,149,0,0,0,
114,150,0,0,0,114,86,0,0,0,114,169,0,0,0,114,
170,0,0,0,114,115,0,0,0,114,97,0,0,0,114,155,
170,0,0,0,114,115,0,0,0,114,97,0,0,0,114,156,
0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0,
0,0,114,11,0,0,0,114,160,0,0,0,195,2,0,0,
115,42,0,0,0,8,2,4,7,2,1,10,8,2,1,12,
@ -1255,7 +1255,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,
115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,
41,1,114,97,0,0,0,114,168,0,0,0,114,10,0,0,
0,114,10,0,0,0,114,11,0,0,0,114,155,0,0,0,
0,114,10,0,0,0,114,11,0,0,0,114,156,0,0,0,
61,3,0,0,115,2,0,0,0,0,7,122,26,70,114,111,
122,101,110,73,109,112,111,114,116,101,114,46,108,111,97,100,
95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,
@ -1294,7 +1294,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
114,2,0,0,0,114,3,0,0,0,114,138,0,0,0,114,
171,0,0,0,114,99,0,0,0,114,172,0,0,0,114,166,
0,0,0,114,167,0,0,0,114,149,0,0,0,114,150,0,
0,0,114,155,0,0,0,114,90,0,0,0,114,169,0,0,
0,0,114,156,0,0,0,114,90,0,0,0,114,169,0,0,
0,114,170,0,0,0,114,115,0,0,0,114,10,0,0,0,
114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,
173,0,0,0,12,3,0,0,115,46,0,0,0,8,2,4,
@ -1325,7 +1325,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
108,111,99,107,32,114,101,103,97,114,100,108,101,115,115,32,
111,102,32,97,110,121,32,114,97,105,115,101,100,32,101,120,
99,101,112,116,105,111,110,115,46,78,41,2,114,57,0,0,
0,114,60,0,0,0,41,4,114,30,0,0,0,218,8,101,
0,114,59,0,0,0,41,4,114,30,0,0,0,218,8,101,
120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108,
117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99,
107,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
@ -1762,7 +1762,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = {
0,0,0,41,2,78,78,41,1,78,41,2,78,114,22,0,
0,0,41,4,78,78,114,10,0,0,0,114,22,0,0,0,
41,50,114,3,0,0,0,114,126,0,0,0,114,12,0,0,
0,114,18,0,0,0,114,59,0,0,0,114,33,0,0,0,
0,114,18,0,0,0,114,60,0,0,0,114,33,0,0,0,
114,42,0,0,0,114,19,0,0,0,114,20,0,0,0,114,
49,0,0,0,114,50,0,0,0,114,53,0,0,0,114,65,
0,0,0,114,67,0,0,0,114,76,0,0,0,114,86,0,