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') +})