From 76b33d1f7c2ac3e4b808b77554d58d522a15c5e8 Mon Sep 17 00:00:00 2001 From: ykiko Date: Fri, 6 Sep 2024 22:48:00 +0800 Subject: [PATCH] some update for Resolver. --- include/AST/Resolver.h | 2 -- src/AST/Resolver.cpp | 24 ++---------------------- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/include/AST/Resolver.h b/include/AST/Resolver.h index 72b55470..0bd00a01 100644 --- a/include/AST/Resolver.h +++ b/include/AST/Resolver.h @@ -41,8 +41,6 @@ public: llvm::ArrayRef arguments); // replace the template arguments in the type, using the arguments in the frame - clang::QualType substitute(clang::QualType type); - clang::Decl* substitute(clang::Decl* decl); private: diff --git a/src/AST/Resolver.cpp b/src/AST/Resolver.cpp index 488fd107..d2e8ed8d 100644 --- a/src/AST/Resolver.cpp +++ b/src/AST/Resolver.cpp @@ -127,27 +127,6 @@ bool DependentNameResolver::lookup(llvm::SmallVector& result, return false; } -clang::QualType DependentNameResolver::substitute(clang::QualType type) { - clang::MultiLevelTemplateArgumentList list; - for(auto begin = frames.rbegin(), end = frames.rend(); begin != end; ++begin) { - list.addOuterTemplateArguments(begin->decl, begin->arguments, true); - } - - for(auto frame: frames) { - clang::Sema::CodeSynthesisContext context; - context.Entity = frame.decl; - context.TemplateArgs = frame.arguments.data(); - context.Kind = clang::Sema::CodeSynthesisContext::TemplateInstantiation; - sema.pushCodeSynthesisContext(context); - } - - auto result = sema.SubstType(type, list, {}, {}); - - frames.clear(); - - return result; -} - clang::Decl* DependentNameResolver::substitute(clang::Decl* decl) { clang::MultiLevelTemplateArgumentList list; for(auto begin = frames.rbegin(), end = frames.rend(); begin != end; ++begin) { @@ -162,7 +141,8 @@ clang::Decl* DependentNameResolver::substitute(clang::Decl* decl) { sema.pushCodeSynthesisContext(context); } - // FIXME: use fake TU + // FIXME: use global TU may result misunderstanding result + // create some fake namespace to avoid this auto result = sema.SubstDecl(decl, context.getTranslationUnitDecl(), list); frames.clear();