[Python-checkins] CVS: python/dist/src/Tools/compiler/compiler symbols.py,1.2,1.3

Jeremy Hylton jhylton@users.sourceforge.net
Mon, 09 Apr 2001 13:12:01 -0700


Update of /cvsroot/python/python/dist/src/Tools/compiler/compiler
In directory usw-pr-cvs1:/tmp/cvs-serv4852/compiler

Modified Files:
	symbols.py 
Log Message:
Add globals to list of names returned by get_names().
Fix func arg processing to handle args in tuples.
In test code, skip names beginning with '.'.


Index: symbols.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/symbols.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** symbols.py	2001/04/09 13:57:32	1.2
--- symbols.py	2001/04/09 20:11:59	1.3
***************
*** 62,65 ****
--- 62,66 ----
          d.update(self.defs)
          d.update(self.uses)
+         d.update(self.globals)
          return d.keys()
  
***************
*** 112,117 ****
          scope = FunctionScope(node.name, self.module, self.klass)
          self.scopes[node] = scope
!         for name in node.argnames:
!             scope.add_param(name)
          self.visit(node.code, scope)
  
--- 113,117 ----
          scope = FunctionScope(node.name, self.module, self.klass)
          self.scopes[node] = scope
!         self._do_args(scope, node.argnames)
          self.visit(node.code, scope)
  
***************
*** 121,128 ****
          scope = LambdaScope(self.module, self.klass)
          self.scopes[node] = scope
!         for name in node.argnames:
!             scope.add_param(name)
          self.visit(node.code, scope)
  
      def visitClass(self, node, parent):
          parent.add_def(node.name)
--- 121,134 ----
          scope = LambdaScope(self.module, self.klass)
          self.scopes[node] = scope
!         self._do_args(scope, node.argnames)
          self.visit(node.code, scope)
  
+     def _do_args(self, scope, args):
+         for name in args:
+             if type(name) == types.TupleType:
+                 self._do_args(scope, name)
+             else:
+                 scope.add_param(name)
+ 
      def visitClass(self, node, parent):
          parent.add_def(node.name)
***************
*** 218,222 ****
      def get_names(syms):
          return [s for s in [s.get_name() for s in syms.get_symbols()]
!                 if not s.startswith('_[')]        
      
      for file in sys.argv[1:]:
--- 224,228 ----
      def get_names(syms):
          return [s for s in [s.get_name() for s in syms.get_symbols()]
!                 if not (s.startswith('_[') or s.startswith('.'))]        
      
      for file in sys.argv[1:]:
***************
*** 257,261 ****
                                     l[0].get_names()):
                          print s.get_name()
!                         print get_names(s.get_namespace())
!                         print l[0].get_names()
                          sys.exit(-1)
--- 263,267 ----
                                     l[0].get_names()):
                          print s.get_name()
!                         print sort(get_names(s.get_namespace()))
!                         print sort(l[0].get_names())
                          sys.exit(-1)