This is a combination of 7 upstream commits: build: Allow building with vala 0.46 and drop support for 0.30 and earlier language-support-vala: Support for vala 0.48 API build: Allow building with vala 0.48 build: Allow building with vala 0.50 build: Allow building with vala 0.50 and 0.52 build: Allow building with vala 0.54 build: Allow building with vala 0.56 --- configure.ac | 4 +-- plugins/language-support-vala/plugin.vala | 37 ++++++++++++++++++----- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/configure.ac b/configure.ac index 3b4c99504..4fbad5392 100644 --- a/configure.ac +++ b/configure.ac @@ -338,7 +338,7 @@ if test "$user_disabled_vala" = 1; then else AC_MSG_RESULT(no) AC_MSG_CHECKING(if libvala is available) - m4_foreach([VERSION], [[0.44], [0.42], [0.40], [0.38], [0.36], [0.34], [0.32], [0.30], [0.28], [0.26], [0.24], [0.22], [0.20], [0.18]], + m4_foreach_w([VERSION], [0.56 0.54 0.52 0.50 0.48 0.46 0.44 0.42 0.40 0.38 0.36 0.34 0.32], [PKG_CHECK_EXISTS([ libvala-VERSION ], [ valaver="-VERSION" ]) ]) @@ -350,7 +350,7 @@ else else AC_MSG_RESULT(no) enable_vala="no" - VALA_REQUIRED=0.18.0 + VALA_REQUIRED=0.32.0 fi AC_SUBST(LIBVALA) fi diff --git a/plugins/language-support-vala/plugin.vala b/plugins/language-support-vala/plugin.vala index 13d35fec4..d94634c7f 100644 --- a/plugins/language-support-vala/plugin.vala +++ b/plugins/language-support-vala/plugin.vala @@ -78,7 +78,11 @@ public class ValaPlugin : Plugin, IAnjuta.Preferences { void init_context () { context = new Vala.CodeContext(); +#if VALA_0_50 + context.set_target_profile (Vala.Profile.GOBJECT); +#else context.profile = Vala.Profile.GOBJECT; +#endif context.report = report; report.clear_error_indicators (); @@ -414,11 +418,19 @@ public class ValaPlugin : Plugin, IAnjuta.Preferences { builder.append_printf ("%s sender", widget.get_full_name ()); foreach (var param in sig.get_parameters ()) { +#if VALA_0_48 + builder.append_printf (", %s %s", param.variable_type.type_symbol.get_full_name (), param.name); +#else builder.append_printf (", %s %s", param.variable_type.data_type.get_full_name (), param.name); +#endif } } else { foreach (var param in sig.get_parameters ()) { +#if VALA_0_48 + builder.append_printf ("%s %s, ", param.variable_type.type_symbol.get_full_name (), param.name); +#else builder.append_printf ("%s %s, ", param.variable_type.data_type.get_full_name (), param.name); +#endif } builder.append_printf ("%s sender", widget.get_full_name ()); @@ -563,6 +575,15 @@ public class ValaPlugin : Plugin, IAnjuta.Preferences { } return matching_symbols; } + + inline List symbol_lookup_inherited_for_type (Vala.DataType data_type, string name, bool prefix_match, bool invocation = false) { +#if VALA_0_48 + return symbol_lookup_inherited (data_type.type_symbol, name, prefix_match, invocation); +#else + return symbol_lookup_inherited (data_type.data_type, name, prefix_match, invocation); +#endif + } + List symbol_lookup_inherited (Vala.Symbol? sym, string name, bool prefix_match, bool invocation = false) { List result = null; @@ -580,32 +601,32 @@ public class ValaPlugin : Plugin, IAnjuta.Preferences { } if (invocation && sym is Vala.Method) { var func = (Vala.Method) sym; - result.concat (symbol_lookup_inherited (func.return_type.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (func.return_type, name, prefix_match)); } else if (sym is Vala.Class) { var cl = (Vala.Class) sym; foreach (var base_type in cl.get_base_types ()) { - result.concat (symbol_lookup_inherited (base_type.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (base_type, name, prefix_match)); } } else if (sym is Vala.Struct) { var st = (Vala.Struct) sym; - result.concat (symbol_lookup_inherited (st.base_type.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (st.base_type, name, prefix_match)); } else if (sym is Vala.Interface) { var iface = (Vala.Interface) sym; foreach (var prerequisite in iface.get_prerequisites ()) { - result.concat (symbol_lookup_inherited (prerequisite.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (prerequisite, name, prefix_match)); } } else if (sym is Vala.LocalVariable) { var variable = (Vala.LocalVariable) sym; - result.concat (symbol_lookup_inherited (variable.variable_type.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (variable.variable_type, name, prefix_match)); } else if (sym is Vala.Field) { var field = (Vala.Field) sym; - result.concat (symbol_lookup_inherited (field.variable_type.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (field.variable_type, name, prefix_match)); } else if (sym is Vala.Property) { var prop = (Vala.Property) sym; - result.concat (symbol_lookup_inherited (prop.property_type.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (prop.property_type, name, prefix_match)); } else if (sym is Vala.Parameter) { var fp = (Vala.Parameter) sym; - result.concat (symbol_lookup_inherited (fp.variable_type.data_type, name, prefix_match)); + result.concat (symbol_lookup_inherited_for_type (fp.variable_type, name, prefix_match)); } return result; -- 2.35.1