[AMDGPU] Add True16 register classes.
[llvm-project.git] / lldb / test / API / lang / cpp / template-function / TestTemplateFunctions.py
blob71df90e6a6d161e53a90958df3d863625a5a6e33
1 """
2 Test that we can call C++ template fucntions.
3 """
4 import lldb
5 from lldbsuite.test.decorators import *
6 from lldbsuite.test.lldbtest import *
7 from lldbsuite.test import lldbutil
10 class TemplateFunctionsTestCase(TestBase):
11 def do_test_template_function(self, add_cast):
12 self.build()
13 lldbutil.run_to_source_breakpoint(
14 self, "// break here", lldb.SBFileSpec("main.cpp", False)
17 if add_cast:
18 self.expect_expr("(int) foo(42)", result_type="int", result_value="42")
19 else:
20 self.expect(
21 "expr b1 <=> b2",
22 error=True,
23 substrs=[
24 "warning: <user expression 0>:1:4: '<=>' is a single token in C++20; add a space to avoid a change in behavior"
28 self.expect_expr("foo(42)", result_type="int", result_value="42")
30 # overload with template case
31 self.expect_expr("h(10)", result_type="int", result_value="10")
33 # ADL lookup case
34 self.expect_expr("f(A::C{})", result_type="int", result_value="4")
36 # ADL lookup but no overload
37 self.expect_expr("g(A::C{})", result_type="int", result_value="4")
39 # variadic function cases
40 self.expect_expr("var(1)", result_type="int", result_value="10")
41 self.expect_expr("var(1, 2)", result_type="int", result_value="10")
43 # Overloaded templated operator case
44 self.expect_expr("b1 > b2", result_type="bool", result_value="true")
45 self.expect_expr("b1 >> b2", result_type="bool", result_value="true")
46 self.expect_expr("b1 << b2", result_type="bool", result_value="true")
47 self.expect_expr("b1 == b2", result_type="bool", result_value="true")
49 # Overloaded operator case
50 self.expect_expr("d1 > d2", result_type="bool", result_value="true")
51 self.expect_expr("d1 >> d2", result_type="bool", result_value="true")
52 self.expect_expr("d1 << d2", result_type="bool", result_value="true")
53 self.expect_expr("d1 == d2", result_type="bool", result_value="true")
55 @skipIfWindows
56 def test_template_function_with_cast(self):
57 self.do_test_template_function(True)
59 @skipIfWindows
60 @expectedFailureAll(debug_info=["dwarf", "gmodules", "dwo"])
61 def test_template_function_without_cast(self):
62 self.do_test_template_function(False)