[PATCH] D26667: Teach clang that 'sv' is a fine literal suffix

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 15 07:39:44 PST 2016


aaron.ballman added inline comments.


================
Comment at: lib/Lex/LiteralSupport.cpp:768
       .Cases("il", "i", "if", true)
+      .Case("sv", true)
       .Default(false);
----------------
malcolm.parsons wrote:
> aaron.ballman wrote:
> > mclow.lists wrote:
> > > malcolm.parsons wrote:
> > > > This is in `NumericLiteralParser::isValidUDSuffix()`.
> > > > 
> > > > If a change is needed for `"sv"`, wouldn't it be in `StringLiteralParser`?
> > > Would it be?  I don't know.  `"s"` appears here, which is used for both 'string' and 'seconds'.
> > This function is used by the numeric literal parser, and so `sv` does not make sense there. It's also used by SemaDeclCXX.cpp in `CheckLiteralOperatorDeclaration()`, where this change would make sense.
> > 
> > I was asking about test cases; I was wondering what problem this was trying to solve. I suspect you want to modify `CheckLiteralOperatorDeclaration()` rather than `NumericLiteralParser`.
> `s` for `std::string` seems to be handled in `Lexer::LexUDSuffix()`:
> 
> ```
>             IsUDSuffix = (Chars == 1 && Buffer[0] == 's') ||
>                          NumericLiteralParser::isValidUDSuffix(
>                              getLangOpts(), StringRef(Buffer, Chars));
> ```
Good catch, there too (I haven't done a complete tour to see where else may need changing).


https://reviews.llvm.org/D26667





More information about the cfe-commits mailing list