================ @@ -204,6 +204,89 @@ void Parser::CheckNestedObjCContexts(SourceLocation AtLoc) Diag(Decl->getBeginLoc(), diag::note_objc_container_start) << (int)ock; } +/// An Objective-C public name (a class name or protocol name) is +/// expected to have a prefix as all names are in a single global +/// namespace. +/// +/// If the `-Wobjc-prefix=<list>` option is active, it specifies a list +/// of permitted prefixes; classes and protocols must start with a +/// prefix from that list. Note that in this case, we check that +/// the name matches <prefix>(<upper-case><not-upper-case>?)?, so e.g. +/// if you specify `-Wobjc-prefix=NS`, then `NSURL` would not be valid; +/// you would want to specify `-Wobjc-prefix=NS,NSURL` in that case. +/// +/// If the -Wobjc-prefix-length is set to N, the name must start +/// with N+1 capital letters, which must be followed by a character +/// that is not a capital letter. +/// +/// For instance, for N set to 2, the following are valid: +/// +/// NSString +/// NSArray +/// +/// but these are not: +/// +/// MyString +/// NSKString +/// NSnotAString +/// +/// We make a special exception for NSCF things when the prefix is set +/// to length 2, because that's an unusual special case in the implementation +/// of the Cocoa frameworks. +/// +/// Names that start with underscores are exempt from this check, but +/// are reserved for the system and should not be used by user code. +bool Parser::isObjCPublicNamePrefixAllowed(StringRef name) { ---------------- tbaederr wrote:
Newly introduced parameters and variables should start with an uppercase letter. https://github.com/llvm/llvm-project/pull/97597 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits