lang: ast: Add scope feedback for classes

We did this elsewhere for functions, let's add classes too.
This commit is contained in:
James Shubin
2025-06-05 23:05:14 -04:00
parent dcd4f0709f
commit 4189a1299a
2 changed files with 18 additions and 0 deletions

View File

@@ -6828,6 +6828,9 @@ func (obj *StmtInclude) SetScope(scope *interfaces.Scope) error {
stmt, exists := scope.Classes[obj.Name]
if !exists {
if obj.data.Debug || true { // TODO: leave this on permanently?
classScopeFeedback(scope, obj.data.Logf)
}
err := fmt.Errorf("class `%s` does not exist in this scope", obj.Name)
return highlightHelper(obj, obj.data.Logf, err)
}

View File

@@ -562,6 +562,21 @@ func lambdaScopeFeedback(scope *interfaces.Scope, logf func(format string, v ...
}
}
// classScopeFeedback logs some messages about what is actually in scope so that
// the user gets a hint about what's going on. This is useful for catching bugs
// in our programming or in user code!
func classScopeFeedback(scope *interfaces.Scope, logf func(format string, v ...interface{})) {
logf("classes in scope:")
names := []string{}
for name := range scope.Classes {
names = append(names, name)
}
sort.Strings(names)
for _, name := range names {
logf("class %s", name)
}
}
// highlightHelper give the user better file/line number feedback.
func highlightHelper(node interfaces.Node, logf func(format string, v ...interface{}), err error) error {
displayer, ok := node.(interfaces.TextDisplayer)