Skip to content

Commit 680d5d2

Browse files
committed
[nfc] [cxx-interop] Move function template specialization logic into clang-module-loader.
1 parent 7462169 commit 680d5d2

File tree

4 files changed

+420
-405
lines changed

4 files changed

+420
-405
lines changed

include/swift/AST/ClangModuleLoader.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ class Type;
3131

3232
namespace swift {
3333

34+
class ConcreteDeclRef;
3435
class Decl;
3536
class DeclContext;
3637
class EffectiveClangContext;
3738
class SwiftLookupTable;
39+
class ValueDecl;
3840
class VisibleDeclConsumer;
3941

4042
/// Represents the different namespaces for types in C.
@@ -201,6 +203,10 @@ class ClangModuleLoader : public ModuleLoader {
201203
instantiateCXXClassTemplate(clang::ClassTemplateDecl *decl,
202204
ArrayRef<clang::TemplateArgument> arguments) = 0;
203205

206+
virtual ConcreteDeclRef
207+
getCXXFunctionTemplateSpecialization(SubstitutionMap subst,
208+
ValueDecl *decl) = 0;
209+
204210
/// Try to parse the string as a Clang function type.
205211
///
206212
/// Returns null if there was a parsing failure.

include/swift/ClangImporter/ClangImporter.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,20 @@ class CompilerInvocation;
6161
class ClangImporterOptions;
6262
class ClangModuleUnit;
6363
class ClangNode;
64+
class ConcreteDeclRef;
6465
class Decl;
6566
class DeclContext;
6667
class EffectiveClangContext;
6768
class EnumDecl;
69+
class FuncDecl;
6870
class ImportDecl;
6971
class IRGenOptions;
7072
class ModuleDecl;
7173
class NominalTypeDecl;
7274
class StructDecl;
7375
class SwiftLookupTable;
7476
class TypeDecl;
77+
class ValueDecl;
7578
class VisibleDeclConsumer;
7679
enum class SelectorSplitKind;
7780

@@ -261,6 +264,9 @@ class ClangImporter final : public ClangModuleLoader {
261264
instantiateCXXClassTemplate(clang::ClassTemplateDecl *decl,
262265
ArrayRef<clang::TemplateArgument> arguments) override;
263266

267+
ConcreteDeclRef getCXXFunctionTemplateSpecialization(
268+
SubstitutionMap subst, ValueDecl *decl) override;
269+
264270
/// Just like Decl::getClangNode() except we look through to the 'Code'
265271
/// enum of an error wrapper struct.
266272
ClangNode getEffectiveClangNode(const Decl *decl) const;

0 commit comments

Comments
 (0)