diff --git a/toolchain/check/context.h b/toolchain/check/context.h index dde2328696f0..6f90a27f32ce 100644 --- a/toolchain/check/context.h +++ b/toolchain/check/context.h @@ -286,6 +286,9 @@ class Context { auto ast_context() -> clang::ASTContext& { return sem_ir().clang_ast_unit()->getASTContext(); } + auto clang_sema() -> clang::Sema& { + return sem_ir().clang_ast_unit()->getSema(); + } auto clang_decls() -> SemIR::ClangDeclStore& { return sem_ir().clang_decls(); } diff --git a/toolchain/check/cpp/import.cpp b/toolchain/check/cpp/import.cpp index a00eac368639..b06572c987c0 100644 --- a/toolchain/check/cpp/import.cpp +++ b/toolchain/check/cpp/import.cpp @@ -506,9 +506,7 @@ static auto GetDeclContext(Context& context, SemIR::NameScopeId scope_id) static auto ClangLookup(Context& context, SemIR::NameScopeId scope_id, clang::DeclarationName name) -> std::optional { - clang::ASTUnit* ast = context.sem_ir().clang_ast_unit(); - CARBON_CHECK(ast); - clang::Sema& sema = ast->getSema(); + clang::Sema& sema = context.clang_sema(); // TODO: Map the LocId of the lookup to a clang SourceLocation and provide it // here so that clang's diagnostics can point into the carbon code that uses @@ -533,7 +531,7 @@ static auto ClangConstructorLookup(Context& context, -> clang::DeclContextLookupResult { const SemIR::NameScope& scope = context.name_scopes().Get(scope_id); - clang::Sema& sema = context.sem_ir().clang_ast_unit()->getSema(); + clang::Sema& sema = context.clang_sema(); clang::Decl* decl = context.clang_decls().Get(scope.clang_decl_context_id()).decl; return sema.LookupConstructors(cast(decl)); @@ -578,11 +576,8 @@ static auto GetDeclarationName(Context& context, SemIR::NameId name_id) return std::nullopt; } - return clang::DeclarationName(context.sem_ir() - .clang_ast_unit() - ->getSema() - .getPreprocessor() - .getIdentifierInfo(*name)); + return clang::DeclarationName( + context.clang_sema().getPreprocessor().getIdentifierInfo(*name)); } // Looks up the given name in the Clang AST in a specific scope. Returns the diff --git a/toolchain/check/cpp/operators.cpp b/toolchain/check/cpp/operators.cpp index 31a8c058d459..74a3ee0b457e 100644 --- a/toolchain/check/cpp/operators.cpp +++ b/toolchain/check/cpp/operators.cpp @@ -174,7 +174,7 @@ auto LookupCppOperator(Context& context, SemIR::LocId loc_id, Operator op, return SemIR::ErrorInst::InstId; } - clang::Sema& sema = context.sem_ir().clang_ast_unit()->getSema(); + clang::Sema& sema = context.clang_sema(); clang::UnresolvedSet<4> functions; // TODO: Add location accordingly. diff --git a/toolchain/check/cpp/overload_resolution.cpp b/toolchain/check/cpp/overload_resolution.cpp index 9192c5ab5d29..dba901bd455d 100644 --- a/toolchain/check/cpp/overload_resolution.cpp +++ b/toolchain/check/cpp/overload_resolution.cpp @@ -102,9 +102,7 @@ auto PerformCppOverloadResolution(Context& context, SemIR::LocId loc_id, clang::OverloadCandidateSet candidate_set( loc, clang::OverloadCandidateSet::CandidateSetKind::CSK_Normal); - clang::ASTUnit* ast = context.sem_ir().clang_ast_unit(); - CARBON_CHECK(ast); - clang::Sema& sema = ast->getSema(); + clang::Sema& sema = context.clang_sema(); AddOverloadCandidataes(sema, candidate_set, overload_set.candidate_functions, self_expr, arg_exprs); diff --git a/toolchain/check/cpp/thunk.cpp b/toolchain/check/cpp/thunk.cpp index 86a59d8bc6e6..22fd5b84e027 100644 --- a/toolchain/check/cpp/thunk.cpp +++ b/toolchain/check/cpp/thunk.cpp @@ -531,7 +531,7 @@ auto BuildCppThunk(Context& context, const SemIR::Function& callee_function) CreateThunkFunctionDecl(context, callee_info, thunk_param_types); // Build the thunk function body. - clang::Sema& sema = context.sem_ir().clang_ast_unit()->getSema(); + clang::Sema& sema = context.clang_sema(); clang::Sema::ContextRAII context_raii(sema, thunk_function_decl); sema.ActOnStartOfFunctionDef(nullptr, thunk_function_decl); clang::StmtResult body = diff --git a/toolchain/check/cpp/type_mapping.cpp b/toolchain/check/cpp/type_mapping.cpp index 49fbedbec808..dd0840ca89f4 100644 --- a/toolchain/check/cpp/type_mapping.cpp +++ b/toolchain/check/cpp/type_mapping.cpp @@ -58,9 +58,7 @@ static auto FindIntLiteralBitWidth(Context& context, SemIR::InstId arg_id) static auto LookupCppType( Context& context, std::initializer_list name_components) -> clang::QualType { - clang::ASTUnit* ast = context.sem_ir().clang_ast_unit(); - CARBON_CHECK(ast); - clang::Sema& sema = ast->getSema(); + clang::Sema& sema = context.clang_sema(); clang::Decl* decl = sema.getASTContext().getTranslationUnitDecl(); for (auto name_component : name_components) {