From 9b28d27f216117aeb15b4f1ab55bfc9f16107e77 Mon Sep 17 00:00:00 2001 From: Robert Muth Date: Mon, 6 May 2024 21:43:50 -0400 Subject: [PATCH] fix a few more issues with pp --- FrontEnd/Lib/test.cw | 3 +-- FrontEnd/pp.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/FrontEnd/Lib/test.cw b/FrontEnd/Lib/test.cw index 5a60226a..baccaac6 100644 --- a/FrontEnd/Lib/test.cw +++ b/FrontEnd/Lib/test.cw @@ -80,8 +80,7 @@ Both must have derivable types as we use `auto`""" (mlet $a_val auto $a_expr) (AssertEq# (len $e_val) (len $a_val)) (for $i 0 (len $a_val) 1 : - (AssertApproxEq# (^ (pinc (front $e_val) $i)) (^ (pinc (front $a_val) $i)))) - $epsilon) + (AssertApproxEq# (^ (pinc (front $e_val) $i)) (^ (pinc (front $a_val) $i)) $epsilon))) @doc "" @pub (macro AssertTrue# STMT_LIST [(mparam $e_expr EXPR)] [] : diff --git a/FrontEnd/pp.py b/FrontEnd/pp.py index 135b863d..ac5cda8e 100755 --- a/FrontEnd/pp.py +++ b/FrontEnd/pp.py @@ -503,8 +503,6 @@ def EmitTokensCodeBlock(ts: TS, stmts): ts.EmitColonEnd(beg_colon) - - def TokensExprIndex(ts: TS, node: cwast.ExprIndex): EmitTokens(ts, node.container) beg_paren = ts.EmitBegParen("[") @@ -714,12 +712,16 @@ def EmitTokensStatement(ts: TS, n): EmitTokensCodeBlock(ts, n.body_for) elif isinstance(n, cwast.MacroInvoke): _TokensStmtMacroInvoke(ts, n) + elif isinstance(n, cwast.MacroId): + ts.EmitAttr(n.name) + ts.EmitNewline() else: assert False, f"unexpected stmt node {n}" # if not ts.LastTokenIsCodeBlock(): ts.EmitNewline() + def EmitTokensExprMacroBlock(ts: TS, stmts): beg_colon = ts.EmitColonBeg() for child in stmts: @@ -730,6 +732,7 @@ def EmitTokensExprMacroBlock(ts: TS, stmts): assert False ts.EmitColonEnd(beg_colon) + def _EmitTokensToplevel(ts: TS, node): # extra newline before every toplevel stanza ts.EmitNewline() @@ -746,10 +749,12 @@ def _EmitTokensToplevel(ts: TS, node): ts.EmitStmtEnd(beg) elif isinstance(node, cwast.Import): beg = ts.EmitStmtBeg("import") - ts.EmitName(node.name) if node.alias: - ts.EmitBinOp("as") ts.EmitAttr(node.alias) + ts.EmitBinOp("=") + ts.EmitName(node.name) + if node.args_mod: + TokensParenList(ts, node.args_mod) ts.EmitStmtEnd(beg) elif isinstance(node, cwast.DefType): beg = ts.EmitStmtBeg("type")