Index: test/expression_command/namespace/Makefile =================================================================== --- /dev/null +++ test/expression_command/namespace/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../make + +CXX_SOURCES := base.cpp derived.cpp main.cpp + +include $(LEVEL)/Makefile.rules Index: test/expression_command/namespace/TestExprsNamesapce.py =================================================================== --- /dev/null +++ test/expression_command/namespace/TestExprsNamesapce.py @@ -0,0 +1,22 @@ +import unittest2 +import lldb +import lldbutil +from lldbtest import * + +class ExprCharTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test_namespace_inline_constructor(self): + self.buildDefault() + self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) + self.runCmd("breakpoint set -n main", RUN_SUCCEEDED) + self.runCmd("run", RUN_SUCCEEDED) + self.runCmd("thread step-in") + self.expect("expression 12345", "12345") + +if __name__ == '__main__': + import atexit + lldb.SBDebugger.Initialize() + atexit.register(lambda: lldb.SBDebugger.Terminate()) + unittest2.main() Index: test/expression_command/namespace/base.h =================================================================== --- /dev/null +++ test/expression_command/namespace/base.h @@ -0,0 +1,13 @@ +namespace NS +{ + class FooNS + { + public: + virtual void bar(); + virtual char baz() = 0; + + protected: + int x; + }; +} + Index: test/expression_command/namespace/base.cpp =================================================================== --- /dev/null +++ test/expression_command/namespace/base.cpp @@ -0,0 +1,9 @@ +#include "base.h" +#include + +using namespace NS; + +void FooNS::bar() { + printf("FooNS\n"); +} + Index: test/expression_command/namespace/derived.h =================================================================== --- /dev/null +++ test/expression_command/namespace/derived.h @@ -0,0 +1,13 @@ +#include "base.h" +#include + +class Foo : public NS::FooNS +{ +public: + Foo() { + printf("CTR\n"); + } + + char baz() override; +}; + Index: test/expression_command/namespace/derived.cpp =================================================================== --- /dev/null +++ test/expression_command/namespace/derived.cpp @@ -0,0 +1,6 @@ +#include "derived.h" + +char Foo::baz() { + return (char)(x&0xff); +} + Index: test/expression_command/namespace/main.cpp =================================================================== --- /dev/null +++ test/expression_command/namespace/main.cpp @@ -0,0 +1,7 @@ +#include "derived.h" + +int main() { + Foo f; + f.bar(); + return f.baz(); +}