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])
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])
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}')
def _builtin_name_ref(self, identifier: Text) -> ast.NameRef: return ast.NameRef(self.m, self.fake_span, identifier, ast.BuiltinNameDef(self.m, identifier))
def _make_name_ref(self, name_def: ast.NameDef) -> ast.NameRef: return ast.NameRef(self.m, self.fake_span, name_def.identifier, name_def)