
Since the introduction of class properties in Objective-C it is possible to declare a class and an instance property with the same identifier in an interface/protocol. Right now Clang just generates debug information for whatever property comes first in the source file. The second property is ignored as it's filtered out by the set of already emitted properties (which is just using the identifier of the property to check for equivalence). I don't think generating debug info in this case was never supported as the identifier filter is in place since 7123bca7fb6e1dde51be8329cfb523d2bb9ffadf (which precedes the introduction of class properties). This patch expands the filter to take in account identifier + whether the property is class/instance. This ensures that both properties are emitted in this special situation. Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D99512
19 lines
484 B
Objective-C
19 lines
484 B
Objective-C
// RUN: %clang_cc1 -S -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
|
|
|
|
// Both properties should be emitted as having a class and an instance property
|
|
// with the same name is allowed.
|
|
@interface I1
|
|
// CHECK: !DIObjCProperty(name: "p1"
|
|
// CHECK-SAME: line: [[@LINE+1]]
|
|
@property int p1;
|
|
// CHECK: !DIObjCProperty(name: "p1"
|
|
// CHECK-SAME: line: [[@LINE+1]]
|
|
@property(class) int p1;
|
|
@end
|
|
|
|
@implementation I1
|
|
@synthesize p1;
|
|
@end
|
|
|
|
void foo(I1 *iptr) {}
|