Пример #1
0
 def testWriteExceptDispatcherBareExceptionNotLast(self):
   visitor = stmt.StatementVisitor(_MakeModuleBlock())
   handlers = [ast.ExceptHandler(type=None),
               ast.ExceptHandler(type=ast.Name(id='foo'))]
   self.assertRaisesRegexp(util.ParseError, r"default 'except:' must be last",
                           visitor._write_except_dispatcher,  # pylint: disable=protected-access
                           'exc', 'tb', handlers)
Пример #2
0
def _ParseAndVisit(source):
    mod = pythonparser.parse(source)
    _, future_features = imputil.parse_future_features(mod)
    importer = imputil.Importer(None, 'foo', 'foo.py', False)
    b = block.ModuleBlock(importer, '__main__', '<test>', source,
                          future_features)
    visitor = stmt.StatementVisitor(b)
    visitor.visit(mod)
    return visitor
Пример #3
0
 def testWriteExceptDispatcherBareExcept(self):
   visitor = stmt.StatementVisitor(_MakeModuleBlock())
   handlers = [ast.ExceptHandler(type=ast.Name(id='foo')),
               ast.ExceptHandler(type=None)]
   self.assertEqual(visitor._write_except_dispatcher(  # pylint: disable=protected-access
       'exc', 'tb', handlers), [1, 2])
   expected = re.compile(r'ResolveGlobal\(.*foo.*\bIsInstance\(.*'
                         r'goto Label1.*goto Label2', re.DOTALL)
   self.assertRegexpMatches(visitor.writer.getvalue(), expected)
Пример #4
0
 def testWriteExceptDispatcherMultipleExcept(self):
   visitor = stmt.StatementVisitor(_MakeModuleBlock())
   handlers = [ast.ExceptHandler(type=ast.Name(id='foo')),
               ast.ExceptHandler(type=ast.Name(id='bar'))]
   self.assertEqual(visitor._write_except_dispatcher(  # pylint: disable=protected-access
       'exc', 'tb', handlers), [1, 2])
   expected = re.compile(
       r'ResolveGlobal\(.*foo.*\bif .*\bIsInstance\(.*\{.*goto Label1.*'
       r'ResolveGlobal\(.*bar.*\bif .*\bIsInstance\(.*\{.*goto Label2.*'
       r'\bRaise\(exc\.ToObject\(\), nil, tb\.ToObject\(\)\)', re.DOTALL)
   self.assertRegexpMatches(visitor.writer.getvalue(), expected)
Пример #5
0
def _ParseAndVisitExpr(expr):
    visitor = stmt.StatementVisitor(_MakeModuleBlock())
    visitor.visit_expr(_ParseExpr(expr))
    return visitor.writer.getvalue()