PLS incorrectly reports error for self-assignment to local variable #513
Description
The analyzer incorrectly flags the following (admittedly strange) code with a use-before-def error/warning.
The problem is due to a somewhat hacky piece of code in DDG.Walk(AssignmentStatement node)
that attempts to detect the case "fob = fob" and temporarily manipulate the scope before evaluating the RHS of the assignment. This hack is problematic for a number of reasons. For example, it doesn't properly handle other more complex expressions like "fob = fob + 1".
I think the preferable solution is to remove the hack but modify the logic to allow reading of symbols in outer scopes even if VisibleToChildren
is false. This property should probably be renamed WritableByChildren
since Python allows reading of symbols from outer scopes.
See the following documentation in section 2.1 of the official Python docs.