Skip to content

Commit

Permalink
[lldb] Test 'v' support for direct ivar access (NFC)
Browse files Browse the repository at this point in the history
Add basic tests for `frame variable`'s ability to direct access fields of `this` and
ivars of `self`.

Differential Revision: https://reviews.llvm.org/D145348
  • Loading branch information
kastiglione committed Mar 6, 2023
1 parent 04a29a3 commit 03e5c46
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lldb/test/API/commands/frame/var/direct-ivar/Makefile
@@ -0,0 +1,2 @@
OBJCXX_SOURCES := main.mm
include Makefile.rules
@@ -0,0 +1,15 @@
import lldb
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil


class TestCase(TestBase):
def test_cpp_this(self):
self.build()
lldbutil.run_to_source_breakpoint(self, "this", lldb.SBFileSpec("main.mm"))
self.expect("frame variable m_field", startstr="(int) m_field = 30")

def test_objc_self(self):
self.build()
lldbutil.run_to_source_breakpoint(self, "self", lldb.SBFileSpec("main.mm"))
self.expect("frame variable _ivar", startstr="(int) _ivar = 41")
28 changes: 28 additions & 0 deletions lldb/test/API/commands/frame/var/direct-ivar/main.mm
@@ -0,0 +1,28 @@
#include <objc/NSObject.h>

struct Structure {
int m_field;
int fun() { return this->m_field; }
};

@interface Classic : NSObject {
@public
int _ivar;
}
@end

@implementation Classic
- (int)fun {
return self->_ivar;
}
@end

int main() {
Structure s;
s.m_field = 30;
s.fun();

Classic *c = [Classic new];
c->_ivar = 41;
[c fun];
}

0 comments on commit 03e5c46

Please sign in to comment.