From 4c3f7a8bfc816849254f7c37958d4123b293bf54 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Sat, 8 Nov 2025 00:58:17 -0800 Subject: [PATCH] add `ref` for grabbing a function --- src/prelude/index.ts | 1 + src/prelude/tests/info.test.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/prelude/index.ts b/src/prelude/index.ts index c67de8a..c2c77ec 100644 --- a/src/prelude/index.ts +++ b/src/prelude/index.ts @@ -42,6 +42,7 @@ export const globals = { 'var?': function (this: VM, v: string) { return typeof v !== 'string' || this.scope.has(v) }, + ref: (fn: Function) => fn, // env args: Bun.argv.slice(1), diff --git a/src/prelude/tests/info.test.ts b/src/prelude/tests/info.test.ts index 1fa5e3b..39e2545 100644 --- a/src/prelude/tests/info.test.ts +++ b/src/prelude/tests/info.test.ts @@ -91,3 +91,15 @@ describe('environment', () => { await expect(`list.first args | str.ends-with? 'shrimp.test.ts'`).toEvaluateTo(true) }) }) + +describe('ref', () => { + expect(`rnd = do x: true end; rnd | type`).toEvaluateTo('boolean') + expect(`rnd = do x: true end; ref rnd | type`).toEvaluateTo('function') + + expect(`math.random | type`).toEvaluateTo('number') + expect(`ref math.random | type`).toEvaluateTo('native') + + expect(`rnd = math.random; rnd | type`).toEvaluateTo('number') + expect(`rnd = ref math.random; rnd | type`).toEvaluateTo('number') + expect(`rnd = ref math.random; ref rnd | type`).toEvaluateTo('native') +}) -- 2.50.1