Skip to content

Commit 1bfab13

Browse files
committed
chore: disable builtin unreachable for windows
1 parent f9e8e2c commit 1bfab13

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
5555
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_JS_LIB} ${LIBSESSION_STATIC_BUNDLE_LIBS})
5656

5757

58-
# if(UNIX AND NOT APPLE)
59-
# # Add switch-enum warnings as errors on Linux (see __builtin_unreachable calls)
58+
if(UNIX AND NOT APPLE)
59+
# Add switch-enum warnings as errors on Linux (see __builtin_unreachable()/UNREACHABLE() calls)
6060
# target_compile_options(${PROJECT_NAME} PRIVATE -Werror=switch-enum)
61-
# endif()
61+
endif()
6262

6363

6464
if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET)

include/utilities.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ namespace session::nodeapi {
2424

2525
using namespace std::literals;
2626

27+
#ifdef _MSC_VER
28+
#define UNREACHABLE() __assume(0)
29+
#else
30+
#define UNREACHABLE() __builtin_unreachable()
31+
#endif
32+
2733
inline auto cat = oxen::log::Cat("nodeapi");
2834

2935
static void checkOrThrow(bool condition, const char* msg) {

src/pro/pro.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "pro/pro.hpp"
22

33
namespace session::nodeapi {
4+
45
std::string_view ProBackendEnumToString(SESSION_PRO_BACKEND_PAYMENT_PROVIDER v) {
56
switch (v) {
67
case SESSION_PRO_BACKEND_PAYMENT_PROVIDER_NIL: return "NIL";
@@ -9,7 +10,7 @@ std::string_view ProBackendEnumToString(SESSION_PRO_BACKEND_PAYMENT_PROVIDER v)
910
case SESSION_PRO_BACKEND_PAYMENT_PROVIDER_COUNT:
1011
throw std::invalid_argument("SESSION_PRO_BACKEND_PAYMENT_PROVIDER_COUNT");
1112
}
12-
__builtin_unreachable();
13+
UNREACHABLE();
1314
}
1415

1516
std::string_view ProBackendEnumToString(SESSION_PRO_BACKEND_PAYMENT_STATUS v) {
@@ -22,7 +23,7 @@ std::string_view ProBackendEnumToString(SESSION_PRO_BACKEND_PAYMENT_STATUS v) {
2223
case SESSION_PRO_BACKEND_PAYMENT_STATUS_COUNT:
2324
throw std::invalid_argument("SESSION_PRO_BACKEND_PAYMENT_STATUS_COUNT");
2425
}
25-
__builtin_unreachable();
26+
UNREACHABLE();
2627
}
2728

2829
std::string_view proBackendEnumToString(SESSION_PRO_BACKEND_PLAN v) {
@@ -34,7 +35,7 @@ std::string_view proBackendEnumToString(SESSION_PRO_BACKEND_PLAN v) {
3435
case SESSION_PRO_BACKEND_PLAN_COUNT:
3536
throw std::invalid_argument("SESSION_PRO_BACKEND_PLAN_COUNT");
3637
}
37-
__builtin_unreachable();
38+
UNREACHABLE();
3839
}
3940

4041
std::string_view proBackendEnumToString(SESSION_PRO_BACKEND_USER_PRO_STATUS v) {
@@ -45,7 +46,7 @@ std::string_view proBackendEnumToString(SESSION_PRO_BACKEND_USER_PRO_STATUS v) {
4546
case SESSION_PRO_BACKEND_USER_PRO_STATUS_COUNT:
4647
throw std::invalid_argument("SESSION_PRO_BACKEND_USER_PRO_STATUS_COUNT");
4748
}
48-
__builtin_unreachable();
49+
UNREACHABLE();
4950
}
5051

5152
std::string_view ProBackendEnumToString(SESSION_PRO_BACKEND_GET_PRO_STATUS_ERROR_REPORT v) {
@@ -55,7 +56,7 @@ std::string_view ProBackendEnumToString(SESSION_PRO_BACKEND_GET_PRO_STATUS_ERROR
5556
case SESSION_PRO_BACKEND_GET_PRO_STATUS_ERROR_REPORT_COUNT:
5657
throw std::invalid_argument("SESSION_PRO_BACKEND_GET_PRO_STATUS_ERROR_REPORT_COUNT");
5758
}
58-
__builtin_unreachable();
59+
UNREACHABLE();
5960
}
6061

6162
std::string_view proBackendEnumPlanToString(SESSION_PRO_BACKEND_PLAN v) {
@@ -67,7 +68,7 @@ std::string_view proBackendEnumPlanToString(SESSION_PRO_BACKEND_PLAN v) {
6768
case SESSION_PRO_BACKEND_PLAN_COUNT:
6869
throw std::invalid_argument("SESSION_PRO_BACKEND_PLAN_COUNT");
6970
}
70-
__builtin_unreachable();
71+
UNREACHABLE();
7172
}
7273

7374
std::string_view proBackendEnumPaymentProviderToString(SESSION_PRO_BACKEND_PAYMENT_PROVIDER v) {
@@ -79,7 +80,7 @@ std::string_view proBackendEnumPaymentProviderToString(SESSION_PRO_BACKEND_PAYME
7980
case SESSION_PRO_BACKEND_PAYMENT_PROVIDER_COUNT:
8081
throw std::invalid_argument("SESSION_PRO_BACKEND_PAYMENT_PROVIDER_COUNT");
8182
}
82-
__builtin_unreachable();
83+
UNREACHABLE();
8384
}
8485

8586
std::string_view proBackendEnumPaymentStatusToString(SESSION_PRO_BACKEND_PAYMENT_STATUS v) {
@@ -92,7 +93,7 @@ std::string_view proBackendEnumPaymentStatusToString(SESSION_PRO_BACKEND_PAYMENT
9293
case SESSION_PRO_BACKEND_PAYMENT_STATUS_COUNT:
9394
throw std::invalid_argument("SESSION_PRO_BACKEND_PAYMENT_STATUS_COUNT");
9495
}
95-
__builtin_unreachable();
96+
UNREACHABLE();
9697
}
9798

9899
std::string_view proBackendEnumToString(session::ProFeaturesForMsgStatus v) {
@@ -102,7 +103,7 @@ std::string_view proBackendEnumToString(session::ProFeaturesForMsgStatus v) {
102103
case session::ProFeaturesForMsgStatus::ExceedsCharacterLimit:
103104
return "EXCEEDS_CHARACTER_LIMIT";
104105
}
105-
__builtin_unreachable();
106+
UNREACHABLE();
106107
}
107108

108109
} // namespace session::nodeapi

0 commit comments

Comments
 (0)