================
@@ -3669,12 +3718,11 @@ static FormatToken *getFunctionName(const AnnotatedLine 
&Line,
     }
 
     // Skip to the unqualified part of the name.
-    while (Tok->startsSequence(tok::identifier, tok::coloncolon)) {
-      assert(Tok->Next);
-      Tok = Tok->Next->Next;
-      if (!Tok)
-        return nullptr;
-    }
+    while (FormatToken *Next = skipNameQualifier(Tok))
+      Tok = Next;
+
+    if (!Tok)
+      return nullptr;
----------------
shafik wrote:

I don't see how `Tok` can ever be a `nullptr` here.

`Tok` is first set by 

`FormatToken *Tok = Line.getFirstNonComment()`

If this could yield a `nullptr` than the first unchecked dereference would be 
wrong.

The next time `Tok` is set is at:

`while (auto *Next = skipNameQualifier(Tok))`

Other assignments to `Tok` have explicit `nullptr` checks. 

but this can't be a `nullptr` b/c the condition would be `false`

We have various continues and breaks but the for loop unconditionally checks 
`Tok` so those can't yield a `nullptr` either. 

https://github.com/llvm/llvm-project/pull/143194
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to