Skip to content

Fix a few errors for clang

Ting-Wei Lan requested to merge wip/lantw/fix-a-few-errors-for-clang into master

These problems are found when compiling GNOME Builder on FreeBSD.

Nested function isn't allowed in clang:

[82/1117] Compiling C object 'src/libide/io/613a1f2@@ide-io-3.33@sta/ide-gfile.c.o'.
FAILED: src/libide/io/613a1f2@@ide-io-3.33@sta/ide-gfile.c.o 
clang -B/home/lantw44/.local/bin -Isrc/libide/io/613a1f2@@ide-io-3.33@sta -Isrc/libide/io -I../../source/gnome-builder/src/libide/io -Isrc/libide/core -I../../source/gnome-builder/src/libide/core -Isrc/libide/threading -I../../source/gnome-builder/src/libide/threading -I/home/lantw44/gnome/devinstall/include/glib-2.0 -I/home/lantw44/gnome/devinstall/lib/glib-2.0/include -I/usr/local/lib/libffi-3.2.1/include -I/home/lantw44/gnome/devinstall/include/gtk-3.0 -I/home/lantw44/gnome/devinstall/include/pango-1.0 -I/usr/local/include/freetype2 -I/usr/local/include/libpng16 -I/usr/local/include/harfbuzz -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/home/lantw44/gnome/devinstall/include/harfbuzz -I/home/lantw44/gnome/devinstall/include/fribidi -I/home/lantw44/gnome/devinstall/include/cairo -I/home/lantw44/gnome/devinstall/include/pixman-1 -I/usr/local/include/libdrm -I/home/lantw44/gnome/devinstall/include/gdk-pixbuf-2.0 -I/home/lantw44/gnome/devinstall/include/gio-unix-2.0 -I/home/lantw44/gnome/devinstall/include/atk-1.0 -I/home/lantw44/gnome/devinstall/include/at-spi2-atk/2.0 -I/home/lantw44/gnome/devinstall/include/at-spi-2.0 -I/usr/local/include/dbus-1.0 -I/usr/local/lib/dbus-1.0/include -I/home/lantw44/gnome/devinstall/include/libdazzle-1.0 -I/home/lantw44/gnome/devinstall/include/libpeas-1.0 -I/home/lantw44/gnome/devinstall/include/gobject-introspection-1.0 -I/home/lantw44/gnome/build/gnome-builder -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -Wcast-align -Wdeclaration-after-statement -Werror=address -Werror=array-bounds -Werror=empty-body -Werror=implicit -Werror=implicit-function-declaration -Werror=incompatible-pointer-types -Werror=init-self -Werror=int-conversion -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=missing-include-dirs -Werror=nonnull -Werror=overflow -Werror=pointer-arith -Werror=pointer-to-int-cast -Werror=redundant-decls -Werror=return-type -Werror=sequence-point -Werror=shadow -Werror=strict-prototypes -Werror=trigraphs -Werror=undef -Werror=write-strings -Wformat-nonliteral -Werror=format-security -Werror=format=2 -Wignored-qualifiers -Wimplicit-function-declaration -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wnested-externs -Wno-missing-field-initializers -Wno-sign-compare -Wno-unused-parameter -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused -fno-strict-aliasing -fstack-protector-strong -DHAVE_CONFIG_H -D_GNU_SOURCE -DIDE_COMPILATION -march=corei7 -B/home/lantw44/.local/bin -g3 -Og -gz -fdebug-macro -fPIC -pthread -D_THREAD_SAFE -Wmissing-declarations -fvisibility=hidden -DIDE_IO_COMPILATION -MD -MQ 'src/libide/io/613a1f2@@ide-io-3.33@sta/ide-gfile.c.o' -MF 'src/libide/io/613a1f2@@ide-io-3.33@sta/ide-gfile.c.o.d' -o 'src/libide/io/613a1f2@@ide-io-3.33@sta/ide-gfile.c.o' -c ../../source/gnome-builder/src/libide/io/ide-gfile.c
../../source/gnome-builder/src/libide/io/ide-gfile.c:376:7: error: function definition is not allowed here
      {
      ^
../../source/gnome-builder/src/libide/io/ide-gfile.c:381:33: error: use of undeclared identifier 'delayed_run'
      g_timeout_add_seconds (1, delayed_run, g_object_ref (task));
                                ^
2 errors generated.

Initializing a struct with {0} sometimes triggers -Wmissing-braces.

[22/963] Compiling C object 'src/libide/vcs/6028cfa@@ide-vcs-3.33@sta/ide-vcs-cloner.c.o'.
FAILED: src/libide/vcs/6028cfa@@ide-vcs-3.33@sta/ide-vcs-cloner.c.o 
clang -B/home/lantw44/.local/bin -Isrc/libide/vcs/6028cfa@@ide-vcs-3.33@sta -Isrc/libide/vcs -I../../source/gnome-builder/src/libide/vcs -Isrc/libide/core -I../../source/gnome-builder/src/libide/core -Isrc/libide/io -I../../source/gnome-builder/src/libide/io -Isrc/libide/threading -I../../source/gnome-builder/src/libide/threading -I/home/lantw44/gnome/devinstall/include/glib-2.0 -I/home/lantw44/gnome/devinstall/lib/glib-2.0/include -I/usr/local/lib/libffi-3.2.1/include -I/home/lantw44/gnome/devinstall/include/gtk-3.0 -I/home/lantw44/gnome/devinstall/include/pango-1.0 -I/usr/local/include/freetype2 -I/usr/local/include/libpng16 -I/usr/local/include/harfbuzz -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/home/lantw44/gnome/devinstall/include/harfbuzz -I/home/lantw44/gnome/devinstall/include/fribidi -I/home/lantw44/gnome/devinstall/include/cairo -I/home/lantw44/gnome/devinstall/include/pixman-1 -I/usr/local/include/libdrm -I/home/lantw44/gnome/devinstall/include/gdk-pixbuf-2.0 -I/home/lantw44/gnome/devinstall/include/gio-unix-2.0 -I/home/lantw44/gnome/devinstall/include/atk-1.0 -I/home/lantw44/gnome/devinstall/include/at-spi2-atk/2.0 -I/home/lantw44/gnome/devinstall/include/at-spi-2.0 -I/usr/local/include/dbus-1.0 -I/usr/local/lib/dbus-1.0/include -I/home/lantw44/gnome/devinstall/include/libdazzle-1.0 -I/home/lantw44/gnome/devinstall/include/libpeas-1.0 -I/home/lantw44/gnome/devinstall/include/gobject-introspection-1.0 -I/home/lantw44/gnome/build/gnome-builder -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -Wcast-align -Wdeclaration-after-statement -Werror=address -Werror=array-bounds -Werror=empty-body -Werror=implicit -Werror=implicit-function-declaration -Werror=incompatible-pointer-types -Werror=init-self -Werror=int-conversion -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=missing-include-dirs -Werror=nonnull -Werror=overflow -Werror=pointer-arith -Werror=pointer-to-int-cast -Werror=redundant-decls -Werror=return-type -Werror=sequence-point -Werror=shadow -Werror=strict-prototypes -Werror=trigraphs -Werror=undef -Werror=write-strings -Wformat-nonliteral -Werror=format-security -Werror=format=2 -Wignored-qualifiers -Wimplicit-function-declaration -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wnested-externs -Wno-missing-field-initializers -Wno-sign-compare -Wno-unused-parameter -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused -fno-strict-aliasing -fstack-protector-strong -DHAVE_CONFIG_H -D_GNU_SOURCE -DIDE_COMPILATION -march=corei7 -B/home/lantw44/.local/bin -g3 -Og -gz -fdebug-macro -fPIC -pthread -D_THREAD_SAFE -Wmissing-declarations -fvisibility=hidden -DIDE_VCS_COMPILATION -MD -MQ 'src/libide/vcs/6028cfa@@ide-vcs-3.33@sta/ide-vcs-cloner.c.o' -MF 'src/libide/vcs/6028cfa@@ide-vcs-3.33@sta/ide-vcs-cloner.c.o.d' -o 'src/libide/vcs/6028cfa@@ide-vcs-3.33@sta/ide-vcs-cloner.c.o' -c ../../source/gnome-builder/src/libide/vcs/ide-vcs-cloner.c
In file included from ../../source/gnome-builder/src/libide/vcs/ide-vcs-cloner.c:28:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas.h:24:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-autocleanups.h:26:
/home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-engine.h:116:52: warning: 'GParameter' is deprecated [-Wdeprecated-declarations]
                                                   GParameter      *parameters);
                                                   ^
