summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-04-11 18:01:41 +0200
committerBram Moolenaar <Bram@vim.org>2020-04-11 18:01:41 +0200
commit81ea1dfb97af6622c9ad3efdbad317ec965ebaeb (patch)
tree51fd1d630abf2046e17da9d6b9ab21052b02efa2
parent004a6781b3cf15ca5dd632c38cc09bb3b253d1f8 (diff)
downloadvim-git-81ea1dfb97af6622c9ad3efdbad317ec965ebaeb.tar.gz
patch 8.2.0541: Travis CI does not give compiler warningsv8.2.0541
Problem: Travis CI does not give compiler warnings. Solution: Add flags for warnings. Fix uncovered problems. (Ozaki Kiichi, closes #5898)
-rw-r--r--.travis.yml20
-rw-r--r--ci/config.mk.clang.sed1
-rw-r--r--ci/config.mk.gcc.sed1
-rw-r--r--ci/config.mk.sed2
-rw-r--r--src/if_perl.xs6
-rw-r--r--src/if_ruby.c6
-rw-r--r--src/libvterm/t/harness.c30
-rw-r--r--src/version.c2
8 files changed, 54 insertions, 14 deletions
diff --git a/.travis.yml b/.travis.yml
index f3da2d10a..356702cdf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,7 @@ language: c
_anchors:
envs:
- &tiny-nogui
- BUILD=yes TEST=test FEATURES=tiny "CONFOPT='--disable-gui'" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
+ BUILD=yes TEST=test FEATURES=tiny CONFOPT="--disable-gui" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &tiny
BUILD=yes TEST=test FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &small
@@ -12,10 +12,10 @@ _anchors:
BUILD=yes TEST=test FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- &linux-huge
BUILD=yes TEST="scripttests test_libvterm" CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
+ CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &osx-huge # macOS build
BUILD=yes TEST=test FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
- "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
+ CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- &unittests
BUILD=no TEST=unittests CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
- &asan # ASAN build
@@ -124,6 +124,10 @@ script:
- echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
- |
if [[ "${BUILD}" = "yes" ]]; then
+ # Append various warning flags to CFLAGS.
+ # BSD sed needs backup extension specified.
+ sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
+ sed -i.bak -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
make ${SHADOWOPT} -j${NPROC}
fi
- echo -en "travis_fold:end:build\\r\\033[0K"
@@ -215,11 +219,6 @@ jobs:
compiler: gcc
env: *linux-huge
after_success: *coverage
- - <<: *linux
- name: unittests+coverage/gcc
- compiler: gcc
- env: *unittests
- after_success: *coverage
- <<: *linux # ASAN
name: huge+asan/gcc
compiler: gcc
@@ -235,6 +234,11 @@ jobs:
- TEST="-C src testgui"
after_success: *coverage
- <<: *linux
+ name: unittests+coverage/gcc
+ compiler: gcc
+ env: *unittests
+ after_success: *coverage
+ - <<: *linux
name: vimtags/gcc
compiler: gcc
env:
diff --git a/ci/config.mk.clang.sed b/ci/config.mk.clang.sed
new file mode 100644
index 000000000..40c6705ac
--- /dev/null
+++ b/ci/config.mk.clang.sed
@@ -0,0 +1 @@
+/^RUBY_CFLAGS\b/s/$/ -Wno-error=unknown-attributes -Wno-error=ignored-attributes/
diff --git a/ci/config.mk.gcc.sed b/ci/config.mk.gcc.sed
new file mode 100644
index 000000000..3b11569eb
--- /dev/null
+++ b/ci/config.mk.gcc.sed
@@ -0,0 +1 @@
+/^CFLAGS\b/s/$/ -Wno-error=maybe-uninitialized/
diff --git a/ci/config.mk.sed b/ci/config.mk.sed
new file mode 100644
index 000000000..31682787e
--- /dev/null
+++ b/ci/config.mk.sed
@@ -0,0 +1,2 @@
+/^CFLAGS\b/s/$/ -Wall -Wextra -Wshadow -Werror/
+/^PERL_CFLAGS\b/s/$/ -Wno-error=unused-function/
diff --git a/src/if_perl.xs b/src/if_perl.xs
index 3af309a65..015189cc0 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -195,7 +195,9 @@ typedef int perl_key;
# define Perl_croak_xs_usage dll_Perl_croak_xs_usage
# endif
# ifndef PROTO
-# define Perl_croak_nocontext dll_Perl_croak_nocontext
+# ifdef PERL_IMPLICIT_CONTEXT
+# define Perl_croak_nocontext dll_Perl_croak_nocontext
+# endif
# define Perl_call_argv dll_Perl_call_argv
# define Perl_call_pv dll_Perl_call_pv
# define Perl_eval_sv dll_Perl_eval_sv
@@ -345,7 +347,9 @@ static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const para
__attribute__noreturn__;
# endif
# endif
+# ifdef PERL_IMPLICIT_CONTEXT
static void (*Perl_croak_nocontext)(const char*, ...) __attribute__noreturn__;
+# endif
static I32 (*Perl_dowantarray)(pTHX);
static void (*Perl_free_tmps)(pTHX);
static HV* (*Perl_gv_stashpv)(pTHX_ const char*, I32);
diff --git a/src/if_ruby.c b/src/if_ruby.c
index 9b6d388a3..e989c0133 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -99,6 +99,12 @@
# define rb_ary_detransient rb_ary_detransient_stub
#endif
+// On macOS pre-installed Ruby defines "SIZEOF_TIME_T" as "SIZEOF_LONG" so it
+// conflicts with the definition in config.h then causes macro-redifned warning.
+#ifdef SIZEOF_TIME_T
+# undef SIZEOF_TIME_T
+#endif
+
#include <ruby.h>
#if RUBY_VERSION >= 19
# include <ruby/encoding.h>
diff --git a/src/libvterm/t/harness.c b/src/libvterm/t/harness.c
index ccb2b39f5..fed5844bf 100644
--- a/src/libvterm/t/harness.c
+++ b/src/libvterm/t/harness.c
@@ -67,7 +67,8 @@ static VTermEncodingInstance encoding;
static int parser_text(const char bytes[], size_t len, void *user)
{
- int i;
+ size_t i;
+ (void)user;
printf("text ");
for(i = 0; i < len; i++) {
@@ -83,6 +84,7 @@ static int parser_text(const char bytes[], size_t len, void *user)
static int parser_control(unsigned char control, void *user)
{
+ (void)user;
printf("control %02x\n", control);
return 1;
@@ -90,7 +92,8 @@ static int parser_control(unsigned char control, void *user)
static int parser_escape(const char bytes[], size_t len, void *user)
{
- int i;
+ size_t i;
+ (void)user;
if(bytes[0] >= 0x20 && bytes[0] < 0x30) {
if(len < 2)
@@ -112,6 +115,7 @@ static int parser_escape(const char bytes[], size_t len, void *user)
static int parser_csi(const char *leader, const long args[], int argcount, const char *intermed, char command, void *user)
{
int i;
+ (void)user;
printf("csi %02x", command);
if(leader && leader[0]) {
@@ -142,7 +146,9 @@ static int parser_csi(const char *leader, const long args[], int argcount, const
static int parser_osc(const char *command, size_t cmdlen, void *user)
{
- int i;
+ size_t i;
+ (void)user;
+
printf("osc ");
for(i = 0; i < cmdlen; i++)
printf("%02x", command[i]);
@@ -153,7 +159,9 @@ static int parser_osc(const char *command, size_t cmdlen, void *user)
static int parser_dcs(const char *command, size_t cmdlen, void *user)
{
- int i;
+ size_t i;
+ (void)user;
+
printf("dcs ");
for(i = 0; i < cmdlen; i++)
printf("%02x", command[i]);
@@ -178,6 +186,7 @@ static int want_movecursor = 0;
static VTermPos state_pos;
static int movecursor(VTermPos pos, VTermPos oldpos, int visible, void *user)
{
+ (void)oldpos, (void)visible, (void)user;
state_pos = pos;
if(want_movecursor)
@@ -189,6 +198,7 @@ static int movecursor(VTermPos pos, VTermPos oldpos, int visible, void *user)
static int want_scrollrect = 0;
static int scrollrect(VTermRect rect, int downward, int rightward, void *user)
{
+ (void)user;
if(!want_scrollrect)
return 0;
@@ -202,6 +212,7 @@ static int scrollrect(VTermRect rect, int downward, int rightward, void *user)
static int want_moverect = 0;
static int moverect(VTermRect dest, VTermRect src, void *user)
{
+ (void)user;
if(!want_moverect)
return 0;
@@ -215,6 +226,7 @@ static int moverect(VTermRect dest, VTermRect src, void *user)
static int want_settermprop = 0;
static int settermprop(VTermProp prop, VTermValue *val, void *user)
{
+ (void)user;
VTermValueType type;
if(!want_settermprop)
return 1;
@@ -247,6 +259,7 @@ static int want_state_putglyph = 0;
static int state_putglyph(VTermGlyphInfo *info, VTermPos pos, void *user)
{
int i;
+ (void)user;
if(!want_state_putglyph)
return 1;
@@ -268,6 +281,7 @@ static int state_putglyph(VTermGlyphInfo *info, VTermPos pos, void *user)
static int want_state_erase = 0;
static int state_erase(VTermRect rect, int selective, void *user)
{
+ (void)user;
if(!want_state_erase)
return 1;
@@ -291,6 +305,7 @@ static struct {
} state_pen;
static int state_setpenattr(VTermAttr attr, VTermValue *val, void *user)
{
+ (void)user;
switch(attr) {
case VTERM_ATTR_BOLD:
state_pen.bold = val->boolean;
@@ -329,6 +344,7 @@ static int state_setpenattr(VTermAttr attr, VTermValue *val, void *user)
static int state_setlineinfo(int row, const VTermLineInfo *newinfo, const VTermLineInfo *oldinfo, void *user)
{
+ (void)row, (void)newinfo, (void)oldinfo, (void)user;
return 1;
}
@@ -350,6 +366,7 @@ static int want_screen_damage = 0;
static int want_screen_damage_cells = 0;
static int screen_damage(VTermRect rect, void *user)
{
+ (void)user;
if(!want_screen_damage)
return 1;
@@ -404,6 +421,7 @@ static int screen_sb_pushline(int cols, const VTermScreenCell *cells, void *user
{
int eol;
int c;
+ (void)user;
if(!want_screen_scrollback)
return 1;
@@ -423,6 +441,7 @@ static int screen_sb_pushline(int cols, const VTermScreenCell *cells, void *user
static int screen_sb_popline(int cols, VTermScreenCell *cells, void *user)
{
int col;
+ (void)user;
if(!want_screen_scrollback)
return 0;
@@ -456,6 +475,7 @@ int main(int argc, char **argv)
{
char line[1024] = {0};
int flag;
+ (void)argc, (void)argv;
int err;
@@ -926,7 +946,7 @@ int main(int argc, char **argv)
outlen = vterm_output_get_buffer_current(vt);
if(outlen > 0) {
- int i;
+ size_t i;
char outbuff[1024];
vterm_output_read(vt, outbuff, outlen);
diff --git a/src/version.c b/src/version.c
index be24594d2..b170d4a86 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 541,
+/**/
540,
/**/
539,