Description
It seems like we could remove the special handling of module references and other special node kinds in SymbolTableNode
so that we could remove the kind
attribute and replace it with a scope attribute, with only 3 possible values, corresponding to the current kinds LDEF
, GDEF
and MDEF
. We'd create new SymbolNode
subclasses for some of the node kinds. For module references we can perhaps just use a MypyFile
target node as a marker. We could move some attributes that are specific to type aliases to live in the new SymbolNode
subclass.
From #4080 (comment):
Type aliases are quite complicated (due to several corner cases). I tried to make some simplifications recently. It seems to me that we can introduce a dedicated SybmolNode (like Var or TypeInfo) and deprecate type_override and friends and just point .node to this new symbol node. This is major refactoring, but I think it may help.