Fariborz Jahanian <[email protected]> writes: > Author: fjahanian > Date: Thu Oct 2 12:57:26 2014 > New Revision: 218895 > > URL: http://llvm.org/viewvc/llvm-project?rev=218895&view=rev > Log: > Diagnose mixed use of '_' and '.' as version > separators in my previous patch. > > Modified: > cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td > cfe/trunk/lib/Parse/ParseDecl.cpp > cfe/trunk/test/SemaObjC/attr-availability-1.m > > Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td?rev=218895&r1=218894&r2=218895&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Thu Oct 2 12:57:26 > 2014 > @@ -775,6 +775,9 @@ def err_lambda_missing_parens : Error< > // Availability attribute > def err_expected_version : Error< > "expected a version of the form 'major[.minor[.subminor]]'">; > +def warn_expected_consistent_version_separator : Warning< > + "use same version number separators '_' or '.'; as in " > + "'major[.minor[.subminor]]'">, InGroup<Availability>; > def err_zero_version : Error< > "version number must have non-zero major, minor, or sub-minor version">; > def err_availability_expected_platform : Error< > > Modified: cfe/trunk/lib/Parse/ParseDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=218895&r1=218894&r2=218895&view=diff > ============================================================================== > --- cfe/trunk/lib/Parse/ParseDecl.cpp (original) > +++ cfe/trunk/lib/Parse/ParseDecl.cpp Thu Oct 2 12:57:26 2014 > @@ -688,7 +688,8 @@ VersionTuple Parser::ParseVersionTuple(S > return VersionTuple(Major); > } > > - if (!VersionNumberSeparator(ThisTokBegin[AfterMajor]) > + const char AfterMajorSeparator = ThisTokBegin[AfterMajor]; > + if (!VersionNumberSeparator(AfterMajorSeparator) > || (AfterMajor + 1 == ActualLength)) { > Diag(Tok, diag::err_expected_version); > SkipUntil(tok::comma, tok::r_paren, > @@ -716,13 +717,17 @@ VersionTuple Parser::ParseVersionTuple(S > return VersionTuple(Major, Minor); > } > > + const char AfterMinorSeparator = ThisTokBegin[AfterMinor]; > // If what follows is not a '.' or '_', we have a problem. > - if (!VersionNumberSeparator(ThisTokBegin[AfterMinor])) { > + if (!VersionNumberSeparator(AfterMinorSeparator)) {
The comment should probably be updated to reflect that we're looking for the same separator as before. > Diag(Tok, diag::err_expected_version); > SkipUntil(tok::comma, tok::r_paren, > StopAtSemi | StopBeforeMatch | StopAtCodeCompletion); > return VersionTuple(); > } > + > + if (AfterMajorSeparator != AfterMinorSeparator) > + Diag(Tok, diag::warn_expected_consistent_version_separator); > > // Parse the subminor version. > unsigned AfterSubminor = AfterMinor + 1; > > Modified: cfe/trunk/test/SemaObjC/attr-availability-1.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/attr-availability-1.m?rev=218895&r1=218894&r2=218895&view=diff > ============================================================================== > --- cfe/trunk/test/SemaObjC/attr-availability-1.m (original) > +++ cfe/trunk/test/SemaObjC/attr-availability-1.m Thu Oct 2 12:57:26 2014 > @@ -90,3 +90,8 @@ id NSNibOwner, topNibObjects; > } > > @end > + > +@interface Mixed > +- (void)Meth1 __attribute__((availability(macosx,introduced=10.3_0))); // > expected-warning {{use same version number separators '_' or '.'}} > +- (void)Meth2 __attribute__((availability(macosx,introduced=10_3.1))); // > expected-warning {{use same version number separators '_' or '.'}} > +@end > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
