cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
128 lines
3.7 KiB
Objective-C
128 lines
3.7 KiB
Objective-C
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
|
|
// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s
|
|
// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -Wno-objc-root-class %s
|
|
// RUN: %clang_cc1 -x objective-c++ -fobjc-arc -fsyntax-only -verify -Wno-objc-root-class %s
|
|
|
|
#if __has_attribute(objc_requires_super)
|
|
#define NS_REQUIRES_SUPER __attribute((objc_requires_super))
|
|
#endif
|
|
|
|
@protocol NSObject // expected-note {{protocol is declared here}}
|
|
- MyDealloc NS_REQUIRES_SUPER; // expected-warning {{'objc_requires_super' attribute cannot be applied to methods in protocols}}
|
|
@end
|
|
|
|
@interface Root
|
|
- MyDealloc __attribute((objc_requires_super));
|
|
- (void)XXX __attribute((objc_requires_super));
|
|
- (void) dealloc __attribute((objc_requires_super)); // expected-warning {{'objc_requires_super' attribute cannot be applied to dealloc}}
|
|
- (void) MyDeallocMeth; // Method in root is not annotated.
|
|
- (void) AnnotMyDeallocMeth __attribute((objc_requires_super));
|
|
- (void) AnnotMyDeallocMethCAT NS_REQUIRES_SUPER;
|
|
|
|
+ (void)registerClass:(id)name __attribute((objc_requires_super));
|
|
@end
|
|
|
|
@interface Baz : Root<NSObject>
|
|
- MyDealloc;
|
|
- (void) MyDeallocMeth __attribute((objc_requires_super)); // 'Baz' author has annotated method
|
|
- (void) AnnotMyDeallocMeth; // Annotated in root but not here. Annotation is inherited though
|
|
- (void) AnnotMeth __attribute((objc_requires_super)); // 'Baz' author has annotated method
|
|
@end
|
|
|
|
@implementation Baz
|
|
- MyDealloc {
|
|
[super MyDealloc];
|
|
return 0;
|
|
}
|
|
|
|
- (void)XXX {
|
|
[super MyDealloc];
|
|
} // expected-warning {{method possibly missing a [super XXX] call}}
|
|
|
|
- (void) MyDeallocMeth {}
|
|
- (void) AnnotMyDeallocMeth{} // expected-warning {{method possibly missing a [super AnnotMyDeallocMeth] call}}
|
|
- (void) AnnotMeth{};
|
|
|
|
+ (void)registerClass:(id)name {} // expected-warning {{method possibly missing a [super registerClass:] call}}
|
|
@end
|
|
|
|
@interface Bar : Baz
|
|
@end
|
|
|
|
@implementation Bar
|
|
- (void) MyDeallocMeth {} // expected-warning {{method possibly missing a [super MyDeallocMeth] call}}
|
|
- (void) AnnotMyDeallocMeth{} // expected-warning {{method possibly missing a [super AnnotMyDeallocMeth] call}}
|
|
- (void) AnnotMeth{}; // expected-warning {{method possibly missing a [super AnnotMeth] call}}
|
|
@end
|
|
|
|
@interface Bar(CAT)
|
|
- (void) AnnotMyDeallocMethCAT; // Annotated in root but not here. Annotation is inherited though
|
|
- (void) AnnotMethCAT __attribute((objc_requires_super));
|
|
@end
|
|
|
|
@implementation Bar(CAT)
|
|
- (void) MyDeallocMeth {} // expected-warning {{method possibly missing a [super MyDeallocMeth] call}}
|
|
- (void) AnnotMyDeallocMeth{} // expected-warning {{method possibly missing a [super AnnotMyDeallocMeth] call}}
|
|
- (void) AnnotMeth{}; // expected-warning {{method possibly missing a [super AnnotMeth] call}}
|
|
- (void) AnnotMyDeallocMethCAT{}; // expected-warning {{method possibly missing a [super AnnotMyDeallocMethCAT] call}}
|
|
- (void) AnnotMethCAT {};
|
|
@end
|
|
|
|
|
|
@interface Valid : Baz
|
|
@end
|
|
|
|
@implementation Valid
|
|
|
|
- (void)MyDeallocMeth {
|
|
[super MyDeallocMeth]; // no-warning
|
|
}
|
|
|
|
|
|
+ (void)registerClass:(id)name {
|
|
[super registerClass:name]; // no-warning
|
|
}
|
|
|
|
@end
|
|
|
|
@interface UIViewController @end
|
|
|
|
@interface ViewController : UIViewController
|
|
- (void) someMethodRequiringSuper NS_REQUIRES_SUPER;
|
|
- (IBAction) someAction;
|
|
- (IBAction) someActionRequiringSuper NS_REQUIRES_SUPER;
|
|
@end
|
|
|
|
|
|
@implementation ViewController
|
|
- (void) someMethodRequiringSuper
|
|
{
|
|
}
|
|
- (IBAction) someAction
|
|
{
|
|
}
|
|
- (IBAction) someActionRequiringSuper
|
|
{
|
|
}
|
|
@end
|
|
|
|
@interface Barn
|
|
- (void)openDoor __attribute__((objc_requires_super));
|
|
@end
|
|
|
|
@implementation Barn
|
|
- (void) openDoor
|
|
{
|
|
;
|
|
}
|
|
@end
|
|
|
|
@interface HorseBarn:Barn @end
|
|
|
|
@implementation HorseBarn
|
|
- (void) openDoor
|
|
{
|
|
;
|
|
} // expected-warning {{method possibly missing a [super openDoor] call}}
|
|
@end
|