Hello, I have some code that compiled ok with 0.13.1 but which doesn't compile with 0.13.2 or 0.13.3 I also noted that new .c files are bigger, with many more temp vars My code is a bit complex, bindings of some libs for an e-ink device. In fact I'm using an ARM cross-compiler from a x86_64 linux machine. This is how I run the vala: $ valac --vapidir=../irex --pkg=gtk+-2.0 --pkg=gdk-x11-2.0 --pkg=gconf-2.0 --pkg=liberipc --pkg=posix --pkg=sqlite3 --pkg=MyUtils --cc=arm-poky-linux-gnueabi-gcc -X -mcpu=arm1136jf-s -X -mtune=arm1136jf-s -X -O3 --enable-experimental --save-temps navigator.vala ../irex/irex.vala ../irex/irexplus.vala -o navigator and the errors: [...] /home/devel/mine/ereader/dr-vala/navigator/irex.c: In function ‘irex_ipc_get_battery_state’: /home/devel/mine/ereader/dr-vala/navigator/irex.c:654: error: ‘liberipcArgString’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:654: error: (Each undeclared identifier is reported only once /home/devel/mine/ereader/dr-vala/navigator/irex.c:654: error: for each function it appears in.) /home/devel/mine/ereader/dr-vala/navigator/irex.c:654: error: expected ‘;’ before ‘_tmp4_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:658: error: expected ‘;’ before ‘_tmp8_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:665: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:667: error: ‘_tmp4_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:670: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:672: error: ‘_tmp8_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c: In function ‘irex_ipc_on_menu_item’: /home/devel/mine/ereader/dr-vala/navigator/irex.c:715: error: ‘liberipcArgString’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:715: error: expected ‘;’ before ‘_tmp3_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:722: error: expected ‘;’ before ‘_tmp9_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:729: error: expected ‘;’ before ‘_tmp15_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:736: error: expected ‘;’ before ‘_tmp21_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:745: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:747: error: ‘_tmp3_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:752: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:754: error: ‘_tmp9_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:759: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:761: error: ‘_tmp15_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:766: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:768: error: ‘_tmp21_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c: In function ‘irex_ipc_on_window_activated’: /home/devel/mine/ereader/dr-vala/navigator/irex.c:785: error: ‘liberipcArgString’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:785: error: expected ‘;’ before ‘_tmp3_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:796: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:798: error: ‘_tmp3_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c: In function ‘irex_ipc_on_window_deactivated’: /home/devel/mine/ereader/dr-vala/navigator/irex.c:814: error: ‘liberipcArgString’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:814: error: expected ‘;’ before ‘_tmp3_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:825: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:827: error: ‘_tmp3_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c: In function ‘irex_ipc_on_file_open’: /home/devel/mine/ereader/dr-vala/navigator/irex.c:843: error: ‘liberipcArgString’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:843: error: expected ‘;’ before ‘_tmp3_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:861: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:863: error: ‘_tmp3_’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c: In function ‘irex_ipc_on_file_close’: /home/devel/mine/ereader/dr-vala/navigator/irex.c:889: error: ‘liberipcArgString’ undeclared (first use in this function) /home/devel/mine/ereader/dr-vala/navigator/irex.c:889: error: expected ‘;’ before ‘_tmp3_’ /home/devel/mine/ereader/dr-vala/navigator/irex.c:902: warning: assignment discards qualifiers from pointer target type /home/devel/mine/ereader/dr-vala/navigator/irex.c:904: error: ‘_tmp3_’ undeclared (first use in this function) [...] error: cc exited with status 256 Compilation failed: 1 error(s), 11 warning(s) make: *** [navigator] Error 1 I've attached library .h files, the .vapi file, the .vala file using the lib, and 3 of the generated C files (using vala versions 0.13.1, 0.13.2. and 0.13.3. Note 0.13.2. and 0.13.3 generate same .c file). The C generated function for the first error: VALA 0.13.1 C code: =============== void irex_ipc_get_battery_state (irexIPC* self, gint* level, gchar** state) { gint _level = 0; gchar* _state = NULL; eripc_event_info_t* info = NULL; eripc_event_info_t* _tmp0_ = NULL; gchar* _tmp1_; g_return_if_fail (self != NULL); eripc_send_varargs_and_wait (self->context, &_tmp0_, ERIPC_BUS_SESSION, "com.irexnet.sysd", "sysGetBatteryState", ERIPC_TYPE_INVALID, NULL); info = _tmp0_; _level = (gint) info->args[0].value.s; _tmp1_ = g_strdup ((const gchar*) info->args[1].value.s); _g_free0 (_state); _state = _tmp1_; if (level) { *level = _level; } if (state) { *state = _state; } else { _g_free0 (_state); } } VALA 0.13.2 C code: =============== void irex_ipc_get_battery_state (irexIPC* self, gint* level, gchar** state) { gint _vala_level = 0; gchar* _vala_state = NULL; eripc_event_info_t* info = NULL; eripc_context_t* _tmp0_; eripc_event_info_t* _tmp1_ = NULL; eripc_arg_t* _tmp2_; eripc_arg_t _tmp3_; liberipcArgString _tmp4_; gchar* _tmp5_; eripc_arg_t* _tmp6_; eripc_arg_t _tmp7_; liberipcArgString _tmp8_; gchar* _tmp9_; gchar* _tmp10_; g_return_if_fail (self != NULL); _tmp0_ = self->context; eripc_send_varargs_and_wait (_tmp0_, &_tmp1_, ERIPC_BUS_SESSION, "com.irexnet.sysd", "sysGetBatteryState", ERIPC_TYPE_INVALID, NULL); info = _tmp1_; _tmp2_ = info->args; _tmp3_ = _tmp2_[0]; _tmp4_ = _tmp3_.value; _tmp5_ = _tmp4_.s; _vala_level = (gint) _tmp5_; _tmp6_ = info->args; _tmp7_ = _tmp6_[1]; _tmp8_ = _tmp7_.value; _tmp9_ = _tmp8_.s; _tmp10_ = g_strdup ((const gchar*) _tmp9_); _g_free0 (_vala_state); _vala_state = _tmp10_; if (level) { *level = _vala_level; } if (state) { *state = _vala_state; } else { _g_free0 (_vala_state); } } ArgString is defined in liberipc.vapi but vala 0.13.1 didn't use it, 0.13.2 does use it and many temp variables. Any idea? Thanks, Iñigo Serna
Attachment:
vala-errors.tar.gz
Description: GNU Zip compressed data