Index: clang/lib/Format/UnwrappedLineParser.cpp =================================================================== --- clang/lib/Format/UnwrappedLineParser.cpp +++ clang/lib/Format/UnwrappedLineParser.cpp @@ -41,7 +41,7 @@ // Returns the token that would be returned by the next call to // getNextToken(). - virtual FormatToken *peekNextToken() = 0; + virtual FormatToken *peekNextToken(bool SkipComment = false) = 0; // Returns whether we are at the end of the file. // This can be different from whether getNextToken() returned an eof token @@ -169,10 +169,10 @@ return PreviousTokenSource->getPreviousToken(); } - FormatToken *peekNextToken() override { + FormatToken *peekNextToken(bool SkipComment) override { if (eof()) return &FakeEOF; - return PreviousTokenSource->peekNextToken(); + return PreviousTokenSource->peekNextToken(SkipComment); } bool isEOF() override { return PreviousTokenSource->isEOF(); } @@ -288,8 +288,11 @@ return Position > 0 ? Tokens[Position - 1] : nullptr; } - FormatToken *peekNextToken() override { + FormatToken *peekNextToken(bool SkipComment) override { int Next = Position + 1; + if (SkipComment) + while (Tokens[Next]->is(tok::comment)) + ++Next; LLVM_DEBUG({ llvm::dbgs() << "Peeking "; dbgToken(Next); @@ -1727,8 +1730,13 @@ return; } if (Style.isCpp()) { - parseModuleImport(); - return; + if (auto Token = Tokens->peekNextToken(/*SkipComment=*/true); + Token->Tok.getIdentifierInfo() || + Token->TokenText.startswith("\"") || + Token->isOneOf(tok::less, tok::colon)) { + parseModuleImport(); + return; + } } } if (Style.isCpp() && Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -12810,6 +12810,7 @@ // But 'import' might also be a regular C++ namespace. verifyFormat("import::SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaaa,\n" " aaaaaaaaaaaaaaaaaaaaaaaaaaaaa);"); + verifyFormat("import::Bar foo(val ? 2 : 1);"); } //===----------------------------------------------------------------------===// @@ -24654,6 +24655,8 @@ verifyFormat("import", Style); verifyFormat("module", Style); verifyFormat("export", Style); + + verifyFormat("import = val ? 2 : 1;"); } TEST_F(FormatTest, CoroutineForCoawait) {