In `:break ident` support out of scope and nested identifiers (Fix #3000)
This patch fixes the bug and implements the feature request of #3000 (closed).
-
If
Moduleis a real module name andidentifiera name of a top-level function inModulethen:break Module.identiferworks also for anidentifierthat is out of scope. -
Extend the syntax for
:break identifierto:
:break [ModQual.]topLevelIdent[.nestedIdent]...[.nestedIdent]
ModQual is optional and is either the effective name of a module or
the local alias of a qualified import statement.
topLevelIdent is the name of a top level function in the module
referenced by ModQual.
nestedIdent is optional and the name of a function nested in a let or
where clause inside the previously mentioned function nestedIdent or
topLevelIdent.
If ModQual is a module name, then topLevelIdent can be any top level
identifier in this module. If ModQual is missing or a local alias of a
qualified import, then topLevelIdent must be in scope.
Breakpoints can be set on arbitrarily deeply nested functions, but the whole chain of nested function names must be specified.
To support the new functionality the code to tab complete :break was rewritten.