/home/lantw44/gnome/devinstall/include/glib-2.0/gobject/gparam.h:194:39: note: 'GParameter' has been explicitly marked deprecated here
typedef struct _GParameter      GParameter GLIB_DEPRECATED_TYPE_IN_2_54;
                                           ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gversionmacros.h:770:49: note: expanded from macro 'GLIB_DEPRECATED_TYPE_IN_2_54'
# define GLIB_DEPRECATED_TYPE_IN_2_54           GLIB_DEPRECATED_TYPE
                                                ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:1013:30: note: expanded from macro 'GLIB_DEPRECATED_TYPE'
#define GLIB_DEPRECATED_TYPE G_DEPRECATED
                             ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:942:37: note: expanded from macro 'G_DEPRECATED'
#define G_DEPRECATED __attribute__((__deprecated__))
                                    ^
In file included from ../../source/gnome-builder/src/libide/vcs/ide-vcs-cloner.c:28:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas.h:24:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-autocleanups.h:29:
/home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-extension-set.h:139:52: warning: 'GParameter' is deprecated [-Wdeprecated-declarations]
                                                   GParameter       *parameters);
                                                   ^
/home/lantw44/gnome/devinstall/include/glib-2.0/gobject/gparam.h:194:39: note: 'GParameter' has been explicitly marked deprecated here
typedef struct _GParameter      GParameter GLIB_DEPRECATED_TYPE_IN_2_54;
                                           ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gversionmacros.h:770:49: note: expanded from macro 'GLIB_DEPRECATED_TYPE_IN_2_54'
