================
Comment at: lib/Parse/ParseTemplate.cpp:674
@@ +673,3 @@
+                                       Declarator *D) {
+  if (EllipsisLoc.isValid()) {
+    FixItHint Insertion;
----------------
Please move this check to the callers in `ParseDecl.cpp`, and change this to an 
assert.

================
Comment at: lib/Parse/ParseTemplate.cpp:676-679
@@ +675,6 @@
+    FixItHint Insertion;
+    if (D && D->getEllipsisLoc().isInvalid()) {
+      Insertion = FixItHint::CreateInsertion(CorrectLoc, "...");
+      D->setEllipsisLoc(EllipsisLoc);
+    }
+    else if (!D && CorrectLoc.isValid())
----------------
I don't really like the interface of this function:

 * It's very `Declarator`-specific, and yet is called in non-`Declarator` cases
 * It gives the wrong fixit in the template-type-parameter and 
template-template-parameter cases because it can't tell whether there was 
already an ellipsis.

Maybe split it into:

  DiagnoseMisplacedEllipsis(SourceLocation NewLoc, SourceLocation CorrectLoc, 
bool AlreadyHasEllipsis);
  DiagnoseMisplacedEllipsisInDeclarator(SourceLocation NewLoc, SourceLocation 
CorrectLoc, Declarator *D);

... with the second function calling the first?

================
Comment at: test/FixIt/fixit-cxx0x.cpp:142
@@ +141,3 @@
+
+namespace MissplacedParameterPack {
+  template <typename Args...> // expected-error {{'...' must immediately 
precede declared identifier}}
----------------
Typo `Missplaced`

http://reviews.llvm.org/D3604



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to