@@ -102,6 +102,43 @@ __get_cxx_version ()
102102 return std::to_string (cxx_version);
103103 }
104104
105+ // FIXME: This function should be upstreamed to CppInterOp. See
106+ // https://github.com/compiler-research/CppInterOp/issues/879
107+ static std::string get_language ()
108+ {
109+ switch (Cpp::GetLanguage (nullptr ))
110+ {
111+ case Cpp::InterpreterLanguage::Unknown:
112+ return " Unknown" ;
113+ case Cpp::InterpreterLanguage::Asm:
114+ return " Asm" ;
115+ case Cpp::InterpreterLanguage::CIR :
116+ return " CIR" ;
117+ case Cpp::InterpreterLanguage::LLVM_IR :
118+ return " LLVM_IR" ;
119+ case Cpp::InterpreterLanguage::C:
120+ return " C" ;
121+ case Cpp::InterpreterLanguage::CPlusPlus:
122+ return " C++" ;
123+ case Cpp::InterpreterLanguage::ObjC:
124+ return " ObjC" ;
125+ case Cpp::InterpreterLanguage::ObjCPlusPlus:
126+ return " ObjC++" ;
127+ case Cpp::InterpreterLanguage::OpenCL:
128+ return " OpenCL" ;
129+ case Cpp::InterpreterLanguage::OpenCLCXX:
130+ return " OpenCLCXX" ;
131+ case Cpp::InterpreterLanguage::CUDA :
132+ return " CUDA" ;
133+ case Cpp::InterpreterLanguage::HIP :
134+ return " HIP" ;
135+ case Cpp::InterpreterLanguage::HLSL :
136+ return " HLSL" ;
137+ }
138+
139+ return " unknown" ;
140+ }
141+
105142 interpreter::interpreter (int argc, const char * const * argv) :
106143 xmagics ()
107144 , p_cout_strbuf(nullptr )
@@ -112,6 +149,7 @@ __get_cxx_version ()
112149 // NOLINTNEXTLINE (cppcoreguidelines-pro-bounds-pointer-arithmetic)
113150 createInterpreter (Args (argv ? argv + 1 : argv, argv + argc));
114151 m_version = get_stdopt ();
152+ m_language = get_language ();
115153 redirect_output ();
116154 init_preamble ();
117155 init_magic ();
@@ -314,7 +352,7 @@ __get_cxx_version ()
314352 return xeus::create_info_reply (
315353 " xeus-cpp" ,
316354 XEUS_CPP_VERSION ,
317- " C++ " ,
355+ m_language ,
318356 m_version,
319357 " text/x-c++src" ,
320358 " .cpp" ,
0 commit comments