mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Several tests related to indexing system modules were taking a considerable amount of time (100+ seconds in the worst case) indexing the standard library. This adds a frontend option to skip it and updates those tests to pass it.
91 lines
3.4 KiB
C++
91 lines
3.4 KiB
C++
//===--- IndexRecord.h - Entry point for recording index data ---*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See http://swift.org/LICENSE.txt for license information
|
|
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_INDEX_INDEXRECORD_H
|
|
#define SWIFT_INDEX_INDEXRECORD_H
|
|
|
|
#include "swift/Basic/LLVM.h"
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
|
|
namespace swift {
|
|
class DependencyTracker;
|
|
class ModuleDecl;
|
|
class SourceFile;
|
|
|
|
namespace index {
|
|
|
|
/// Index the given source file and store the results to \p indexStorePath.
|
|
///
|
|
/// \param primarySourceFile The source file to index.
|
|
///
|
|
/// \param indexUnitToken A unique identifier for this translation unit in the
|
|
/// form of a file path.
|
|
///
|
|
/// \param indexStorePath The location to write the indexing data to.
|
|
///
|
|
/// \param indexSystemModules If true, emit index data for imported serialized
|
|
/// swift system modules.
|
|
///
|
|
/// \param skipStdlib If indexing system modules, don't index the standard
|
|
/// library.
|
|
///
|
|
/// \param isDebugCompilation true for non-optimized compiler invocation.
|
|
///
|
|
/// \param targetTriple The target for this compilation.
|
|
///
|
|
/// \param dependencyTracker The set of dependencies seen while building.
|
|
bool indexAndRecord(SourceFile *primarySourceFile, StringRef indexUnitToken,
|
|
StringRef indexStorePath, bool indexSystemModules,
|
|
bool skipStdlib, bool isDebugCompilation,
|
|
StringRef targetTriple,
|
|
const DependencyTracker &dependencyTracker);
|
|
|
|
/// Index the given module and store the results to \p indexStorePath.
|
|
///
|
|
/// \param module The module to index.
|
|
///
|
|
/// \param indexUnitTokens A list of unique identifiers for the index units to
|
|
/// be written. This may either be one unit per source file of \p module, or it
|
|
/// may be a single unit, in which case all the index information will be
|
|
/// combined into a single unit.
|
|
///
|
|
/// \param moduleUnitToken A unique identifier for this module unit in the form
|
|
/// of a file path. Only used if \p indexUnitTokens are specified for each
|
|
/// source file, otherwise the single \p indexUnitTokens value is used instead.
|
|
///
|
|
/// \param indexStorePath The location to write the indexing data to.
|
|
///
|
|
/// \param indexSystemModules If true, emit index data for imported serialized
|
|
/// swift system modules.
|
|
///
|
|
/// \param skipStdlib If indexing system modules, don't index the standard
|
|
/// library.
|
|
///
|
|
/// \param isDebugCompilation true for non-optimized compiler invocation.
|
|
///
|
|
/// \param targetTriple The target for this compilation.
|
|
///
|
|
/// \param dependencyTracker The set of dependencies seen while building.
|
|
bool indexAndRecord(ModuleDecl *module, ArrayRef<std::string> indexUnitTokens,
|
|
StringRef moduleUnitToken, StringRef indexStorePath,
|
|
bool indexSystemModules, bool skipStdlib,
|
|
bool isDebugCompilation, StringRef targetTriple,
|
|
const DependencyTracker &dependencyTracker);
|
|
// FIXME: indexUnitTokens could be StringRef, but that creates an impedance
|
|
// mismatch in the caller.
|
|
|
|
} // end namespace index
|
|
} // end namespace swift
|
|
|
|
#endif // SWIFT_INDEX_INDEXRECORD_H
|