From 16eeea252423713cefb41f3f8a306a96446849de Mon Sep 17 00:00:00 2001 From: Username404 <w.iron.zombie@gmail.com> Date: Wed, 18 May 2022 18:56:54 +0200 Subject: [PATCH] Target.hpp: Use reinterpret_cast instead of dynamic_cast CMakeLists.txt: Disable the reinterpret-base-class warning when using Clang Signed-off-by: Username404 <w.iron.zombie@gmail.com> --- CMakeLists.txt | 2 +- src/headers/transpiler/Target.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f8cb8d8..d801f8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,7 +99,7 @@ elseif(${IS_CLANG}) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fwhole-program-vtables") endif() endif() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -Wno-unqualified-std-cast-call") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -Wno-unqualified-std-cast-call -Wno-reinterpret-base-class") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fstrict-vtable-pointers") elseif(MSVC) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${MINIMAL_MSVC} AND NOT ${IGNORE_MINIMAL_COMPILER_VERSION}) diff --git a/src/headers/transpiler/Target.hpp b/src/headers/transpiler/Target.hpp index d4d5fec..9e84a84 100644 --- a/src/headers/transpiler/Target.hpp +++ b/src/headers/transpiler/Target.hpp @@ -67,7 +67,7 @@ protected: } typedef function<void (const ParseTree& parsedTree, unsigned int& index)> task; #define make_task_base(start, type, captures, function_body) make_pair(type_index(typeid(type)), [captures](const ParseTree& parsedTree, unsigned int& index) { start; function_body }) - #define make_task_base_R(T, C, F) make_task_base(const T& parseComponent = dynamic_cast<T&>(*parsedTree[index]), T, C, F) + #define make_task_base_R(T, C, F) make_task_base(const T& parseComponent = reinterpret_cast<T&>(*parsedTree[index]), T, C, F) #define make_task(T, F) make_task_base_R(T, this, F) #define make_task_noR(T, F) make_task_base(,T, this, F) #define make_nonlocal_task(T, F) make_task_base_R(T, , F)