From e24ca294b65e12125d00406fa5490c6f512bfae5 Mon Sep 17 00:00:00 2001 From: Jimmy Lai Date: Fri, 27 Sep 2019 10:46:20 -0700 Subject: [PATCH] use LocalScope in ScopeVisitor._new_scope to simplify typing --- libcst/metadata/scope_provider.py | 8 ++------ libcst/metadata/tests/test_scope_provider.py | 8 +++++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/libcst/metadata/scope_provider.py b/libcst/metadata/scope_provider.py index 5f3c7a0e..6eb3ccf5 100644 --- a/libcst/metadata/scope_provider.py +++ b/libcst/metadata/scope_provider.py @@ -359,14 +359,10 @@ class ScopeVisitor(cst.CSTVisitor): @contextmanager def _new_scope( - self, kind: Type[Scope], name: Optional[str] = None + self, kind: Type[LocalScope], name: Optional[str] = None ) -> Iterator[None]: parent_scope = self.scope - if issubclass(kind, LocalScope): - # pyre-ignore: pyre cannot understand issubclass and complained the extra name arg - self.scope = kind(parent_scope, name) - else: - self.scope = kind(parent_scope) + self.scope = kind(parent_scope, name) try: yield finally: diff --git a/libcst/metadata/tests/test_scope_provider.py b/libcst/metadata/tests/test_scope_provider.py index e0684431..bb8de0ab 100644 --- a/libcst/metadata/tests/test_scope_provider.py +++ b/libcst/metadata/tests/test_scope_provider.py @@ -642,5 +642,11 @@ class ScopeProviderTest(UnitTest): self.assertEqual( scope_of_f.get_fully_qualified_names_for(cst.Name(value=builtin)), {f"builtins.{builtin}"}, - f"test builtin: {builtin}", + f"Test builtin: {builtin}.", ) + + self.assertEqual( + scope_of_module.get_fully_qualified_names_for(cst.Name(value="d")), + set(), + "Test variable d in global scope.", + )