diff --git a/newt-vscode-lsp/src/extension.ts b/newt-vscode-lsp/src/extension.ts index 836476a..d4ff9fb 100644 --- a/newt-vscode-lsp/src/extension.ts +++ b/newt-vscode-lsp/src/extension.ts @@ -23,7 +23,7 @@ export function activate(context: vscode.ExtensionContext) { let serverOptions: ServerOptions if (cmd) { serverOptions = { - run: { command: "node", args: [cmd], transport: TransportKind.pipe }, + run: { command: "node", args: ['--heapsnapshot-signal=SIGUSR2',cmd], transport: TransportKind.pipe }, debug: { command: "node", args: [cmd], transport: TransportKind.pipe }, } } else { diff --git a/src/Lib/CompileJS.newt b/src/Lib/CompileJS.newt index 618d049..ebfef2f 100644 --- a/src/Lib/CompileJS.newt +++ b/src/Lib/CompileJS.newt @@ -300,7 +300,7 @@ termToJS {e} env (CCase t alts) f = termToJSAlt : JSEnv -> JSExp -> CAlt -> JAlt termToJSAlt env nm (CConAlt ix name info args qs u) = JConAlt ix (termToJS (conAltEnv nm 0 env args) u f) -- intentionally reusing scrutinee name here - termToJSAlt env nm (CDefAlt u) = JDefAlt (termToJS (env) u f) + termToJSAlt env nm (CDefAlt u) = JDefAlt (termToJS (env) u f) termToJSAlt env nm (CLitAlt lit u) = JLitAlt (litToJS lit) (termToJS env u f) getArgs : CAlt → List String diff --git a/src/Lib/Erasure.newt b/src/Lib/Erasure.newt index e0afc91..07c9345 100644 --- a/src/Lib/Erasure.newt +++ b/src/Lib/Erasure.newt @@ -96,7 +96,7 @@ erase env t sp = case t of eraseSpine env (LetRec fc nm ty u' v') sp Nothing (Bnd fc k) => do case getAt (cast k) env of - Nothing => error fc "bad index \{show k}" + Nothing => error fc "Erase: bad index \{show k}" Just (nm, Zero, ty) => error fc "used erased value \{show nm} (FIXME FC may be wrong here)" Just (nm, Many, ty) => eraseSpine env t sp ty (UU fc) => eraseSpine env t sp (Just $ UU fc) diff --git a/src/Lib/Eval.newt b/src/Lib/Eval.newt index 817d5ed..fa2e08f 100644 --- a/src/Lib/Eval.newt +++ b/src/Lib/Eval.newt @@ -12,7 +12,7 @@ import Data.SortedMap eval : Env -> Tm -> M Val --- REVIEW everything is evalutated whether it's needed or not +-- REVIEW everything is evaluated whether it's needed or not -- It would be nice if the environment were lazy. -- e.g. case is getting evaluated when passed to a function because -- of dependencies in pi-types, even if the dependency isn't used @@ -50,7 +50,7 @@ unlet : Env -> Val -> M Val unlet env t@(VVar fc k sp) = case lookupVar env k of Just tt@(VVar fc' k' sp') => do debug $ \ _ => "lookup \{show k} is \{show tt}" - if k' == k then pure t else (vappSpine (VVar fc' k' sp') sp >>= unlet env) + if k' == k then pure t else (vappSpine tt sp >>= unlet env) Just t => vappSpine t sp >>= unlet env Nothing => do debug $ \ _ => "lookup \{show k} is Nothing in env \{show env}" diff --git a/src/Lib/ProcessDecl.newt b/src/Lib/ProcessDecl.newt index 0888425..be674ae 100644 --- a/src/Lib/ProcessDecl.newt +++ b/src/Lib/ProcessDecl.newt @@ -310,7 +310,6 @@ processInstance ns instfc ty decls = do vdcty@(VPi _ nm icit rig a b) <- eval Nil dcty | x => error (getFC x) "dcty not Pi" debug $ \ _ => "dcty \{render 90 $ pprint Nil dcty}" - let (_,args) = funArgs codomain debug $ \ _ => "traverse \{show $ map show args}" -- This is a little painful because we're reverse engineering the