Exemple #1
0
 def testResolveName(self):
   module_block = _MakeModuleBlock()
   block_vars = {'foo': block.Var('foo', block.Var.TYPE_LOCAL)}
   func1_block = block.FunctionBlock(module_block, 'func1', block_vars, False)
   block_vars = {'bar': block.Var('bar', block.Var.TYPE_LOCAL)}
   func2_block = block.FunctionBlock(func1_block, 'func2', block_vars, False)
   block_vars = {'case': block.Var('case', block.Var.TYPE_LOCAL)}
   keyword_block = block.FunctionBlock(
       module_block, 'keyword_func', block_vars, False)
   class1_block = block.ClassBlock(module_block, 'Class1', set())
   class2_block = block.ClassBlock(func1_block, 'Class2', set())
   self.assertRegexpMatches(self._ResolveName(module_block, 'foo'),
                            r'ResolveGlobal\b.*foo')
   self.assertRegexpMatches(self._ResolveName(module_block, 'bar'),
                            r'ResolveGlobal\b.*bar')
   self.assertRegexpMatches(self._ResolveName(module_block, 'baz'),
                            r'ResolveGlobal\b.*baz')
   self.assertRegexpMatches(self._ResolveName(func1_block, 'foo'),
                            r'CheckLocal\b.*foo')
   self.assertRegexpMatches(self._ResolveName(func1_block, 'bar'),
                            r'ResolveGlobal\b.*bar')
   self.assertRegexpMatches(self._ResolveName(func1_block, 'baz'),
                            r'ResolveGlobal\b.*baz')
   self.assertRegexpMatches(self._ResolveName(func2_block, 'foo'),
                            r'CheckLocal\b.*foo')
   self.assertRegexpMatches(self._ResolveName(func2_block, 'bar'),
                            r'CheckLocal\b.*bar')
   self.assertRegexpMatches(self._ResolveName(func2_block, 'baz'),
                            r'ResolveGlobal\b.*baz')
   self.assertRegexpMatches(self._ResolveName(class1_block, 'foo'),
                            r'ResolveClass\(.*, nil, .*foo')
   self.assertRegexpMatches(self._ResolveName(class2_block, 'foo'),
                            r'ResolveClass\(.*, µfoo, .*foo')
   self.assertRegexpMatches(self._ResolveName(keyword_block, 'case'),
                            r'CheckLocal\b.*µcase, "case"')
Exemple #2
0
 def testGlobalIsParam(self):
     visitor = block.BlockVisitor()
     visitor.vars['foo'] = block.Var('foo',
                                     block.Var.TYPE_PARAM,
                                     arg_index=0)
     self.assertRaisesRegex(util.ParseError, 'is parameter and global',
                            visitor.visit, _ParseStmt('global foo'))