From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp61.i.mail.ru (smtp61.i.mail.ru [217.69.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 7D75C44643B for ; Wed, 23 Sep 2020 04:40:33 +0300 (MSK) From: Alexander Turenko Date: Wed, 23 Sep 2020 04:40:16 +0300 Message-Id: <3d5222f96f7fa33b5eed6d84b019cc0f03f09e41.1600824556.git.alexander.turenko@tarantool.org> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH 1.10 03/16] module api: get rid of typedef redefinitions List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy Cc: tarantool-patches@dev.tarantool.org, Alexander Turenko Technically C99 forbids it. Clang complains about typedef redefinitions when C99 is used (it is default prior to clang 3.6): | error: redefinition of typedef 'box_tuple_t' is a C11 feature | [-Werror,-Wtypedef-redefinition] | error: redefinition of typedef 'box_key_def_t' is a C11 feature | [-Werror,-Wtypedef-redefinition] The generated module.h file should define a type using typedef once. This patch moves extra definitions out of public parts of header files. Reordered api headers to place usages of such types after definitions. Set C99 for the module API test in order to catch problems of this kind in a future. Fixed 'unused value' warnings, which appears after the change (it is strange that -Wall was not passed here before). Fixes #5313 (cherry picked from commit 9d571850d22dea461b5029a50611722b697cdfa8) --- src/CMakeLists.txt | 2 +- src/box/index.h | 5 +++-- src/box/key_def.h | 3 ++- test/app-tap/CMakeLists.txt | 6 ++++++ test/app-tap/module_api.c | 2 ++ 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a8c515134..45a8f7733 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -197,9 +197,9 @@ set(api_headers ${CMAKE_SOURCE_DIR}/src/coio_task.h ${CMAKE_SOURCE_DIR}/src/lua/utils.h ${CMAKE_SOURCE_DIR}/src/box/txn.h + ${CMAKE_SOURCE_DIR}/src/box/tuple.h ${CMAKE_SOURCE_DIR}/src/box/key_def.h ${CMAKE_SOURCE_DIR}/src/box/field_def.h - ${CMAKE_SOURCE_DIR}/src/box/tuple.h ${CMAKE_SOURCE_DIR}/src/box/tuple_format.h ${CMAKE_SOURCE_DIR}/src/box/tuple_extract_key.h ${CMAKE_SOURCE_DIR}/src/box/schema_def.h diff --git a/src/box/index.h b/src/box/index.h index 0a1ac611e..ce2c37eb9 100644 --- a/src/box/index.h +++ b/src/box/index.h @@ -46,10 +46,11 @@ struct index_def; struct key_def; struct info_handler; -/** \cond public */ - typedef struct tuple box_tuple_t; typedef struct key_def box_key_def_t; + +/** \cond public */ + typedef struct iterator box_iterator_t; /** diff --git a/src/box/key_def.h b/src/box/key_def.h index df853215c..36d0b86d4 100644 --- a/src/box/key_def.h +++ b/src/box/key_def.h @@ -167,10 +167,11 @@ key_def_swap(struct key_def *old_def, struct key_def *new_def); void key_def_delete(struct key_def *def); +typedef struct tuple box_tuple_t; + /** \cond public */ typedef struct key_def box_key_def_t; -typedef struct tuple box_tuple_t; /** * Create key definition with key fields with passed typed on passed positions. diff --git a/test/app-tap/CMakeLists.txt b/test/app-tap/CMakeLists.txt index ee67cf533..f11ffacff 100644 --- a/test/app-tap/CMakeLists.txt +++ b/test/app-tap/CMakeLists.txt @@ -1 +1,7 @@ build_module(module_api module_api.c) + +# gh-5313: verify that module.h actually conforms to the C99 +# standard. +set(CMAKE_C_FLAGS "-Wall -Wextra -std=c99") +set(CMAKE_C_FLAGS_DEBUG "-O0 -Werror") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2") diff --git a/test/app-tap/module_api.c b/test/app-tap/module_api.c index 4abe1af48..69d22d44b 100644 --- a/test/app-tap/module_api.c +++ b/test/app-tap/module_api.c @@ -198,6 +198,7 @@ test_toint64(lua_State *L) int fiber_test_func(va_list va) { + (void) va; do { fiber_set_cancellable(true); fiber_sleep(0.01); @@ -380,6 +381,7 @@ test_call(lua_State *L) static int cpcall_handler(lua_State *L) { + (void) L; return 0; } -- 2.25.0