diff options
Diffstat (limited to 'decl.go')
-rw-r--r-- | decl.go | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2024 Himbeer <himbeer@disroot.org> +// +// SPDX-License-Identifier: GPL-3.0-or-later + +package main + +var funcs = map[string]struct{}{} +var localConsts = map[string]map[string]string{} +var localMuts = map[string]map[string]struct{}{} + +func isDeclared(name string, toplevel bool) bool { + if toplevel { + return isDeclaredToplevel(name) + } + + return isDeclaredLocal(currentFunc, name) +} + +func isDeclaredToplevel(name string) bool { + _, ok := funcs[name] + return ok +} + +func isDeclaredLocal(function string, local string) bool { + _, constant := localConsts[function][local] + _, mutable := localMuts[function][local] + return constant || mutable +} |