# define GLIB_DEPRECATED_TYPE_IN_2_54           GLIB_DEPRECATED_TYPE
                                                ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:1013:30: note: expanded from macro 'GLIB_DEPRECATED_TYPE'
#define GLIB_DEPRECATED_TYPE G_DEPRECATED
                             ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:942:37: note: expanded from macro 'G_DEPRECATED'
#define G_DEPRECATED __attribute__((__deprecated__))
                                    ^
In file included from ../../source/gnome-builder/src/libide/vcs/ide-vcs-cloner.c:28:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas.h:24:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-autocleanups.h:30:
/home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-object-module.h:58:40: warning: 'GParameter' is deprecated [-Wdeprecated-declarations]
                                       GParameter    *parameters,
                                       ^
/home/lantw44/gnome/devinstall/include/glib-2.0/gobject/gparam.h:194:39: note: 'GParameter' has been explicitly marked deprecated here
typedef struct _GParameter      GParameter GLIB_DEPRECATED_TYPE_IN_2_54;
                                           ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gversionmacros.h:770:49: note: expanded from macro 'GLIB_DEPRECATED_TYPE_IN_2_54'
# define GLIB_DEPRECATED_TYPE_IN_2_54           GLIB_DEPRECATED_TYPE
                                                ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:1013:30: note: expanded from macro 'GLIB_DEPRECATED_TYPE'
#define GLIB_DEPRECATED_TYPE G_DEPRECATED
                             ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:942:37: note: expanded from macro 'G_DEPRECATED'
#define G_DEPRECATED __attribute__((__deprecated__))
                                    ^
In file included from ../../source/gnome-builder/src/libide/vcs/ide-vcs-cloner.c:28:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas.h:24:
In file included from /home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-autocleanups.h:30:
/home/lantw44/gnome/devinstall/include/libpeas-1.0/libpeas/peas-object-module.h:100:64: warning: 'GParameter' is deprecated [-Wdeprecated-declarations]
                                                               GParameter       *parameters);
                                                               ^
/home/lantw44/gnome/devinstall/include/glib-2.0/gobject/gparam.h:194:39: note: 'GParameter' has been explicitly marked deprecated here
typedef struct _GParameter      GParameter GLIB_DEPRECATED_TYPE_IN_2_54;
                                           ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gversionmacros.h:770:49: note: expanded from macro 'GLIB_DEPRECATED_TYPE_IN_2_54'
# define GLIB_DEPRECATED_TYPE_IN_2_54           GLIB_DEPRECATED_TYPE
                                                ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:1013:30: note: expanded from macro 'GLIB_DEPRECATED_TYPE'
#define GLIB_DEPRECATED_TYPE G_DEPRECATED
                             ^
/home/lantw44/gnome/devinstall/include/glib-2.0/glib/gmacros.h:942:37: note: expanded from macro 'G_DEPRECATED'
#define G_DEPRECATED __attribute__((__deprecated__))
                                    ^
../../source/gnome-builder/src/libide/vcs/ide-vcs-cloner.c:173:21: warning: unused variable 'error' [-Wunused-variable]
  g_autoptr(GError) error = NULL;
                    ^
../../source/gnome-builder/src/libide/vcs/ide-vcs-cloner.c:273:24: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces]
  CloneSimple state = {0};
                       ^
                       {}
5 warnings and 1 error generated.

This merge request doesn't fix all problems. Compiing with clang is still blocked by #980 (closed).

Merge request reports