Rewrite declarationForName()
This causes the correct declaration to be found in some unusual cases that previously failed.
Only names declared before a function definition, or at module scope, were found in its body. Names may be declared later (but before the function is called); these were not found.
BUG: 378083
- Class attributes from any enclosing class definition were found in default arguments, not only those from a method's parent class.
- Class or instance attributes were, correctly, not directly visible inside a method body (only with self. or similar), but hid declarations of the same name in outer contexts that should be found.