summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2023-01-26 17:15:05 (GMT)
committerGitHub <noreply@github.com>2023-01-26 17:15:05 (GMT)
commit9f2c479eaf7d922746ef2f3c85b5c781757686b1 (patch)
treef2ea0d899bc5bf890ad89efe3bd931c09c535f27 /Tools
parent409f5337a3e466a5ef673797575cbd1745d27ca9 (diff)
downloadcpython-9f2c479eaf7d922746ef2f3c85b5c781757686b1.zip
cpython-9f2c479eaf7d922746ef2f3c85b5c781757686b1.tar.gz
cpython-9f2c479eaf7d922746ef2f3c85b5c781757686b1.tar.bz2
gh-98831: Fix two bugs in case generator (#101349)
Fix two bugs in case generator - UndefinedLocalError when generating metadata for an 'op' - Accidental newline inserted in test_generator.py
Diffstat (limited to 'Tools')
-rw-r--r--Tools/cases_generator/generate_cases.py10
-rw-r--r--Tools/cases_generator/test_generator.py3
2 files changed, 8 insertions, 5 deletions
diff --git a/Tools/cases_generator/generate_cases.py b/Tools/cases_generator/generate_cases.py
index b794241..9d894d2 100644
--- a/Tools/cases_generator/generate_cases.py
+++ b/Tools/cases_generator/generate_cases.py
@@ -736,7 +736,7 @@ class Analyzer:
def get_stack_effect_info(
self, thing: parser.InstDef | parser.Super | parser.Macro
- ) -> tuple[Instruction, str, str]:
+ ) -> tuple[Instruction|None, str, str]:
def effect_str(effect: list[StackEffect]) -> str:
if getattr(thing, 'kind', None) == 'legacy':
@@ -752,6 +752,9 @@ class Analyzer:
instr = self.instrs[thing.name]
popped = effect_str(instr.input_effects)
pushed = effect_str(instr.output_effects)
+ else:
+ instr = None
+ popped = pushed = "", ""
case parser.Super():
instr = self.super_instrs[thing.name]
popped = '+'.join(effect_str(comp.instr.input_effects) for comp in instr.parts)
@@ -770,8 +773,9 @@ class Analyzer:
pushed_data = []
for thing in self.everything:
instr, popped, pushed = self.get_stack_effect_info(thing)
- popped_data.append( (instr, popped) )
- pushed_data.append( (instr, pushed) )
+ if instr is not None:
+ popped_data.append( (instr, popped) )
+ pushed_data.append( (instr, pushed) )
def write_function(direction: str, data: list[tuple[Instruction, str]]) -> None:
self.out.emit("\n#ifndef NDEBUG");
diff --git a/Tools/cases_generator/test_generator.py b/Tools/cases_generator/test_generator.py
index cf58e6a..bd1b974 100644
--- a/Tools/cases_generator/test_generator.py
+++ b/Tools/cases_generator/test_generator.py
@@ -358,8 +358,7 @@ def test_macro_instruction():
{
PyObject *arg1 = _tmp_1;
PyObject *interim;
- uint16_t counter = re
- ad_u16(&next_instr[0].cache);
+ uint16_t counter = read_u16(&next_instr[0].cache);
interim = op1(arg1);
_tmp_1 = interim;
}