diff options
author | Himbeer <himbeer@disroot.org> | 2024-08-30 19:29:38 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-08-30 19:29:38 +0200 |
commit | 358edcaaeadfe632ff9a3a0479b11785c9ca2466 (patch) | |
tree | 1005e1c959c1d1970df07de181c1a8db2653df70 /decl.go | |
parent | 56ccd1992d5a0e420200b36e394f9ee39458e9eb (diff) |
Add redeclaration checks for functions and locals
Closes #1.
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 +} |