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"')
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'))