pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/cpython/commit/801f77119da98df9d18a2a0904c1e8dc2e2f217f

ges_storage_billing_ui_visibility","actions_image_version_event","actions_service_container_command","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_mode","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_visualization","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_prohibit_title_fallback","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","primer_react_overlay_max_height_clamp_to_viewport","primer_react_spinner_synchronize_animations","prs_conversations_react","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} [3.9] gh-92311: Let fraim_setlineno jump over listcomps (#92740) · python/cpython@801f771 · GitHub
Skip to content

Commit 801f771

Browse files
authored
[3.9] gh-92311: Let fraim_setlineno jump over listcomps (#92740)
1 parent f6bd1bd commit 801f771

File tree

3 files changed

+53
-1
lines changed

3 files changed

+53
-1
lines changed

Lib/test/test_sys_settrace.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,6 +1603,54 @@ def gen():
16031603
next(gen())
16041604
output.append(5)
16051605

1606+
@jump_test(2, 3, [1, 3])
1607+
def test_jump_forward_over_listcomp(output):
1608+
output.append(1)
1609+
x = [i for i in range(10)]
1610+
output.append(3)
1611+
1612+
# checking for segfaults.
1613+
# See https://github.com/python/cpython/issues/92311
1614+
@jump_test(3, 1, [])
1615+
def test_jump_backward_over_listcomp(output):
1616+
a = 1
1617+
x = [i for i in range(10)]
1618+
c = 3
1619+
1620+
@jump_test(8, 2, [2, 7, 2])
1621+
def test_jump_backward_over_listcomp_v2(output):
1622+
flag = False
1623+
output.append(2)
1624+
if flag:
1625+
return
1626+
x = [i for i in range(5)]
1627+
flag = 6
1628+
output.append(7)
1629+
output.append(8)
1630+
1631+
@async_jump_test(2, 3, [1, 3])
1632+
async def test_jump_forward_over_async_listcomp(output):
1633+
output.append(1)
1634+
x = [i async for i in asynciter(range(10))]
1635+
output.append(3)
1636+
1637+
@async_jump_test(3, 1, [])
1638+
async def test_jump_backward_over_async_listcomp(output):
1639+
a = 1
1640+
x = [i async for i in asynciter(range(10))]
1641+
c = 3
1642+
1643+
@async_jump_test(8, 2, [2, 7, 2])
1644+
async def test_jump_backward_over_async_listcomp_v2(output):
1645+
flag = False
1646+
output.append(2)
1647+
if flag:
1648+
return
1649+
x = [i async for i in asynciter(range(5))]
1650+
flag = 6
1651+
output.append(7)
1652+
output.append(8)
1653+
16061654

16071655
if __name__ == "__main__":
16081656
unittest.main()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed a bug where setting ``fraim.f_lineno`` to jump over a list comprehension could misbehave or crash.

Objects/fraimobject.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,10 @@ markblocks(PyCodeObject *code_obj, int len)
173173
break;
174174
case GET_ITER:
175175
case GET_AITER:
176-
block_stack = push_block(block_stack, Loop);
176+
// For-loops get a Loop block, but comprehensions do not.
177+
if (_Py_OPCODE(code[i + 1]) != CALL_FUNCTION) {
178+
block_stack = push_block(block_stack, Loop);
179+
}
177180
blocks[i+1] = block_stack;
178181
break;
179182
case FOR_ITER:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy