aboutsummaryrefslogtreecommitdiff
path: root/src/eval-env
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2023-01-14 17:38:24 +0530
committerAkshay Nair <phenax5@gmail.com>2023-01-14 17:39:24 +0530
commitf31caa5baad20553cac0330ae9ff279b8f88f340 (patch)
tree52c7e6e0b2acdece8f013b64e3dbb2b70f5b14f5 /src/eval-env
parentaee5d90a2397e68a753ab05e20566d0a23604931 (diff)
downloadts-types-lang-f31caa5baad20553cac0330ae9ff279b8f88f340.tar.gz
ts-types-lang-f31caa5baad20553cac0330ae9ff279b8f88f340.zip
feat: adds test cases for do and seq + fixes behavior with empty results
Diffstat (limited to 'src/eval-env')
-rw-r--r--src/eval-env/builtins.ts14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/eval-env/builtins.ts b/src/eval-env/builtins.ts
index c5b0c82..d90bc2e 100644
--- a/src/eval-env/builtins.ts
+++ b/src/eval-env/builtins.ts
@@ -49,6 +49,8 @@ export default (ctx: Ctx, args: Type[]) => ({
return [resultKey]
},
+ Noop: async () => [],
+
Print: async () => {
console.log(...args.map(ctx.typeToString))
return []
@@ -77,7 +79,7 @@ export default (ctx: Ctx, args: Type[]) => ({
const resultType = applyFunc(
ctx,
chainToKind,
- resultKey ? `(${ctx.getResultExpr(resultKey)})['output']` : 'never'
+ resultKey ? `${ctx.getResultExpr(resultKey)}` : 'never'
)
return ctx.evaluateType(ctx, resultType)
}),
@@ -102,7 +104,7 @@ export default (ctx: Ctx, args: Type[]) => ({
return [value]
},
- Try: async () => {
+ Try: ctx.withScope(async () => {
const [effTyp, catchK] = args
try {
@@ -113,7 +115,7 @@ export default (ctx: Ctx, args: Type[]) => ({
const resultType = applyFunc(ctx, catchK, error)
return ctx.evaluateType(ctx, resultType)
}
- },
+ }),
Throw: async () => {
throw args[0] && ctx.getTypeValue(args[0])
@@ -134,8 +136,8 @@ export default (ctx: Ctx, args: Type[]) => ({
effectTyps?.getTupleElements() ?? []
)
const [resultKey, _] = ctx.createResult(`[
- ${effectResults.map(ctx.getResultExpr).join(', ')}
- ]`)
+ ${effectResults.map(ctx.getResultExpr).join(', ')}
+ ]`)
return [resultKey]
}),
@@ -148,7 +150,7 @@ export default (ctx: Ctx, args: Type[]) => ({
// TODO: Use last type's result instead of last result key
const lastResKey = effectResults[effectResults.length - 1]
const [resultKey, _] = ctx.createResult(
- `(${ctx.getResultExpr(lastResKey)})['output']`
+ `${ctx.getResultExpr(lastResKey)}`
)
return [resultKey]
}),