Example #1
0
 def test_pos_lt(self):
     self.assertLess(scanner.Pos('<fake>', 0, 0),
                     scanner.Pos('<fake>', 0, 1))
     self.assertLess(scanner.Pos('<fake>', 0, 0),
                     scanner.Pos('<fake>', 1, 0))
     self.assertGreaterEqual(scanner.Pos('<fake>', 0, 0),
                             scanner.Pos('<fake>', 0, 0))
Example #2
0
    def test_pprint_parse_error(self):
        output = io.StringIO()
        filename = '/fake/test_file.x'
        text = 'oh\nwhoops\nI did an\nerror somewhere\nthat is bad'
        with fakefs_util.scoped_fakefs(filename, text):
            pos = scanner.Pos(filename, lineno=2, colno=0)
            span = Span(pos, pos.bump_col())
            error = parser.ParseError(span, 'This is bad')
            parser_helpers.pprint_positional_error(error,
                                                   output=cast(
                                                       io.IOBase, output),
                                                   color=False,
                                                   error_context_line_count=3)

        expected = textwrap.dedent("""\
    /fake/test_file.x:2-4
      0002: whoops
    * 0003: I did an
            ^^ This is bad @ /fake/test_file.x:3:1
      0004: error somewhere
    """)
        self.assertMultiLineEqual(expected, output.getvalue())
Example #3
0
 def test_bindings_stack(self):
     top = parser.Bindings(None)
     leaf0 = parser.Bindings(top)
     leaf1 = parser.Bindings(top)
     a = ast.BuiltinNameDef('a')
     b = ast.BuiltinNameDef('b')
     c = ast.BuiltinNameDef('c')
     top.add('a', a)
     leaf0.add('b', b)
     leaf1.add('c', c)
     pos = scanner.Pos(self.fake_filename, lineno=0, colno=0)
     span = Span(pos, pos)
     self.assertEqual(leaf0.resolve('a', span), a)
     self.assertEqual(leaf1.resolve('a', span), a)
     self.assertEqual(top.resolve('a', span), a)
     with self.assertRaises(parser.ParseError):
         top.resolve('b', span)
     with self.assertRaises(parser.ParseError):
         leaf1.resolve('b', span)
     with self.assertRaises(parser.ParseError):
         leaf0.resolve('c', span)
     self.assertEqual(leaf0.resolve('b', span), b)
     self.assertEqual(leaf1.resolve('c', span), c)