Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit61bef62

Browse files
authored
gh-123142: fix too wide source location of GET_ITER/GET_AITER (#123420)
1 parent40fff90 commit61bef62

File tree

6 files changed

+40
-9
lines changed

6 files changed

+40
-9
lines changed

‎Lib/test/support/__init__.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2850,14 +2850,17 @@ def get_signal_name(exitcode):
28502850
returnNone
28512851

28522852
classBrokenIter:
2853-
def__init__(self,init_raises=False,next_raises=False):
2853+
def__init__(self,init_raises=False,next_raises=False,iter_raises=False):
28542854
ifinit_raises:
28552855
1/0
28562856
self.next_raises=next_raises
2857+
self.iter_raises=iter_raises
28572858

28582859
def__next__(self):
28592860
ifself.next_raises:
28602861
1/0
28612862

28622863
def__iter__(self):
2864+
ifself.iter_raises:
2865+
1/0
28632866
returnself

‎Lib/test/test_dictcomps.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,15 @@ def next_raises():
145145
exceptExceptionase:
146146
returne
147147

148+
defiter_raises():
149+
try:
150+
{x:xforxinBrokenIter(iter_raises=True)}
151+
exceptExceptionase:
152+
returne
153+
148154
forfunc,expectedin [(init_raises,"BrokenIter(init_raises=True)"),
149155
(next_raises,"BrokenIter(next_raises=True)"),
156+
(iter_raises,"BrokenIter(iter_raises=True)"),
150157
]:
151158
withself.subTest(func):
152159
exc=func()

‎Lib/test/test_iter.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,8 +1163,16 @@ def next_raises():
11631163
exceptExceptionase:
11641164
returne
11651165

1166+
defiter_raises():
1167+
try:
1168+
forxinBrokenIter(iter_raises=True):
1169+
pass
1170+
exceptExceptionase:
1171+
returne
1172+
11661173
forfunc,expectedin [(init_raises,"BrokenIter(init_raises=True)"),
11671174
(next_raises,"BrokenIter(next_raises=True)"),
1175+
(iter_raises,"BrokenIter(iter_raises=True)"),
11681176
]:
11691177
withself.subTest(func):
11701178
exc=func()

‎Lib/test/test_listcomps.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,8 +730,15 @@ def next_raises():
730730
exceptExceptionase:
731731
returne
732732

733+
defiter_raises():
734+
try:
735+
[xforxinBrokenIter(iter_raises=True)]
736+
exceptExceptionase:
737+
returne
738+
733739
forfunc,expectedin [(init_raises,"BrokenIter(init_raises=True)"),
734740
(next_raises,"BrokenIter(next_raises=True)"),
741+
(iter_raises,"BrokenIter(iter_raises=True)"),
735742
]:
736743
withself.subTest(func):
737744
exc=func()

‎Lib/test/test_setcomps.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,15 @@ def next_raises():
168168
exceptExceptionase:
169169
returne
170170

171+
defiter_raises():
172+
try:
173+
{xforxinBrokenIter(iter_raises=True)}
174+
exceptExceptionase:
175+
returne
176+
171177
forfunc,expectedin [(init_raises,"BrokenIter(init_raises=True)"),
172178
(next_raises,"BrokenIter(next_raises=True)"),
179+
(iter_raises,"BrokenIter(iter_raises=True)"),
173180
]:
174181
withself.subTest(func):
175182
exc=func()

‎Python/compile.c‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2990,7 +2990,7 @@ codegen_async_for(struct compiler *c, stmt_ty s)
29902990
NEW_JUMP_TARGET_LABEL(c,end);
29912991

29922992
VISIT(c,expr,s->v.AsyncFor.iter);
2993-
ADDOP(c,loc,GET_AITER);
2993+
ADDOP(c,LOC(s->v.AsyncFor.iter),GET_AITER);
29942994

29952995
USE_LABEL(c,start);
29962996
RETURN_IF_ERROR(compiler_push_fblock(c,loc,FOR_LOOP,start,end,NULL));
@@ -5284,7 +5284,7 @@ codegen_async_comprehension_generator(struct compiler *c, location loc,
52845284
else {
52855285
/* Sub-iter - calculate on the fly */
52865286
VISIT(c,expr,gen->iter);
5287-
ADDOP(c,loc,GET_AITER);
5287+
ADDOP(c,LOC(gen->iter),GET_AITER);
52885288
}
52895289
}
52905290

@@ -5618,15 +5618,14 @@ pop_inlined_comprehension_state(struct compiler *c, location loc,
56185618
}
56195619

56205620
staticinlineint
5621-
codegen_comprehension_iter(structcompiler*c,locationloc,
5622-
comprehension_tycomp)
5621+
codegen_comprehension_iter(structcompiler*c,comprehension_tycomp)
56235622
{
56245623
VISIT(c,expr,comp->iter);
56255624
if (comp->is_async) {
5626-
ADDOP(c,loc,GET_AITER);
5625+
ADDOP(c,LOC(comp->iter),GET_AITER);
56275626
}
56285627
else {
5629-
ADDOP(c,loc,GET_ITER);
5628+
ADDOP(c,LOC(comp->iter),GET_ITER);
56305629
}
56315630
returnSUCCESS;
56325631
}
@@ -5654,7 +5653,7 @@ codegen_comprehension(struct compiler *c, expr_ty e, int type,
56545653

56555654
outermost= (comprehension_ty)asdl_seq_GET(generators,0);
56565655
if (is_inlined) {
5657-
if (codegen_comprehension_iter(c,loc,outermost)) {
5656+
if (codegen_comprehension_iter(c,outermost)) {
56585657
gotoerror;
56595658
}
56605659
if (push_inlined_comprehension_state(c,loc,entry,&inline_state)) {
@@ -5736,7 +5735,7 @@ codegen_comprehension(struct compiler *c, expr_ty e, int type,
57365735
}
57375736
Py_CLEAR(co);
57385737

5739-
if (codegen_comprehension_iter(c,loc,outermost)) {
5738+
if (codegen_comprehension_iter(c,outermost)) {
57405739
gotoerror;
57415740
}
57425741

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp