lang: ast: Add scope feedback for classes
We did this elsewhere for functions, let's add classes too.
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user