[requires CppInterOp 1.9.0 release] Use Cpp::GetLanguageStandard to get language standard#461
[requires CppInterOp 1.9.0 release] Use Cpp::GetLanguageStandard to get language standard#461mcbarton wants to merge 1 commit intocompiler-research:mainfrom
Conversation
f249209 to
b682aed
Compare
b682aed to
de2ab7b
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #461 +/- ##
==========================================
- Coverage 80.56% 73.90% -6.66%
==========================================
Files 21 21
Lines 854 939 +85
Branches 80 80
==========================================
+ Hits 688 694 +6
- Misses 166 245 +79
🚀 New features to boost your workflow:
|
| switch (Cpp::GetLanguageStandard(nullptr)) | ||
| { | ||
| case Cpp::InterpreterLanguageStandard::c89: | ||
| return "c89"; | ||
| case Cpp::InterpreterLanguageStandard::c94: | ||
| return "c94"; | ||
| case Cpp::InterpreterLanguageStandard::gnu89: | ||
| return "gnu89"; | ||
| case Cpp::InterpreterLanguageStandard::c99: | ||
| return "c99"; | ||
| case Cpp::InterpreterLanguageStandard::gnu99: | ||
| return "gnu99"; | ||
| case Cpp::InterpreterLanguageStandard::c11: | ||
| return "c11"; | ||
| case Cpp::InterpreterLanguageStandard::gnu11: | ||
| return "gnu11"; | ||
| case Cpp::InterpreterLanguageStandard::c17: | ||
| return "c17"; | ||
| case Cpp::InterpreterLanguageStandard::gnu17: | ||
| return "gnu17"; | ||
| case Cpp::InterpreterLanguageStandard::c23: | ||
| return "c23"; | ||
| case Cpp::InterpreterLanguageStandard::gnu23: | ||
| return "gnu23"; | ||
| case Cpp::InterpreterLanguageStandard::c2y: | ||
| return "c2y"; | ||
| case Cpp::InterpreterLanguageStandard::gnu2y: | ||
| return "gnu2y"; | ||
| case Cpp::InterpreterLanguageStandard::cxx98: | ||
| return "cxx98"; | ||
| case Cpp::InterpreterLanguageStandard::gnucxx98: | ||
| return "gnucxx98"; | ||
| case Cpp::InterpreterLanguageStandard::cxx11: | ||
| return "cxx11"; | ||
| case Cpp::InterpreterLanguageStandard::gnucxx11: | ||
| return "gnucxx11"; | ||
| case Cpp::InterpreterLanguageStandard::cxx14: | ||
| return "cxx14"; | ||
| case Cpp::InterpreterLanguageStandard::gnucxx14: | ||
| return "gnucxx14"; | ||
| case Cpp::InterpreterLanguageStandard::cxx17: | ||
| return "cxx17"; | ||
| case Cpp::InterpreterLanguageStandard::gnucxx17: | ||
| return "gnucxx17"; | ||
| case Cpp::InterpreterLanguageStandard::cxx20: | ||
| return "cxx20"; | ||
| case Cpp::InterpreterLanguageStandard::gnucxx20: | ||
| return "gnucxx20"; | ||
| case Cpp::InterpreterLanguageStandard::cxx23: | ||
| return "cxx23"; | ||
| case Cpp::InterpreterLanguageStandard::gnucxx23: | ||
| return "gnucxx23"; | ||
| case Cpp::InterpreterLanguageStandard::cxx26: | ||
| return "cxx26"; | ||
| case Cpp::InterpreterLanguageStandard::gnucxx26: | ||
| return "gnucxx26"; | ||
| case Cpp::InterpreterLanguageStandard::opencl10: | ||
| return "opencl10"; | ||
| case Cpp::InterpreterLanguageStandard::opencl11: | ||
| return "opencl11"; | ||
| case Cpp::InterpreterLanguageStandard::opencl12: | ||
| return "opencl12"; | ||
| case Cpp::InterpreterLanguageStandard::opencl20: | ||
| return "opencl20"; | ||
| case Cpp::InterpreterLanguageStandard::opencl30: | ||
| return "opencl30"; | ||
| case Cpp::InterpreterLanguageStandard::openclcpp10: | ||
| return "openclcpp10"; | ||
| case Cpp::InterpreterLanguageStandard::openclcpp2021: | ||
| return "openclcpp2021"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl: | ||
| return "hlsl"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl2015: | ||
| return "hlsl2015"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl2016: | ||
| return "hlsl2016"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl2017: | ||
| return "hlsl2017"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl2018: | ||
| return "hlsl2018"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl2021: | ||
| return "hlsl2021"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl202x: | ||
| return "hlsl202x"; | ||
| case Cpp::InterpreterLanguageStandard::hlsl202y: | ||
| return "hlsl202y"; | ||
| case Cpp::InterpreterLanguageStandard::lang_unspecified: | ||
| return "lang_unspecified"; | ||
| } |
There was a problem hiding this comment.
That will need to move to cppinterop in a longer run...
There was a problem hiding this comment.
Yes for the next cppinterop release I will upstream this function. This PR is ready as of now, if your willing to approve and take it in.
I'm not sure what this will return for the openmp kernels. I suspect it will return the c/c++ standard.
There was a problem hiding this comment.
Yes, it should be fine assuming we have a fixme explaining that and pointing to a bug report in cppinterop
There was a problem hiding this comment.
Added fixme comment. Also did this for my PR about using CppInterOp to get the language (this PR #462)
There was a problem hiding this comment.
Arghh okay I'm not a fan of a huge switch case like this lying in xinterpreter.cpp !
Should be restricted to creating the interpreter and overriding the kernel methods from xeus.
Can this lie in a xutils/xhelper ? (we should have one I think)
There was a problem hiding this comment.
Also let's just start with the kernels we currently cater to ? I guess we don't need such a huge switch case.
Offcourse when shifting it to cppinterop we should have everything !
There was a problem hiding this comment.
I've reduced it so that get_stdopt covers all the c++ standards we did previously, plus all the c standards from c11 onwards, since we have the c kernels now.
There was a problem hiding this comment.
Turns out I need to cover all cases otherwise I get these errors https://github.com/compiler-research/xeus-cpp/actions/runs/23733299499/job/69131805701?pr=461#step:11:33 , since we treat all warnings as errors in the ci. I will switch back.
51e79c3 to
b545d00
Compare
19e4ea1 to
9f90164
Compare
9f90164 to
31ff22e
Compare
With CppInterOp 1.9.0, an API was created which can detect the c/c++ standard used (Cpp::GetLanguageStandard). This PR replaces get_stdopt xeus-cpp is currently using with Cpp::GetLanguageStandard. This PR needs testing and I will check it in the coming days.