CppEditor: Remove foreach / Q_FOREACH usage part 3

Task-number: QTCREATORBUG-27464
Change-Id: Icbe620a83b6c2cf6b6166b76d01ca5f3c65ea87a
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Artem Sokolovskii
2022-05-05 16:33:29 +02:00
parent f03868bd6b
commit 2be4e8c5d5
12 changed files with 83 additions and 68 deletions

View File

@@ -175,7 +175,8 @@ Class *isMemberFunction(const LookupContext &context, Function *function)
return nullptr; return nullptr;
if (ClassOrNamespace *binding = context.lookupType(q->base(), enclosingScope)) { if (ClassOrNamespace *binding = context.lookupType(q->base(), enclosingScope)) {
foreach (Symbol *s, binding->symbols()) { const QList<Symbol *> symbols = binding->symbols();
for (Symbol *s : symbols) {
if (Class *matchingClass = s->asClass()) if (Class *matchingClass = s->asClass())
return matchingClass; return matchingClass;
} }
@@ -201,7 +202,8 @@ Namespace *isNamespaceFunction(const LookupContext &context, Function *function)
// global namespace // global namespace
if (!functionName->isQualifiedNameId()) { if (!functionName->isQualifiedNameId()) {
foreach (Symbol *s, context.globalNamespace()->symbols()) { const QList<Symbol *> symbols = context.globalNamespace()->symbols();
for (Symbol *s : symbols) {
if (Namespace *matchingNamespace = s->asNamespace()) if (Namespace *matchingNamespace = s->asNamespace())
return matchingNamespace; return matchingNamespace;
} }
@@ -213,7 +215,8 @@ Namespace *isNamespaceFunction(const LookupContext &context, Function *function)
return nullptr; return nullptr;
if (ClassOrNamespace *binding = context.lookupType(q->base(), enclosingScope)) { if (ClassOrNamespace *binding = context.lookupType(q->base(), enclosingScope)) {
foreach (Symbol *s, binding->symbols()) { const QList<Symbol *> symbols = binding->symbols();
for (Symbol *s : symbols) {
if (Namespace *matchingNamespace = s->asNamespace()) if (Namespace *matchingNamespace = s->asNamespace())
return matchingNamespace; return matchingNamespace;
} }
@@ -1337,7 +1340,8 @@ void TranslateStringLiteral::match(const CppQuickFixInterface &interface,
ClassOrNamespace *b = interface.context().lookupType(function); ClassOrNamespace *b = interface.context().lookupType(function);
if (b) { if (b) {
// Do we have a tr function? // Do we have a tr function?
foreach (const LookupItem &r, b->find(trName)) { const QList<LookupItem> items = b->find(trName);
for (const LookupItem &r : items) {
Symbol *s = r.declaration(); Symbol *s = r.declaration();
if (s->type()->isFunctionType()) { if (s->type()->isFunctionType()) {
// no context required for tr // no context required for tr
@@ -1351,7 +1355,8 @@ void TranslateStringLiteral::match(const CppQuickFixInterface &interface,
// We need to do a QCA::translate, so we need a context. // We need to do a QCA::translate, so we need a context.
// Use fully qualified class name: // Use fully qualified class name:
Overview oo; Overview oo;
foreach (const Name *n, LookupContext::path(function)) { const QList<const Name *> names = LookupContext::path(function);
for (const Name *n : names) {
if (!trContext.isEmpty()) if (!trContext.isEmpty())
trContext.append(QLatin1String("::")); trContext.append(QLatin1String("::"));
trContext.append(oo.prettyName(n)); trContext.append(oo.prettyName(n));
@@ -1669,7 +1674,7 @@ void AddLocalDeclaration::match(const CppQuickFixInterface &interface, QuickFixO
SimpleNameAST *nameAST = idExpr->name->asSimpleName(); SimpleNameAST *nameAST = idExpr->name->asSimpleName();
const QList<LookupItem> results = interface.context().lookup(nameAST->name, file->scopeAt(nameAST->firstToken())); const QList<LookupItem> results = interface.context().lookup(nameAST->name, file->scopeAt(nameAST->firstToken()));
Declaration *decl = nullptr; Declaration *decl = nullptr;
foreach (const LookupItem &r, results) { for (const LookupItem &r : results) {
if (!r.declaration()) if (!r.declaration())
continue; continue;
if (Declaration *d = r.declaration()->asDeclaration()) { if (Declaration *d = r.declaration()->asDeclaration()) {
@@ -1875,7 +1880,7 @@ QString findShortestInclude(const QString currentDocumentFilePath,
if (fileInfo.path() == QFileInfo(currentDocumentFilePath).path()) { if (fileInfo.path() == QFileInfo(currentDocumentFilePath).path()) {
result = QLatin1Char('"') + fileInfo.fileName() + QLatin1Char('"'); result = QLatin1Char('"') + fileInfo.fileName() + QLatin1Char('"');
} else { } else {
foreach (const ProjectExplorer::HeaderPath &headerPath, headerPaths) { for (const ProjectExplorer::HeaderPath &headerPath : headerPaths) {
if (!candidateFilePath.startsWith(headerPath.path)) if (!candidateFilePath.startsWith(headerPath.path))
continue; continue;
QString relativePath = candidateFilePath.mid(headerPath.path.size()); QString relativePath = candidateFilePath.mid(headerPath.path.size());
@@ -1914,7 +1919,7 @@ ProjectExplorer::HeaderPaths relevantHeaderPaths(const QString &filePath)
if (projectParts.isEmpty()) { // Not part of any project, better use all include paths than none if (projectParts.isEmpty()) { // Not part of any project, better use all include paths than none
headerPaths += modelManager->headerPaths(); headerPaths += modelManager->headerPaths();
} else { } else {
foreach (const ProjectPart::ConstPtr &part, projectParts) for (const ProjectPart::ConstPtr &part : projectParts)
headerPaths += part->headerPaths; headerPaths += part->headerPaths;
} }
@@ -1960,7 +1965,7 @@ LookupResult lookUpDefinition(const CppQuickFixInterface &interface, const NameA
// Try to find the class/template definition // Try to find the class/template definition
const Name *name = nameAst->name; const Name *name = nameAst->name;
const QList<LookupItem> results = interface.context().lookup(name, scope); const QList<LookupItem> results = interface.context().lookup(name, scope);
foreach (const LookupItem &item, results) { for (const LookupItem &item : results) {
if (Symbol *declaration = item.declaration()) { if (Symbol *declaration = item.declaration()) {
if (declaration->isClass()) if (declaration->isClass())
return LookupResult::Declared; return LookupResult::Declared;
@@ -1991,7 +1996,8 @@ Snapshot forwardingHeaders(const CppQuickFixInterface &interface)
{ {
Snapshot result; Snapshot result;
foreach (Document::Ptr doc, interface.snapshot()) { const Snapshot docs = interface.snapshot();
for (Document::Ptr doc : docs) {
if (doc->globalSymbolCount() == 0 && doc->resolvedIncludes().size() == 1) if (doc->globalSymbolCount() == 0 && doc->resolvedIncludes().size() == 1)
result.insert(doc); result.insert(doc);
} }
@@ -2063,7 +2069,7 @@ void AddIncludeForUndefinedIdentifier::match(const CppQuickFixInterface &interfa
if (matchName(nameAst->name, &matches, &className)) { if (matchName(nameAst->name, &matches, &className)) {
QList<IndexItem::Ptr> indexItems; QList<IndexItem::Ptr> indexItems;
const Snapshot forwardHeaders = forwardingHeaders(interface); const Snapshot forwardHeaders = forwardingHeaders(interface);
foreach (const Core::LocatorFilterEntry &entry, matches) { for (const Core::LocatorFilterEntry &entry : qAsConst(matches)) {
IndexItem::Ptr info = entry.internalData.value<IndexItem::Ptr>(); IndexItem::Ptr info = entry.internalData.value<IndexItem::Ptr>();
if (!info || info->symbolName() != className) if (!info || info->symbolName() != className)
continue; continue;
@@ -2075,7 +2081,7 @@ void AddIncludeForUndefinedIdentifier::match(const CppQuickFixInterface &interfa
headerAndItsForwardingHeaders << Utils::FilePath::fromString(info->fileName()); headerAndItsForwardingHeaders << Utils::FilePath::fromString(info->fileName());
headerAndItsForwardingHeaders += localForwardHeaders.filesDependingOn(info->fileName()); headerAndItsForwardingHeaders += localForwardHeaders.filesDependingOn(info->fileName());
foreach (const Utils::FilePath &header, headerAndItsForwardingHeaders) { for (const Utils::FilePath &header : qAsConst(headerAndItsForwardingHeaders)) {
const QString include = findShortestInclude(currentDocumentFilePath, const QString include = findShortestInclude(currentDocumentFilePath,
header.toString(), header.toString(),
headerPaths); headerPaths);
@@ -2328,7 +2334,7 @@ void ReformatPointerDeclaration::match(const CppQuickFixInterface &interface,
} else { } else {
const QList<AST *> suitableASTs const QList<AST *> suitableASTs
= ReformatPointerDeclarationASTPathResultsFilter().filter(path); = ReformatPointerDeclarationASTPathResultsFilter().filter(path);
foreach (AST *ast, suitableASTs) { for (AST *ast : suitableASTs) {
change = formatter.format(ast); change = formatter.format(ast);
if (!change.isEmpty()) { if (!change.isEmpty()) {
result << new ReformatPointerDeclarationOp(interface, change); result << new ReformatPointerDeclarationOp(interface, change);
@@ -2421,7 +2427,7 @@ public:
static Enum *findEnum(const QList<LookupItem> &results, const LookupContext &ctxt) static Enum *findEnum(const QList<LookupItem> &results, const LookupContext &ctxt)
{ {
foreach (const LookupItem &result, results) { for (const LookupItem &result : results) {
const FullySpecifiedType fst = result.type(); const FullySpecifiedType fst = result.type();
Type *type = result.declaration() ? result.declaration()->type().type() Type *type = result.declaration() ? result.declaration()->type().type()
@@ -2442,7 +2448,7 @@ static Enum *findEnum(const QList<LookupItem> &results, const LookupContext &ctx
const Name *referenceName = namedType->name(); const Name *referenceName = namedType->name();
if (const QualifiedNameId *qualifiedName = referenceName->asQualifiedNameId()) if (const QualifiedNameId *qualifiedName = referenceName->asQualifiedNameId())
referenceName = qualifiedName->name(); referenceName = qualifiedName->name();
foreach (Enum *e, enums) { for (Enum *e : qAsConst(enums)) {
if (const Name *candidateName = e->name()) { if (const Name *candidateName = e->name()) {
if (candidateName->match(referenceName)) if (candidateName->match(referenceName))
return e; return e;
@@ -2505,9 +2511,9 @@ void CompleteSwitchCaseStatement::match(const CppQuickFixInterface &interface,
Block *block = switchStatement->symbol; Block *block = switchStatement->symbol;
CaseStatementCollector caseValues(interface.semanticInfo().doc, interface.snapshot(), CaseStatementCollector caseValues(interface.semanticInfo().doc, interface.snapshot(),
interface.semanticInfo().doc->scopeAt(block->line(), block->column())); interface.semanticInfo().doc->scopeAt(block->line(), block->column()));
QStringList usedValues = caseValues(switchStatement); const QStringList usedValues = caseValues(switchStatement);
// save the values that would be added // save the values that would be added
foreach (const QString &usedValue, usedValues) for (const QString &usedValue : usedValues)
values.removeAll(usedValue); values.removeAll(usedValue);
if (!values.isEmpty()) if (!values.isEmpty())
result << new CompleteSwitchCaseStatementOp(interface, depth, result << new CompleteSwitchCaseStatementOp(interface, depth,
@@ -2893,8 +2899,8 @@ void InsertDefFromDecl::match(const CppQuickFixInterface &interface, QuickFixOpe
// find appropriate implementation file, but do not use this // find appropriate implementation file, but do not use this
// location, because insertLocationForMethodDefinition() should // location, because insertLocationForMethodDefinition() should
// be used in perform() to get consistent insert positions. // be used in perform() to get consistent insert positions.
foreach (const InsertionLocation &location, for (const InsertionLocation &location :
locator.methodDefinition(decl, false, QString())) { locator.methodDefinition(decl, false, QString())) {
if (!location.isValid()) if (!location.isValid())
continue; continue;
@@ -5299,7 +5305,7 @@ void ExtractFunction::match(const CppQuickFixInterface &interface, QuickFixOpera
bool usedAfterExtraction = false; bool usedAfterExtraction = false;
bool usedInsideExtraction = false; bool usedInsideExtraction = false;
const QList<SemanticInfo::Use> &uses = it.value(); const QList<SemanticInfo::Use> &uses = it.value();
foreach (const SemanticInfo::Use &use, uses) { for (const SemanticInfo::Use &use : uses) {
if (use.isInvalid()) if (use.isInvalid())
continue; continue;
@@ -5781,7 +5787,8 @@ private:
// Fix all occurrences of the identifier in this function. // Fix all occurrences of the identifier in this function.
ASTPath astPath(m_document); ASTPath astPath(m_document);
foreach (const SemanticInfo::Use &use, semanticInfo().localUses.value(m_symbol)) { const QList<SemanticInfo::Use> uses = semanticInfo().localUses.value(m_symbol);
for (const SemanticInfo::Use &use : uses) {
const QList<AST *> path = astPath(use.line, use.column); const QList<AST *> path = astPath(use.line, use.column);
AST *idAST = path.last(); AST *idAST = path.last();
bool declarationFound = false; bool declarationFound = false;
@@ -5903,7 +5910,8 @@ private:
// Fix all occurrences of the identifier in this function. // Fix all occurrences of the identifier in this function.
ASTPath astPath(m_document); ASTPath astPath(m_document);
foreach (const SemanticInfo::Use &use, semanticInfo().localUses.value(m_symbol)) { const QList<SemanticInfo::Use> uses = semanticInfo().localUses.value(m_symbol);
for (const SemanticInfo::Use &use : uses) {
const QList<AST *> path = astPath(use.line, use.column); const QList<AST *> path = astPath(use.line, use.column);
AST *idAST = path.last(); AST *idAST = path.last();
bool insertStar = true; bool insertStar = true;
@@ -6894,7 +6902,7 @@ void AssignToLocalVariable::match(const CppQuickFixInterface &interface, QuickFi
TypeOfExpression::Preprocess); TypeOfExpression::Preprocess);
} }
foreach (const LookupItem &item, items) { for (const LookupItem &item : qAsConst(items)) {
if (!item.declaration()) if (!item.declaration())
continue; continue;
@@ -7310,7 +7318,7 @@ private:
Symbol *skipForwardDeclarations(const QList<Symbol *> &symbols) Symbol *skipForwardDeclarations(const QList<Symbol *> &symbols)
{ {
foreach (Symbol *symbol, symbols) { for (Symbol *symbol : symbols) {
if (!symbol->type()->isForwardClassDeclarationType()) if (!symbol->type()->isForwardClassDeclarationType())
return symbol; return symbol;
} }
@@ -7342,7 +7350,7 @@ bool findRawAccessFunction(Class *klass, PointerType *pointerType, QString *objA
break; break;
default: default:
// Multiple candidates - prefer a function named data // Multiple candidates - prefer a function named data
foreach (Function *func, candidates) { for (Function *func : qAsConst(candidates)) {
if (!strcmp(func->name()->identifier()->chars(), "data")) { if (!strcmp(func->name()->identifier()->chars(), "data")) {
funcName = func->name(); funcName = func->name();
break; break;

View File

@@ -122,7 +122,7 @@ SelectionList UseSelectionsTestCase::toSelectionList(
const QList<QTextEdit::ExtraSelection> &extraSelections) const const QList<QTextEdit::ExtraSelection> &extraSelections) const
{ {
SelectionList result; SelectionList result;
foreach (const QTextEdit::ExtraSelection &selection, extraSelections) { for (const QTextEdit::ExtraSelection &selection : extraSelections) {
int line, column; int line, column;
const int position = qMin(selection.cursor.position(), selection.cursor.anchor()); const int position = qMin(selection.cursor.position(), selection.cursor.anchor());
m_editorWidget->convertPosition(position, &line, &column); m_editorWidget->convertPosition(position, &line, &column);

View File

@@ -92,7 +92,7 @@ QString DoxygenGenerator::generate(QTextCursor cursor,
while (block.isValid()) { while (block.isValid()) {
const QString &text = block.text(); const QString &text = block.text();
const Tokens &tks = lexer(text); const Tokens &tks = lexer(text);
foreach (const Token &tk, tks) { for (const Token &tk : tks) {
if (tk.is(T_SEMICOLON) || tk.is(T_LBRACE)) { if (tk.is(T_SEMICOLON) || tk.is(T_LBRACE)) {
// No need to continue beyond this, we might already have something meaningful. // No need to continue beyond this, we might already have something meaningful.
cursor.setPosition(block.position() + tk.utf16charsEnd(), QTextCursor::KeepAnchor); cursor.setPosition(block.position() + tk.utf16charsEnd(), QTextCursor::KeepAnchor);

View File

@@ -154,17 +154,18 @@ TestActionsTestCase::TestActionsTestCase(const Actions &tokenActions, const Acti
QList<QPointer<ProjectExplorer::Project> > projects; QList<QPointer<ProjectExplorer::Project> > projects;
const QList<ProjectInfo::ConstPtr> projectInfos = m_modelManager->projectInfos(); const QList<ProjectInfo::ConstPtr> projectInfos = m_modelManager->projectInfos();
foreach (const ProjectInfo::ConstPtr &info, projectInfos) { for (const ProjectInfo::ConstPtr &info : projectInfos) {
qDebug() << "Project" << info->projectFilePath().toUserOutput() << "- files to process:" qDebug() << "Project" << info->projectFilePath().toUserOutput() << "- files to process:"
<< info->sourceFiles().size(); << info->sourceFiles().size();
foreach (const QString &sourceFile, info->sourceFiles()) const QSet<QString> sourceFiles = info->sourceFiles();
for (const QString &sourceFile : sourceFiles)
filesToOpen << sourceFile; filesToOpen << sourceFile;
} }
Utils::sort(filesToOpen); Utils::sort(filesToOpen);
// Process all files from the projects // Process all files from the projects
foreach (const QString filePath, filesToOpen) { for (const QString &filePath : qAsConst(filesToOpen)) {
// Skip e.g. "<configuration>" // Skip e.g. "<configuration>"
if (!QFileInfo::exists(filePath)) if (!QFileInfo::exists(filePath))
continue; continue;
@@ -260,16 +261,17 @@ void TestActionsTestCase::undoChangesInDocument(TextDocument *editorDocument)
void TestActionsTestCase::undoChangesInAllEditorWidgets() void TestActionsTestCase::undoChangesInAllEditorWidgets()
{ {
foreach (IDocument *document, DocumentModel::openedDocuments()) { const QList<IDocument *> documents = DocumentModel::openedDocuments();
for (IDocument *document : documents) {
TextDocument *baseTextDocument = qobject_cast<TextDocument *>(document); TextDocument *baseTextDocument = qobject_cast<TextDocument *>(document);
undoChangesInDocument(baseTextDocument); undoChangesInDocument(baseTextDocument);
} }
} }
void TestActionsTestCase::executeActionsOnEditorWidget(CppEditorWidget *editorWidget, void TestActionsTestCase::executeActionsOnEditorWidget(CppEditorWidget *editorWidget,
TestActionsTestCase::Actions actions) TestActionsTestCase::Actions actions)
{ {
foreach (const ActionPointer &action, actions) for (const ActionPointer &action : qAsConst(actions))
action->run(editorWidget); action->run(editorWidget);
QApplication::processEvents(); QApplication::processEvents();
} }
@@ -461,7 +463,7 @@ void RunAllQuickFixesTokenAction::run(CppEditorWidget *editorWidget)
cppQuickFixFactory->match(qfi, operations); cppQuickFixFactory->match(qfi, operations);
} }
foreach (QuickFixOperation::Ptr operation, operations) { for (QuickFixOperation::Ptr operation : qAsConst(operations)) {
qDebug() << " -- Performing Quick Fix" << operation->description(); qDebug() << " -- Performing Quick Fix" << operation->description();
operation->perform(); operation->perform();
TestActionsTestCase::escape(); TestActionsTestCase::escape();

View File

@@ -271,7 +271,7 @@ F2TestCase::F2TestCase(CppEditorAction action,
CppEditor::Tests::TemporaryDir temporaryDir; CppEditor::Tests::TemporaryDir temporaryDir;
QVERIFY(temporaryDir.isValid()); QVERIFY(temporaryDir.isValid());
QString projectFileContent = "CppApplication { files: ["; QString projectFileContent = "CppApplication { files: [";
foreach (TestDocumentPtr testFile, testFiles) { for (TestDocumentPtr testFile : testFiles) {
QVERIFY(testFile->baseDirectory().isEmpty()); QVERIFY(testFile->baseDirectory().isEmpty());
testFile->setBaseDirectory(temporaryDir.path()); testFile->setBaseDirectory(temporaryDir.path());
QVERIFY(testFile->writeToDisk()); QVERIFY(testFile->writeToDisk());
@@ -306,12 +306,12 @@ F2TestCase::F2TestCase(CppEditorAction action,
// Update Code Model // Update Code Model
QSet<QString> filePaths; QSet<QString> filePaths;
foreach (const TestDocumentPtr &testFile, testFiles) for (const TestDocumentPtr &testFile : testFiles)
filePaths << testFile->filePath(); filePaths << testFile->filePath();
QVERIFY(parseFiles(filePaths)); QVERIFY(parseFiles(filePaths));
// Open Files // Open Files
foreach (TestDocumentPtr testFile, testFiles) { for (TestDocumentPtr testFile : testFiles) {
QVERIFY(openCppEditor(testFile->filePath(), &testFile->m_editor, QVERIFY(openCppEditor(testFile->filePath(), &testFile->m_editor,
&testFile->m_editorWidget)); &testFile->m_editorWidget));
if (!useClangd) // Editors get closed when unloading project. if (!useClangd) // Editors get closed when unloading project.
@@ -481,7 +481,7 @@ F2TestCase::F2TestCase(CppEditorAction action,
TestDocumentPtr F2TestCase::testFileWithInitialCursorMarker(const QList<TestDocumentPtr> &testFiles) TestDocumentPtr F2TestCase::testFileWithInitialCursorMarker(const QList<TestDocumentPtr> &testFiles)
{ {
foreach (const TestDocumentPtr testFile, testFiles) { for (const TestDocumentPtr &testFile : testFiles) {
if (testFile->hasCursorMarker()) if (testFile->hasCursorMarker())
return testFile; return testFile;
} }
@@ -490,7 +490,7 @@ TestDocumentPtr F2TestCase::testFileWithInitialCursorMarker(const QList<TestDocu
TestDocumentPtr F2TestCase::testFileWithTargetCursorMarker(const QList<TestDocumentPtr> &testFiles) TestDocumentPtr F2TestCase::testFileWithTargetCursorMarker(const QList<TestDocumentPtr> &testFiles)
{ {
foreach (const TestDocumentPtr testFile, testFiles) { for (const TestDocumentPtr &testFile : testFiles) {
if (testFile->hasTargetCursorMarker()) if (testFile->hasTargetCursorMarker())
return testFile; return testFile;
} }

View File

@@ -128,10 +128,10 @@ static bool isVirtualFunction_helper(const Function *function,
if (!firstVirtuals && res != Unknown) if (!firstVirtuals && res != Unknown)
return res == True; return res == True;
QList<LookupItem> results = context.lookup(function->name(), function->enclosingScope()); const QList<LookupItem> results = context.lookup(function->name(), function->enclosingScope());
if (!results.isEmpty()) { if (!results.isEmpty()) {
const bool isDestructor = function->name()->isDestructorNameId(); const bool isDestructor = function->name()->isDestructorNameId();
foreach (const LookupItem &item, results) { for (const LookupItem &item : results) {
if (Symbol *symbol = item.declaration()) { if (Symbol *symbol = item.declaration()) {
if (Function *functionType = symbol->type()->asFunctionType()) { if (Function *functionType = symbol->type()->asFunctionType()) {
if (functionType->name()->isDestructorNameId() != isDestructor) if (functionType->name()->isDestructorNameId() != isDestructor)
@@ -197,7 +197,7 @@ QList<Function *> FunctionUtils::overrides(Function *function, Class *functionsC
Class *c = hierarchy.symbol()->asClass(); Class *c = hierarchy.symbol()->asClass();
QTC_ASSERT(c, continue); QTC_ASSERT(c, continue);
foreach (const TypeHierarchy &t, hierarchy.hierarchy()) { for (const TypeHierarchy &t : hierarchy.hierarchy()) {
if (!l.contains(t)) if (!l.contains(t))
l << t; l << t;
} }

View File

@@ -119,7 +119,7 @@ void GeneratedCodeModelSupport::update(const QList<ProjectExplorer::ExtraCompile
CppModelManager * const mm = CppModelManager::instance(); CppModelManager * const mm = CppModelManager::instance();
foreach (ExtraCompiler *generator, generators) { for (ExtraCompiler *generator : generators) {
if (extraCompilerCache.contains(generator)) if (extraCompilerCache.contains(generator))
continue; continue;

View File

@@ -139,7 +139,7 @@ LineForNewIncludeDirective::LineForNewIncludeDirective(const QTextDocument *text
// Ignore *.moc includes if requested // Ignore *.moc includes if requested
if (mocIncludeMode == IgnoreMocIncludes) { if (mocIncludeMode == IgnoreMocIncludes) {
foreach (const Document::Include &include, includes) { for (const Document::Include &include : qAsConst(includes)) {
if (!include.unresolvedFileName().endsWith(QLatin1String(".moc"))) if (!include.unresolvedFileName().endsWith(QLatin1String(".moc")))
m_includes << include; m_includes << include;
} }
@@ -179,7 +179,7 @@ int LineForNewIncludeDirective::findInsertLineForVeryFirstInclude(unsigned *newL
const QByteArray includeGuardMacroName = m_cppDocument->includeGuardMacroName(); const QByteArray includeGuardMacroName = m_cppDocument->includeGuardMacroName();
if (!includeGuardMacroName.isEmpty()) { if (!includeGuardMacroName.isEmpty()) {
const QList<Macro> definedMacros = m_cppDocument->definedMacros(); const QList<Macro> definedMacros = m_cppDocument->definedMacros();
foreach (const Macro &definedMacro, definedMacros) { for (const Macro &definedMacro : definedMacros) {
if (definedMacro.name() == includeGuardMacroName) { if (definedMacro.name() == includeGuardMacroName) {
if (newLinesToPrepend) if (newLinesToPrepend)
*newLinesToPrepend = 1; *newLinesToPrepend = 1;
@@ -256,7 +256,7 @@ int LineForNewIncludeDirective::operator()(const QString &newIncludeFileName,
IncludeGroups groupsSameIncludeDir; IncludeGroups groupsSameIncludeDir;
IncludeGroups groupsMixedIncludeDirs; IncludeGroups groupsMixedIncludeDirs;
foreach (const IncludeGroup &group, groupsMatchingIncludeType) { for (const IncludeGroup &group : qAsConst(groupsMatchingIncludeType)) {
if (group.hasCommonIncludeDir()) if (group.hasCommonIncludeDir())
groupsSameIncludeDir << group; groupsSameIncludeDir << group;
else else
@@ -264,7 +264,7 @@ int LineForNewIncludeDirective::operator()(const QString &newIncludeFileName,
} }
IncludeGroups groupsMatchingIncludeDir; IncludeGroups groupsMatchingIncludeDir;
foreach (const IncludeGroup &group, groupsSameIncludeDir) { for (const IncludeGroup &group : qAsConst(groupsSameIncludeDir)) {
if (group.commonIncludeDir() == includeDir(pureIncludeFileName)) if (group.commonIncludeDir() == includeDir(pureIncludeFileName))
groupsMatchingIncludeDir << group; groupsMatchingIncludeDir << group;
} }
@@ -274,7 +274,7 @@ int LineForNewIncludeDirective::operator()(const QString &newIncludeFileName,
if (!groupsMatchingIncludeDir.isEmpty()) { if (!groupsMatchingIncludeDir.isEmpty()) {
// The group with the longest common matching prefix is the best group // The group with the longest common matching prefix is the best group
int longestPrefixSoFar = 0; int longestPrefixSoFar = 0;
foreach (const IncludeGroup &group, groupsMatchingIncludeDir) { for (const IncludeGroup &group : qAsConst(groupsMatchingIncludeDir)) {
const int groupPrefixLength = group.commonPrefix().length(); const int groupPrefixLength = group.commonPrefix().length();
if (groupPrefixLength >= longestPrefixSoFar) { if (groupPrefixLength >= longestPrefixSoFar) {
bestGroup = group; bestGroup = group;
@@ -295,12 +295,12 @@ int LineForNewIncludeDirective::operator()(const QString &newIncludeFileName,
// group with mixed include dirs // group with mixed include dirs
} else { } else {
IncludeGroups groupsIncludeDir; IncludeGroups groupsIncludeDir;
foreach (const IncludeGroup &group, groupsMixedIncludeDirs) { for (const IncludeGroup &group : qAsConst(groupsMixedIncludeDirs)) {
groupsIncludeDir.append( groupsIncludeDir.append(
IncludeGroup::detectIncludeGroupsByIncludeDir(group.includes())); IncludeGroup::detectIncludeGroupsByIncludeDir(group.includes()));
} }
IncludeGroup localBestIncludeGroup = IncludeGroup(QList<Include>()); IncludeGroup localBestIncludeGroup = IncludeGroup(QList<Include>());
foreach (const IncludeGroup &group, groupsIncludeDir) { for (const IncludeGroup &group : qAsConst(groupsIncludeDir)) {
if (group.commonIncludeDir() == includeDir(pureIncludeFileName)) if (group.commonIncludeDir() == includeDir(pureIncludeFileName))
localBestIncludeGroup = group; localBestIncludeGroup = group;
} }
@@ -330,7 +330,7 @@ QList<IncludeGroup> IncludeGroup::detectIncludeGroupsByNewLines(QList<Document::
int lastLine = 0; int lastLine = 0;
QList<Include> currentIncludes; QList<Include> currentIncludes;
bool isFirst = true; bool isFirst = true;
foreach (const Include &include, includes) { for (const Include &include : qAsConst(includes)) {
// First include... // First include...
if (isFirst) { if (isFirst) {
isFirst = false; isFirst = false;
@@ -361,7 +361,7 @@ QList<IncludeGroup> IncludeGroup::detectIncludeGroupsByIncludeDir(const QList<In
QString lastDir; QString lastDir;
QList<Include> currentIncludes; QList<Include> currentIncludes;
bool isFirst = true; bool isFirst = true;
foreach (const Include &include, includes) { for (const Include &include : includes) {
const QString currentDirPrefix = includeDir(include.unresolvedFileName()); const QString currentDirPrefix = includeDir(include.unresolvedFileName());
// First include... // First include...
@@ -394,7 +394,7 @@ QList<IncludeGroup> IncludeGroup::detectIncludeGroupsByIncludeType(const QList<I
Client::IncludeType lastIncludeType = Client::IncludeLocal; Client::IncludeType lastIncludeType = Client::IncludeLocal;
QList<Include> currentIncludes; QList<Include> currentIncludes;
bool isFirst = true; bool isFirst = true;
foreach (const Include &include, includes) { for (const Include &include : includes) {
const Client::IncludeType currentIncludeType = include.type(); const Client::IncludeType currentIncludeType = include.type();
// First include... // First include...
@@ -425,7 +425,7 @@ QList<IncludeGroup> IncludeGroup::filterIncludeGroups(const QList<IncludeGroup>
Client::IncludeType includeType) Client::IncludeType includeType)
{ {
QList<IncludeGroup> result; QList<IncludeGroup> result;
foreach (const IncludeGroup &group, groups) { for (const IncludeGroup &group : groups) {
if (group.hasOnlyIncludesOfType(includeType)) if (group.hasOnlyIncludesOfType(includeType))
result << group; result << group;
} }
@@ -436,7 +436,7 @@ QList<IncludeGroup> IncludeGroup::filterIncludeGroups(const QList<IncludeGroup>
QList<IncludeGroup> IncludeGroup::filterMixedIncludeGroups(const QList<IncludeGroup> &groups) QList<IncludeGroup> IncludeGroup::filterMixedIncludeGroups(const QList<IncludeGroup> &groups)
{ {
QList<IncludeGroup> result; QList<IncludeGroup> result;
foreach (const IncludeGroup &group, groups) { for (const IncludeGroup &group : groups) {
if (!group.hasOnlyIncludesOfType(Client::IncludeLocal) if (!group.hasOnlyIncludesOfType(Client::IncludeLocal)
&& !group.hasOnlyIncludesOfType(Client::IncludeGlobal)) { && !group.hasOnlyIncludesOfType(Client::IncludeGlobal)) {
result << group; result << group;
@@ -447,7 +447,7 @@ QList<IncludeGroup> IncludeGroup::filterMixedIncludeGroups(const QList<IncludeGr
bool IncludeGroup::hasOnlyIncludesOfType(Client::IncludeType includeType) const bool IncludeGroup::hasOnlyIncludesOfType(Client::IncludeType includeType) const
{ {
foreach (const Include &include, m_includes) { for (const Include &include : qAsConst(m_includes)) {
if (include.type() != includeType) if (include.type() != includeType)
return false; return false;
} }
@@ -490,7 +490,7 @@ int IncludeGroup::lineForNewInclude(const QString &newIncludeFileName,
QStringList IncludeGroup::filesNames() const QStringList IncludeGroup::filesNames() const
{ {
QStringList names; QStringList names;
foreach (const Include &include, m_includes) for (const Include &include : qAsConst(m_includes))
names << include.unresolvedFileName(); names << include.unresolvedFileName();
return names; return names;
} }

View File

@@ -99,7 +99,7 @@ public:
VisitorResult visitAllChildren(Visitor callback) const VisitorResult visitAllChildren(Visitor callback) const
{ {
VisitorResult result = Recurse; VisitorResult result = Recurse;
foreach (const IndexItem::Ptr &child, m_children) { for (const IndexItem::Ptr &child : qAsConst(m_children)) {
result = callback(child); result = callback(child);
switch (result) { switch (result) {
case Break: case Break:

View File

@@ -445,8 +445,8 @@ public:
_bestToken.maybeSet(-1, lastToken); _bestToken.maybeSet(-1, lastToken);
if (lastToken >= 2) { if (lastToken >= 2) {
QList<const Name *> names = LookupContext::fullyQualifiedName(decl); const QList<const Name *> names = LookupContext::fullyQualifiedName(decl);
foreach (const Name *name, names) { for (const Name *name : names) {
const Identifier *id = name->asNameId(); const Identifier *id = name->asNameId();
if (!id) if (!id)
break; break;

View File

@@ -172,7 +172,8 @@ Function *SymbolFinder::findMatchingDefinition(Symbol *declaration,
} }
Hit best; Hit best;
foreach (const QString &fileName, fileIterationOrder(declFile, snapshot)) { const QStringList fileNames = fileIterationOrder(declFile, snapshot);
for (const QString &fileName : fileNames) {
Document::Ptr doc = snapshot.document(fileName); Document::Ptr doc = snapshot.document(fileName);
if (!doc) { if (!doc) {
clearCache(declFile, fileName); clearCache(declFile, fileName);
@@ -251,7 +252,8 @@ Symbol *SymbolFinder::findMatchingVarDefinition(Symbol *declaration, const Snaps
using SymbolWithPriority = QPair<Symbol *, bool>; using SymbolWithPriority = QPair<Symbol *, bool>;
QList<SymbolWithPriority> candidates; QList<SymbolWithPriority> candidates;
QList<SymbolWithPriority> fallbacks; QList<SymbolWithPriority> fallbacks;
foreach (const QString &fileName, fileIterationOrder(declFile, snapshot)) { const QStringList fileNames = fileIterationOrder(declFile, snapshot);
for (const QString &fileName : fileNames) {
Document::Ptr doc = snapshot.document(fileName); Document::Ptr doc = snapshot.document(fileName);
if (!doc) { if (!doc) {
clearCache(declFile, fileName); clearCache(declFile, fileName);
@@ -320,7 +322,8 @@ Class *SymbolFinder::findMatchingClassDeclaration(Symbol *declaration, const Sna
QString declFile = QString::fromUtf8(declaration->fileName(), declaration->fileNameLength()); QString declFile = QString::fromUtf8(declaration->fileName(), declaration->fileNameLength());
foreach (const QString &file, fileIterationOrder(declFile, snapshot)) { const QStringList fileNames = fileIterationOrder(declFile, snapshot);
for (const QString &file : fileNames) {
Document::Ptr doc = snapshot.document(file); Document::Ptr doc = snapshot.document(file);
if (!doc) { if (!doc) {
clearCache(declFile, file); clearCache(declFile, file);
@@ -337,7 +340,8 @@ Class *SymbolFinder::findMatchingClassDeclaration(Symbol *declaration, const Sna
if (!type) if (!type)
continue; continue;
foreach (Symbol *s, type->symbols()) { const QList<Symbol *> symbols = type->symbols();
for (Symbol *s : symbols) {
if (Class *c = s->asClass()) if (Class *c = s->asClass())
return c; return c;
} }
@@ -411,7 +415,8 @@ void SymbolFinder::findMatchingDeclaration(const LookupContext &context,
operatorNameId = onid->kind(); operatorNameId = onid->kind();
} }
foreach (Symbol *s, binding->symbols()) { const QList<Symbol *> symbols = binding->symbols();
for (Symbol *s : symbols) {
Scope *scope = s->asScope(); Scope *scope = s->asScope();
if (!scope) if (!scope)
continue; continue;
@@ -460,7 +465,7 @@ QStringList SymbolFinder::fileIterationOrder(const QString &referenceFile, const
if (m_filePriorityCache.contains(referenceFile)) { if (m_filePriorityCache.contains(referenceFile)) {
checkCacheConsistency(referenceFile, snapshot); checkCacheConsistency(referenceFile, snapshot);
} else { } else {
foreach (Document::Ptr doc, snapshot) for (Document::Ptr doc : snapshot)
insertCache(referenceFile, doc->fileName()); insertCache(referenceFile, doc->fileName());
} }
@@ -484,7 +489,7 @@ void SymbolFinder::checkCacheConsistency(const QString &referenceFile, const Sna
// The counterpart validation for "old" files is done when one tries to access the // The counterpart validation for "old" files is done when one tries to access the
// corresponding document and notices it's now null. // corresponding document and notices it's now null.
const QSet<QString> &meta = m_fileMetaCache.value(referenceFile); const QSet<QString> &meta = m_fileMetaCache.value(referenceFile);
foreach (const Document::Ptr &doc, snapshot) { for (const Document::Ptr &doc : snapshot) {
if (!meta.contains(doc->fileName())) if (!meta.contains(doc->fileName()))
insertCache(referenceFile, doc->fileName()); insertCache(referenceFile, doc->fileName());
} }

View File

@@ -56,7 +56,7 @@ QString toString(const TypeHierarchy &hierarchy, int indent = 0)
Utils::sort(sortedHierarchy, [&oo](const TypeHierarchy &h1, const TypeHierarchy &h2) -> bool { Utils::sort(sortedHierarchy, [&oo](const TypeHierarchy &h1, const TypeHierarchy &h2) -> bool {
return oo.prettyName(h1.symbol()->name()) < oo.prettyName(h2.symbol()->name()); return oo.prettyName(h1.symbol()->name()) < oo.prettyName(h2.symbol()->name());
}); });
foreach (TypeHierarchy childHierarchy, sortedHierarchy) for (const TypeHierarchy &childHierarchy : qAsConst(sortedHierarchy))
result += toString(childHierarchy, indent + 2); result += toString(childHierarchy, indent + 2);
return result; return result;
} }