Files
swift-mirror/include/swift/AST/ClangModuleLoader.h
Jordan Rose f0d529719c Deduplicate search paths.
Now that we can pick up search paths from frameworks (necessary to debug
them properly), we can end up with exponential explosions leading to the
same search path coming up thousands of times, which destroys compilation
time /and/ debugger responsiveness. This is already hitting people with
frameworks compiled for app extensions (due to a mistaken approximation
of whether or not something is a framework), but we're turning this on for
all frameworks in the immediate future.

rdar://problem/20291720

Swift SVN r27087
2015-04-07 18:24:12 +00:00

50 lines
1.5 KiB
C++

//===--- ClangModuleLoader.h - Clang Module Loader Interface --*- C++ -*- -===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 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_AST_CLANG_MODULE_LOADER_H
#define SWIFT_AST_CLANG_MODULE_LOADER_H
#include "swift/AST/ModuleLoader.h"
namespace clang {
class ASTContext;
class Preprocessor;
} // namespace clang
namespace swift {
class ClangModuleLoader : public ModuleLoader {
private:
virtual void anchor();
protected:
using ModuleLoader::ModuleLoader;
public:
virtual clang::ASTContext &getClangASTContext() const = 0;
virtual clang::Preprocessor &getClangPreprocessor() const = 0;
virtual void printStatistics() const = 0;
/// Returns the module that contains imports and declarations from all loaded
/// Objective-C header files.
virtual Module *getImportedHeaderModule() const = 0;
/// Adds a new search path to the Clang CompilerInstance, as if specified with
/// -I or -F.
///
/// \returns true if there was an error adding the search path.
virtual bool addSearchPath(StringRef newSearchPath, bool isFramework) = 0;
};
} // namespace swift
#endif // LLVM_SWIFT_AST_CLANG_MODULE_LOADER_H