From 413e267d0ed01c426002ec6488f05a5d7a619e5a Mon Sep 17 00:00:00 2001 From: Himbeer Date: Wed, 4 Sep 2024 16:03:20 +0200 Subject: Require extern functions to be declared --- generate.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'generate.go') diff --git a/generate.go b/generate.go index b8c6ba2..a5ddf7f 100644 --- a/generate.go +++ b/generate.go @@ -90,6 +90,11 @@ func generateFunction(function *functionExpr, w io.Writer) error { defer func() { currentFunc = "" }() funcs[currentFunc] = struct{}{} + + if function.external { + return nil + } + localConsts[currentFunc] = map[string]string{} localMuts[currentFunc] = map[string]struct{}{} @@ -579,6 +584,15 @@ func (n *numberExpr) generate(w io.Writer) (string, error) { } func (c *callExpr) generate(w io.Writer) (string, error) { + _, ok := funcs[c.funcName] + if !ok { + return "", errUndeclared{ + name: c.funcName, + isFunc: true, + line: c.line(), + } + } + ret := allocReg() fmt.Fprintf(w, "%s =w call $%s(", ret, c.funcName) -- cgit v1.2.3