示例#1
0
文件: ast_test.py 项目: mfkiwl/xls
    def test_visit_index(self):
        fake_span = self.fake_span
        m = self.m
        # Make a t[i] inde xnode.
        t = ast.NameRef(m, fake_span, 't', ast.NameDef(m, fake_span, 't'))
        i = ast.NameRef(m, fake_span, 'i', ast.NameDef(m, fake_span, 'i'))
        index = ast.Index(m, fake_span, t, i)

        c = _Collector()
        visit(index, c)
        self.assertEqual(c.collected, [t, i, index])
示例#2
0
文件: ast_test.py 项目: mfkiwl/xls
    def test_visit_unop(self):
        fake_span = self.fake_span
        m = self.m
        i_def = ast.NameDef(m, fake_span, 'i')
        i_ref = ast.NameRef(m, fake_span, 'i', i_def)
        negated = ast.Unop(m, fake_span, ast.UnopKind.NEG, i_ref)

        c = _Collector()
        visit(negated, c)
        self.assertEqual(c.collected, [i_ref, negated])
示例#3
0
 def test_identity_function(self):
     m = cpp_ast.Module('test')
     name_def_x = cpp_ast.NameDef(m, self.fake_span, 'x')
     name_ref_x = cpp_ast.NameRef(m, self.fake_span, 'x', name_def_x)
     type_u32 = cpp_ast.BuiltinTypeAnnotation(m, self.fake_span,
                                              cpp_ast.BuiltinType.U32)
     param_x = cpp_ast.Param(m, name_def_x, type_u32)
     name_def_f = cpp_ast.NameDef(m, self.fake_span, 'f')
     params = (param_x, )
     f = cpp_ast.Function(m,
                          self.fake_span,
                          name_def_f, (),
                          params,
                          type_u32,
                          name_ref_x,
                          public=False)
     self.assertEqual(str(f), 'fn f(x: u32) -> u32 {\n  x\n}')
示例#4
0
 def _builtin_name_ref(self, identifier: Text) -> ast.NameRef:
     return ast.NameRef(self.m, self.fake_span, identifier,
                        ast.BuiltinNameDef(self.m, identifier))
示例#5
0
 def _make_name_ref(self, name_def: ast.NameDef) -> ast.NameRef:
     return ast.NameRef(self.m, self.fake_span, name_def.identifier,
                        name_def)