From 8967090149cb89f7b82fc6c8f72764975912fa58 Mon Sep 17 00:00:00 2001 From: Charles Brunet Date: Wed, 12 Jun 2024 14:00:13 -0400 Subject: mformat: fix else token not correctly indented fixes #13316 --- mesonbuild/mformat.py | 4 ++-- test cases/format/1 default/indentation.meson | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mesonbuild/mformat.py b/mesonbuild/mformat.py index 5e3701931..e20e45851 100644 --- a/mesonbuild/mformat.py +++ b/mesonbuild/mformat.py @@ -458,10 +458,10 @@ class TrimWhitespaces(FullAstVisitor): super().visit_IfClauseNode(node) self.move_whitespaces(node.endif, node) + for if_node in node.ifs: + if_node.whitespaces.value += node.condition_level * self.config.indent_by if isinstance(node.elseblock, mparser.ElseNode): node.elseblock.whitespaces.value += node.condition_level * self.config.indent_by - else: - node.ifs[-1].whitespaces.value += node.condition_level * self.config.indent_by def visit_IfNode(self, node: mparser.IfNode) -> None: super().visit_IfNode(node) diff --git a/test cases/format/1 default/indentation.meson b/test cases/format/1 default/indentation.meson index 31a809abf..b1edc3a16 100644 --- a/test cases/format/1 default/indentation.meson +++ b/test cases/format/1 default/indentation.meson @@ -69,5 +69,9 @@ if meson.project_version().version_compare('>1.2') ], } endforeach + elif 42 in d + d += {'foo': 43} + else # ensure else is correctly indented (issue #13316) + k = 'k' endif endif -- cgit v1.3