Indicate execution mode to the scheme code generator

- The handling of command line arguments varies somewhat between
  different ways of evaluating scheme code, so some different wrappers
  need to be generated to run as a standalone output vs. running
  immediately like a script. The in-unison code generator needs an
  indication of which mode it should generate code for.
This commit is contained in:
Dan Doel 2023-01-10 16:08:39 -05:00
parent c2c37a8ae0
commit 4c62d73b8a

View File

@ -2762,15 +2762,15 @@ buildScheme main file = do
doRunAsScheme :: HQ.HashQualified Name -> [String] -> Cli ()
doRunAsScheme main args = do
fullpath <- generateSchemeFile (HQ.toString main) main
fullpath <- generateSchemeFile True (HQ.toString main) main
runScheme fullpath args
doCompileScheme :: String -> HQ.HashQualified Name -> Cli ()
doCompileScheme out main =
generateSchemeFile out main >>= buildScheme out
generateSchemeFile False out main >>= buildScheme out
generateSchemeFile :: String -> HQ.HashQualified Name -> Cli String
generateSchemeFile out main = do
generateSchemeFile :: Bool -> String -> HQ.HashQualified Name -> Cli String
generateSchemeFile exec out main = do
(comp, ppe) <- resolveMainRef main
ensureCompilerExists
doGenerateSchemeBoot False $ Just ppe
@ -2786,7 +2786,7 @@ generateSchemeFile out main = do
fpc = Term.constructor a fprf
fp = Term.app a fpc outTm
tm :: Term Symbol Ann
tm = Term.apps' sscm [toCmp, fp]
tm = Term.apps' sscm [Term.boolean a exec, toCmp, fp]
typecheckAndEval ppe tm
pure fullpath
where