Add a test for breaking on overloaded functions by name.

This commit is contained in:
Jim Ingham 2022-02-16 17:46:53 -08:00
parent d8364e3ea4
commit dd8490d207
3 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,4 @@
CXX_SOURCES := main.cpp
CXXFLAGS_EXTRAS := -std=c++14
include Makefile.rules

View File

@ -0,0 +1,32 @@
"""
Test setting a breakpoint on an overloaded function by name.
"""
import re
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestBreakpointOnOverload(TestBase):
mydir = TestBase.compute_mydir(__file__)
def check_breakpoint(self, name):
bkpt = self.target.BreakpointCreateByName(name)
self.assertEqual(bkpt.num_locations, 1, "Got one location")
addr = bkpt.locations[0].GetAddress()
self.assertTrue(addr.function.IsValid(), "Got a real function")
self.assertEqual(addr.function.name, name, "Got the right name")
def test_break_on_overload(self):
self.build()
self.target = lldbutil.run_to_breakpoint_make_target(self)
self.check_breakpoint("a_function(int)")
self.check_breakpoint("a_function(double)")
self.check_breakpoint("a_function(int, double)")
self.check_breakpoint("a_function(double, int)")

View File

@ -0,0 +1,29 @@
int a_function(int x) {
return x * x;
}
int a_function(double x) {
return static_cast<int>(x * x);
}
int a_function(double x, int y) {
return y * y;
}
int a_function(int x, double y) {
return static_cast<int>(y * y);
}
int main(int argc, char const *argv[]) {
// This is a random comment.
int int_val = 20;
double double_val = 20.0;
int result = a_function(int_val);
result += a_function(double_val);
result += a_function(double_val, int_val);
result += a_function(int_val, double_val);
return result;
}