From bccbe2a29dc849f36e03b223e3226823d410628d Mon Sep 17 00:00:00 2001 From: Jimmy Lai Date: Fri, 24 Jul 2020 09:09:52 -0700 Subject: [PATCH] [scope] add scope for ClassDef.name node --- libcst/metadata/scope_provider.py | 1 + libcst/metadata/tests/test_scope_provider.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libcst/metadata/scope_provider.py b/libcst/metadata/scope_provider.py index ccf2d00d5..991b58886 100644 --- a/libcst/metadata/scope_provider.py +++ b/libcst/metadata/scope_provider.py @@ -733,6 +733,7 @@ def visit_Arg(self, node: cst.Arg) -> bool: def visit_ClassDef(self, node: cst.ClassDef) -> Optional[bool]: self.scope.record_assignment(node.name.value, node) + self.provider.set_metadata(node.name, self.scope) for decorator in node.decorators: decorator.visit(self) for base in node.bases: diff --git a/libcst/metadata/tests/test_scope_provider.py b/libcst/metadata/tests/test_scope_provider.py index f84a415c8..93b602f4f 100644 --- a/libcst/metadata/tests/test_scope_provider.py +++ b/libcst/metadata/tests/test_scope_provider.py @@ -235,8 +235,9 @@ def foo(arg, **kwargs): """ ) scope_of_module = scopes[m] - func_body = ensure_type(m.body[1], cst.FunctionDef).body - func_body_statement = func_body.body[0] + func_def = ensure_type(m.body[1], cst.FunctionDef) + self.assertEqual(scopes[func_def], scopes[func_def.name]) + func_body_statement = func_def.body.body[0] scope_of_func = scopes[func_body_statement] self.assertIsInstance(scope_of_func, FunctionScope) self.assertTrue("global_var" in scope_of_module) @@ -266,6 +267,7 @@ def f(): cls_assignment = cast(Assignment, cls_assignments[0]) cls_def = ensure_type(m.body[1], cst.ClassDef) self.assertEqual(cls_assignment.node, cls_def) + self.assertEqual(scopes[cls_def], scopes[cls_def.name]) cls_body = cls_def.body cls_body_statement = cls_body.body[0] scope_of_class = scopes[cls_body_statement]