[clang] [clang] Add code completion for #embed directive in C23 mode (PR #165550)

Quan Zhuo via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 29 05:42:36 PDT 2025


https://github.com/quanzhuo created https://github.com/llvm/llvm-project/pull/165550

This address issue https://github.com/clangd/clangd/issues/2535

>From 90f7d02220640263a793b03d8ad01f18ecfc73b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=85=A8=E5=8D=93?= <quanzhuo at kylinos.cn>
Date: Wed, 29 Oct 2025 20:40:01 +0800
Subject: [PATCH] [clang] Add code completion for #embed directive in C23 mode

---
 clang/lib/Sema/SemaCodeComplete.cpp | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp
index 0514d1033f74f..2feaaa4a9577e 100644
--- a/clang/lib/Sema/SemaCodeComplete.cpp
+++ b/clang/lib/Sema/SemaCodeComplete.cpp
@@ -10208,6 +10208,24 @@ void SemaCodeCompletion::CodeCompletePreprocessorDirective(bool InConditional) {
   Builder.AddPlaceholderChunk("message");
   Results.AddResult(Builder.TakeString());
 
+  if (getLangOpts().C23) {
+    // #embed "header"
+    Builder.AddTypedTextChunk("embed");
+    Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace);
+    Builder.AddTextChunk("\"");
+    Builder.AddPlaceholderChunk("header");
+    Builder.AddTextChunk("\"");
+    Results.AddResult(Builder.TakeString());
+
+    // #embed <header>
+    Builder.AddTypedTextChunk("embed");
+    Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace);
+    Builder.AddTextChunk("<");
+    Builder.AddPlaceholderChunk("header");
+    Builder.AddTextChunk(">");
+    Results.AddResult(Builder.TakeString());
+  }
+
   // Note: #ident and #sccs are such crazy anachronisms that we don't provide
   // completions for them. And __include_macros is a Clang-internal extension
   // that we don't want to encourage anyone to use.



More information about the cfe-commits mailing list