mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
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
50 lines
1.5 KiB
C++
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
|
|
|