From 925cbb80cb64501611d8e3b5af786b6b15954704 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Mon, 15 Nov 2021 00:34:03 -0700 Subject: [PATCH] implicit begin in assertLet --- kiss/src/kiss/Macros.hx | 11 ++++++----- kiss/src/kiss/Prelude.hx | 1 + projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss | 6 ------ 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index 3521e286..c1b235a4 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -600,9 +600,10 @@ class Macros { // Macros that null-check and extract patterns from enums (inspired by Rust) function ifLet(assertLet:Bool, wholeExp:ReaderExp, exps:Array, k:KissState) { var funcName = if (assertLet) "assertLet" else "ifLet"; + var thenExpStr = if (assertLet) "" else ""; var elseExpStr = if (assertLet) "" else " "; - var maxArgs = if (assertLet) 2 else 3; - wholeExp.checkNumArgs(2, maxArgs, '($funcName [] ${elseExpStr})'); + var maxArgs = if (assertLet) null else 3; + wholeExp.checkNumArgs(2, maxArgs, '($funcName [] ${thenExpStr}${elseExpStr})'); var b = wholeExp.expBuilder(); var bindingList = exps[0].bindingList(funcName); @@ -610,8 +611,8 @@ class Macros { var firstValue = bindingList.shift(); var firstValueSymbol = b.symbol(); - var thenExp = exps[1]; - var elseExp = if (exps.length > 2) { + var thenExp = if (assertLet) b.begin(exps.slice(1)) else exps[1]; + var elseExp = if (!assertLet && exps.length > 2) { exps[2]; } else if (assertLet) { b.callSymbol("throw", [b.str('Assertion binding ${firstValue.def.toString()} -> ${firstPattern.def.toString()} failed')]); @@ -629,7 +630,7 @@ class Macros { b.call( firstPattern, [ if (bindingList.length == 0) { - exps[1]; + thenExp; } else { ifLet(assertLet, wholeExp, [ b.list(bindingList) diff --git a/kiss/src/kiss/Prelude.hx b/kiss/src/kiss/Prelude.hx index b77da860..6cd12cb0 100644 --- a/kiss/src/kiss/Prelude.hx +++ b/kiss/src/kiss/Prelude.hx @@ -620,4 +620,5 @@ class Prelude { } public static var newLine = "\n"; + public static var backSlash = "\\"; } diff --git a/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss b/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss index d31672d2..3b73bbba 100644 --- a/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss +++ b/projects/kiss-vscode/src/ktxt2/KTxt2Editor.kiss @@ -231,12 +231,6 @@ // (print "posting $message") (_vscode.postMessage message)) -(function replaceComment [element newText] - (case element - ((Comment (object text text start start end end)) - (postMessage (object type "replace" text newText start start end end))) - (otherwise (throw "element $element is not a comment")))) - (function insertBlockBeforeBlock [element] (case element ((Block (object sourceStart position))