Skip to content

Commit caf4787

Browse files
authored
Fix class method and static method calls with --export-ref-info (#15282)
Previously they were sometimes reported as `builtins.type.method_name` (i.e. a method of `builtins.type` instead of e.g. `module.ClsName`). Now report them as `module.ClsName.method_name`.
1 parent 6c7e480 commit caf4787

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

mypy/refinfo.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@
22

33
from __future__ import annotations
44

5-
from mypy.nodes import LDEF, Expression, MemberExpr, MypyFile, NameExpr, RefExpr
5+
from mypy.nodes import (
6+
LDEF,
7+
Expression,
8+
MemberExpr,
9+
MypyFile,
10+
NameExpr,
11+
RefExpr,
12+
SymbolNode,
13+
TypeInfo,
14+
)
615
from mypy.traverser import TraverserVisitor
716
from mypy.typeops import tuple_fallback
817
from mypy.types import (
@@ -36,8 +45,11 @@ def record_ref_expr(self, expr: RefExpr) -> None:
3645
fullname = expr.fullname
3746
elif isinstance(expr, MemberExpr):
3847
typ = self.type_map.get(expr.expr)
48+
sym = None
49+
if isinstance(expr.expr, RefExpr):
50+
sym = expr.expr.node
3951
if typ:
40-
tfn = type_fullname(typ)
52+
tfn = type_fullname(typ, sym)
4153
if tfn:
4254
fullname = f"{tfn}.{expr.name}"
4355
if not fullname:
@@ -46,13 +58,15 @@ def record_ref_expr(self, expr: RefExpr) -> None:
4658
self.data.append({"line": expr.line, "column": expr.column, "target": fullname})
4759

4860

49-
def type_fullname(typ: Type) -> str | None:
61+
def type_fullname(typ: Type, node: SymbolNode | None = None) -> str | None:
5062
typ = get_proper_type(typ)
5163
if isinstance(typ, Instance):
5264
return typ.type.fullname
5365
elif isinstance(typ, TypeType):
5466
return type_fullname(typ.item)
5567
elif isinstance(typ, FunctionLike) and typ.is_type_obj():
68+
if isinstance(node, TypeInfo):
69+
return node.fullname
5670
return type_fullname(typ.fallback)
5771
elif isinstance(typ, TupleType):
5872
return type_fullname(tuple_fallback(typ))

0 commit comments

Comments
 (0)