@@ -102,6 +102,42 @@ __get_cxx_version ()
102102 return std::to_string (cxx_version);
103103 }
104104
105+ // FIXME: This function should be upstreamed to CppInterOp. See https://github.com/compiler-research/CppInterOp/issues/879
106+ static std::string get_language ()
107+ {
108+ switch (Cpp::GetLanguage (nullptr ))
109+ {
110+ case Cpp::InterpreterLanguage::Unknown:
111+ return " Unknown" ;
112+ case Cpp::InterpreterLanguage::Asm:
113+ return " Asm" ;
114+ case Cpp::InterpreterLanguage::CIR:
115+ return " CIR" ;
116+ case Cpp::InterpreterLanguage::LLVM_IR:
117+ return " LLVM_IR" ;
118+ case Cpp::InterpreterLanguage::C:
119+ return " C" ;
120+ case Cpp::InterpreterLanguage::CPlusPlus:
121+ return " C++" ;
122+ case Cpp::InterpreterLanguage::ObjC:
123+ return " ObjC" ;
124+ case Cpp::InterpreterLanguage::ObjCPlusPlus:
125+ return " ObjC++" ;
126+ case Cpp::InterpreterLanguage::OpenCL:
127+ return " OpenCL" ;
128+ case Cpp::InterpreterLanguage::OpenCLCXX:
129+ return " OpenCLCXX" ;
130+ case Cpp::InterpreterLanguage::CUDA:
131+ return " CUDA" ;
132+ case Cpp::InterpreterLanguage::HIP:
133+ return " HIP" ;
134+ case Cpp::InterpreterLanguage::HLSL:
135+ return " HLSL" ;
136+ }
137+
138+ return " unknown" ;
139+ }
140+
105141 interpreter::interpreter (int argc, const char * const * argv) :
106142 xmagics ()
107143 , p_cout_strbuf(nullptr )
@@ -112,6 +148,7 @@ __get_cxx_version ()
112148 // NOLINTNEXTLINE (cppcoreguidelines-pro-bounds-pointer-arithmetic)
113149 createInterpreter (Args (argv ? argv + 1 : argv, argv + argc));
114150 m_version = get_stdopt ();
151+ m_language = get_language ();
115152 redirect_output ();
116153 init_preamble ();
117154 init_magic ();
@@ -314,7 +351,7 @@ __get_cxx_version ()
314351 return xeus::create_info_reply (
315352 " xeus-cpp" ,
316353 XEUS_CPP_VERSION,
317- " C++ " ,
354+ m_language ,
318355 m_version,
319356 " text/x-c++src" ,
320357 " .cpp" ,
0 commit comments