@@ -128,6 +128,43 @@ __get_cxx_version ()
128128 return std::to_string (cxx_version);
129129 }
130130
131+ // FIXME: This function should be upstreamed to CppInterOp. See
132+ // https://github.com/compiler-research/CppInterOp/issues/879
133+ static std::string get_language ()
134+ {
135+ switch (Cpp::GetLanguage (nullptr ))
136+ {
137+ case Cpp::InterpreterLanguage::Unknown:
138+ return " Unknown" ;
139+ case Cpp::InterpreterLanguage::Asm:
140+ return " Asm" ;
141+ case Cpp::InterpreterLanguage::CIR:
142+ return " CIR" ;
143+ case Cpp::InterpreterLanguage::LLVM_IR:
144+ return " LLVM_IR" ;
145+ case Cpp::InterpreterLanguage::C:
146+ return " C" ;
147+ case Cpp::InterpreterLanguage::CPlusPlus:
148+ return " C++" ;
149+ case Cpp::InterpreterLanguage::ObjC:
150+ return " ObjC" ;
151+ case Cpp::InterpreterLanguage::ObjCPlusPlus:
152+ return " ObjC++" ;
153+ case Cpp::InterpreterLanguage::OpenCL:
154+ return " OpenCL" ;
155+ case Cpp::InterpreterLanguage::OpenCLCXX:
156+ return " OpenCLCXX" ;
157+ case Cpp::InterpreterLanguage::CUDA:
158+ return " CUDA" ;
159+ case Cpp::InterpreterLanguage::HIP:
160+ return " HIP" ;
161+ case Cpp::InterpreterLanguage::HLSL:
162+ return " HLSL" ;
163+ }
164+
165+ return " unknown" ;
166+ }
167+
131168 interpreter::interpreter (int argc, const char * const * argv) :
132169 xmagics ()
133170 , p_cout_strbuf(nullptr )
@@ -138,6 +175,7 @@ __get_cxx_version ()
138175 // NOLINTNEXTLINE (cppcoreguidelines-pro-bounds-pointer-arithmetic)
139176 createInterpreter (Args (argv ? argv + 1 : argv, argv + argc));
140177 m_version = get_stdopt ();
178+ m_language = get_language ();
141179 redirect_output ();
142180 init_preamble ();
143181 init_magic ();
@@ -340,7 +378,7 @@ __get_cxx_version ()
340378 return xeus::create_info_reply (
341379 " xeus-cpp" ,
342380 XEUS_CPP_VERSION,
343- " C++ " ,
381+ m_language ,
344382 m_version,
345383 " text/x-c++src" ,
346384 " .cpp" ,
0 commit comments