From 8d65633b6ac40747b774c9bb18edb23cbb18e81c Mon Sep 17 00:00:00 2001 From: pantor Date: Thu, 17 Jun 2021 19:48:28 +0200 Subject: [PATCH] add warnings for clang and fix them --- CMakeLists.txt | 22 +++++++++++++--------- include/inja/node.hpp | 2 +- include/inja/parser.hpp | 2 +- single_include/inja/inja.hpp | 4 ++-- test/test-functions.cpp | 8 ++++---- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 30dc824..c6f0c15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,30 +12,28 @@ option(INJA_BUILD_TESTS "Build unit tests when BUILD_TESTING is enabled." ON) option(BUILD_BENCHMARK "Build benchmark" ON) option(COVERALLS "Generate coveralls data" OFF) -set(INJA_INSTALL_INCLUDE_DIR "include") +set(INJA_INSTALL_INCLUDE_DIR "include") +set(INJA_PACKAGE_USE_EMBEDDED_JSON OFF) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake) -if(CMAKE_COMPILER_IS_GNUCC) - add_compile_options(-Wall) -endif() +# For using the correct __cplusplus macro if(MSVC) - add_compile_options(/W4 /permissive- /utf-8 /Zc:__cplusplus) + add_compile_options(/utf-8 /Zc:__cplusplus) endif() add_library(inja INTERFACE) add_library(pantor::inja ALIAS inja) + target_include_directories(inja INTERFACE $ $ ) - target_compile_features(inja INTERFACE cxx_std_11) -set(INJA_PACKAGE_USE_EMBEDDED_JSON OFF) if(INJA_USE_EMBEDDED_JSON) find_package(nlohmann_json QUIET) @@ -67,10 +65,11 @@ else() endif() endif() + target_link_libraries(inja INTERFACE ${INJA_SELECTED_JSON_LIBRARY}) + execute_process(COMMAND scripts/update_single_include.sh WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) -# CMake: add_custom_command if(BUILD_TESTING AND INJA_BUILD_TESTS) @@ -78,9 +77,14 @@ if(BUILD_TESTING AND INJA_BUILD_TESTS) add_executable(inja_test test/test.cpp) target_link_libraries(inja_test PRIVATE inja) - add_test(inja_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/inja_test) + if(MSVC) + target_compile_options(inja_test PRIVATE /W4 /WX /permissive-) + else() + target_compile_options(inja_test PRIVATE -Wall -Wextra -pedantic -Werror) + endif() + add_library(single_inja INTERFACE) target_compile_features(single_inja INTERFACE cxx_std_11) diff --git a/include/inja/node.hpp b/include/inja/node.hpp index 0fd9a41..43a6ef3 100644 --- a/include/inja/node.hpp +++ b/include/inja/node.hpp @@ -352,7 +352,7 @@ public: BlockNode block; BlockNode *const parent; - explicit BlockStatementNode(BlockNode *const parent, const std::string& name, size_t pos) : StatementNode(pos), parent(parent), name(name) { } + explicit BlockStatementNode(BlockNode *const parent, const std::string& name, size_t pos) : StatementNode(pos), name(name), parent(parent) { } void accept(NodeVisitor& v) const { v.visit(*this); diff --git a/include/inja/parser.hpp b/include/inja/parser.hpp index a211d31..0c1f867 100644 --- a/include/inja/parser.hpp +++ b/include/inja/parser.hpp @@ -81,7 +81,7 @@ class Parser { auto function = operator_stack.top(); operator_stack.pop(); - for (size_t i = 0; i < function->number_args; ++i) { + for (int i = 0; i < function->number_args; ++i) { function->arguments.insert(function->arguments.begin(), arguments.back()); arguments.pop_back(); } diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp index e1625cf..d719cc9 100644 --- a/single_include/inja/inja.hpp +++ b/single_include/inja/inja.hpp @@ -2705,7 +2705,7 @@ public: BlockNode block; BlockNode *const parent; - explicit BlockStatementNode(BlockNode *const parent, const std::string& name, size_t pos) : StatementNode(pos), parent(parent), name(name) { } + explicit BlockStatementNode(BlockNode *const parent, const std::string& name, size_t pos) : StatementNode(pos), name(name), parent(parent) { } void accept(NodeVisitor& v) const { v.visit(*this); @@ -2916,7 +2916,7 @@ class Parser { auto function = operator_stack.top(); operator_stack.pop(); - for (size_t i = 0; i < function->number_args; ++i) { + for (int i = 0; i < function->number_args; ++i) { function->arguments.insert(function->arguments.begin(), arguments.back()); arguments.pop_back(); } diff --git a/test/test-functions.cpp b/test/test-functions.cpp index e920ff2..e0f3a6e 100644 --- a/test/test-functions.cpp +++ b/test/test-functions.cpp @@ -208,7 +208,7 @@ TEST_CASE("callbacks") { }); std::string greet = "Hello"; - env.add_callback("double-greetings", 0, [greet](inja::Arguments args) { return greet + " " + greet + "!"; }); + env.add_callback("double-greetings", 0, [greet](inja::Arguments) { return greet + " " + greet + "!"; }); env.add_callback("multiply", 2, [](inja::Arguments args) { double number1 = args.at(0)->get(); @@ -228,11 +228,11 @@ TEST_CASE("callbacks") { return number1.length(); }); - env.add_void_callback("log", 1, [](inja::Arguments args) { - int a = 2; + env.add_void_callback("log", 1, [](inja::Arguments) { + }); - env.add_callback("multiply", 0, [](inja::Arguments args) { return 1.0; }); + env.add_callback("multiply", 0, [](inja::Arguments) { return 1.0; }); CHECK(env.render("{{ double(age) }}", data) == "56"); CHECK(env.render("{{ half(age) }}", data) == "14");