llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Michael Buch (Michael137) <details> <summary>Changes</summary> There's a couple of tests like this. This patch series renames these to something more descriptive and adjusts the tests to check IR. Currently the tests check raw assembly output (not even dwarfdump). Which most likely hid some bugs around property debug-info. --- Full diff: https://github.com/llvm/llvm-project/pull/165286.diff 5 Files Affected: - (added) clang/test/DebugInfo/ObjC/property-basic.m (+20) - (removed) clang/test/DebugInfo/ObjC/property.m (-15) - (added) lldb/test/API/lang/objc/synthesized-property-accessor/Makefile (+4) - (added) lldb/test/API/lang/objc/synthesized-property-accessor/TestSynthesizedPropertyAccessor.py (+30) - (added) lldb/test/API/lang/objc/synthesized-property-accessor/main.m (+14) ``````````diff diff --git a/clang/test/DebugInfo/ObjC/property-basic.m b/clang/test/DebugInfo/ObjC/property-basic.m new file mode 100644 index 0000000000000..65e1d7a6a9b1f --- /dev/null +++ b/clang/test/DebugInfo/ObjC/property-basic.m @@ -0,0 +1,20 @@ +// Checks basic debug-info generation for property. Makes sure we +// create a DIObjCProperty for the synthesized property. + +// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s + +// CHECK: !DIObjCProperty(name: "p1" +// CHECK-SAME: attributes: 2316 +// CHECK-SAME: type: ![[P1_TYPE:[0-9]+]] +// +// CHECK: ![[P1_TYPE]] = !DIBasicType(name: "int" + +@interface I1 { +int p1; +} +@property int p1; +@end + +@implementation I1 +@synthesize p1; +@end diff --git a/clang/test/DebugInfo/ObjC/property.m b/clang/test/DebugInfo/ObjC/property.m deleted file mode 100644 index ca013b24be421..0000000000000 --- a/clang/test/DebugInfo/ObjC/property.m +++ /dev/null @@ -1,15 +0,0 @@ -// FIXME: Check IR rather than asm, then triple is not needed. -// RUN: %clang_cc1 -triple %itanium_abi_triple -S -debug-info-kind=limited %s -o - | FileCheck %s - -// CHECK: AT_APPLE_property_name -// CHECK: AT_APPLE_property_attribute -// CHECK: AT_APPLE_property -@interface I1 { -int p1; -} -@property int p1; -@end - -@implementation I1 -@synthesize p1; -@end diff --git a/lldb/test/API/lang/objc/synthesized-property-accessor/Makefile b/lldb/test/API/lang/objc/synthesized-property-accessor/Makefile new file mode 100644 index 0000000000000..89e6e796b1970 --- /dev/null +++ b/lldb/test/API/lang/objc/synthesized-property-accessor/Makefile @@ -0,0 +1,4 @@ +OBJC_SOURCES := main.m +LDFLAGS := -lobjc + +include Makefile.rules diff --git a/lldb/test/API/lang/objc/synthesized-property-accessor/TestSynthesizedPropertyAccessor.py b/lldb/test/API/lang/objc/synthesized-property-accessor/TestSynthesizedPropertyAccessor.py new file mode 100644 index 0000000000000..7686ab48e1189 --- /dev/null +++ b/lldb/test/API/lang/objc/synthesized-property-accessor/TestSynthesizedPropertyAccessor.py @@ -0,0 +1,30 @@ +""" +Test debug-info parsing of synthesized Objective-C properties. +""" + +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestSynthesizedPropertyAccessor(TestBase): + def test(self): + self.build() + + (target, _, _, _) = lldbutil.run_to_source_breakpoint( + self, "return f.fooProp", lldb.SBFileSpec("main.m") + ) + + getters = target.FindFunctions("-[Foo fooProp]", lldb.eFunctionNameTypeSelector) + self.assertEqual(len(getters), 1) + getter = getters[0].function.GetType() + self.assertTrue(getter) + self.assertEqual(getter.GetDisplayTypeName(), "int ()") + + setters = target.FindFunctions( + "-[Foo setFooProp:]", lldb.eFunctionNameTypeSelector + ) + self.assertEqual(len(setters), 1) + setter = setters[0].function.GetType() + self.assertTrue(setter) + self.assertEqual(setter.GetDisplayTypeName(), "void (id)") diff --git a/lldb/test/API/lang/objc/synthesized-property-accessor/main.m b/lldb/test/API/lang/objc/synthesized-property-accessor/main.m new file mode 100644 index 0000000000000..418616267f9ae --- /dev/null +++ b/lldb/test/API/lang/objc/synthesized-property-accessor/main.m @@ -0,0 +1,14 @@ +#import <Foundation/Foundation.h> + +@interface Foo : NSObject +@property(readwrite) int fooProp; +@end + +@implementation Foo +@end + +int main() { + Foo *f = [Foo new]; + [f setFooProp:10]; + return f.fooProp; +} `````````` </details> https://github.com/llvm/llvm-project/pull/165286 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
