rsmith accepted this revision.
rsmith added a comment.
This revision is now accepted and ready to land.

I like it, and it seems like it would nicely generalize if there are more cases 
that we find need this treatment.



================
Comment at: clang/lib/Lex/LiteralSupport.cpp:676-682
-      isLong = false;
-      isUnsigned = false;
-      isLongLong = false;
-      isFloat = false;
-      isHalf = false;
-      isImaginary = false;
-      MicrosoftInteger = 0;
----------------
We should still do this if `s != ThisTokEnd`, rather than relying on 
`isValidUDSuffix` to also validate that we have a valid built-in suffix. (Eg, 
if C++20 adds an "in" suffix for "inches", this patch would treat "1.0in" as a 
valid `_Complex double` literal if no `operator""in` is found, because we don't 
validate that all the suffix characters are used on the fallback path.)


================
Comment at: clang/lib/Lex/LiteralSupport.cpp:684
+    }
     return;
   }
----------------
Redundant return. Remove? :)


================
Comment at: clang/lib/Sema/SemaExpr.cpp:3355
+                                  /*DiagnoseMissing*/ !Literal.isImaginary)) {
+    case LOLR_Error: {
+      // Lookup failure for imaginary constants isn't fatal, there's still the
----------------
I'd feel a bit more comfortable with a different return value for "lookup 
failed but we've not issued an error", to make it more obvious that we never 
return `ExprError()` here without issuing a diagnostic.


https://reviews.llvm.org/D33424



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to