From ea92f8d6b5d8d627954295e14ccec7b793facdc8 Mon Sep 17 00:00:00 2001 From: Florian Brosch Date: Thu, 10 Jul 2014 20:35:22 +0200 Subject: Introduce [Version (...)] Parameters: since: string, version number experimental: bool (was: [Experimental]) experimental_until: string, version number deprecated_since: string, version number (was: [Deprecated (since="")]) replacement: string, symbol name (was: [Deprecated (replacement="")]) deprecated: bool (was: [Deprecated]) Used symbols labeled with [Version (since = "")] are checked against the locally installed package version. Use --disable-since-check to avoid this behaviour. Fixes bug 678912. --- codegen/valaccodebasemodule.vala | 6 +++--- codegen/valaccodedelegatemodule.vala | 2 +- codegen/valaccodemethodmodule.vala | 2 +- codegen/valaccodestructmodule.vala | 4 ++-- codegen/valagirwriter.vala | 11 +++++++---- 5 files changed, 14 insertions(+), 11 deletions(-) (limited to 'codegen') diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 6f4fc6c05..0f79235bd 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -788,7 +788,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var cenum = new CCodeEnum (get_ccode_name (en)); - cenum.deprecated = en.deprecated; + cenum.deprecated = en.version.deprecated; int flag_shift = 0; foreach (EnumValue ev in en.get_values ()) { @@ -803,7 +803,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { ev.value.emit (this); c_ev = new CCodeEnumValue (get_ccode_name (ev), get_cvalue (ev.value)); } - c_ev.deprecated = ev.deprecated; + c_ev.deprecated = ev.version.deprecated; cenum.add_value (c_ev); } @@ -1003,7 +1003,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } else { cdecl.modifiers = CCodeModifiers.EXTERN; } - if (f.deprecated) { + if (f.version.deprecated) { cdecl.modifiers |= CCodeModifiers.DEPRECATED; } decl_space.add_type_member_declaration (cdecl); diff --git a/codegen/valaccodedelegatemodule.vala b/codegen/valaccodedelegatemodule.vala index 9eb57ed34..f97420f43 100644 --- a/codegen/valaccodedelegatemodule.vala +++ b/codegen/valaccodedelegatemodule.vala @@ -116,7 +116,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule { } var ctypedef = new CCodeTypeDefinition (return_type_cname, cfundecl); - ctypedef.deprecated = d.deprecated; + ctypedef.deprecated = d.version.deprecated; decl_space.add_type_definition (ctypedef); } diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index 710bc1151..d147eb18b 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -169,7 +169,7 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { function.modifiers |= CCodeModifiers.INTERNAL; } - if (m.deprecated) { + if (m.version.deprecated) { function.modifiers |= CCodeModifiers.DEPRECATED; } diff --git a/codegen/valaccodestructmodule.vala b/codegen/valaccodestructmodule.vala index fe2a7c2a7..3f226d55b 100644 --- a/codegen/valaccodestructmodule.vala +++ b/codegen/valaccodestructmodule.vala @@ -64,7 +64,7 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule { } var instance_struct = new CCodeStruct ("_%s".printf (get_ccode_name (st))); - instance_struct.deprecated = st.deprecated; + instance_struct.deprecated = st.version.deprecated; foreach (Field f in st.get_fields ()) { string field_ctype = get_ccode_name (f.variable_type); @@ -77,7 +77,7 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule { var suffix = get_ccode_declarator_suffix (f.variable_type); if (suffix != null) { - suffix.deprecated = f.deprecated; + suffix.deprecated = f.version.deprecated; } instance_struct.add_field (field_ctype, get_ccode_name (f), suffix); diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index a69e12a93..01389cfab 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -282,12 +282,15 @@ public class Vala.GIRWriter : CodeVisitor { } private void write_symbol_attributes (Symbol symbol) { - if (symbol.deprecated) { - buffer.append_printf (" deprecated=\"%s\"", (symbol.replacement == null) ? "" : "Use %s".printf (symbol.replacement)); - if (symbol.deprecated_since != null) { - buffer.append_printf (" deprecated-version=\"%s\"", symbol.deprecated_since); + if (symbol.version.deprecated) { + buffer.append_printf (" deprecated=\"%s\"", (symbol.version.replacement == null) ? "" : "Use %s".printf (symbol.version.replacement)); + if (symbol.version.deprecated_since != null) { + buffer.append_printf (" deprecated-version=\"%s\"", symbol.version.deprecated_since); } } + if (symbol.version.since != null) { + buffer.append_printf (" version=\"%s\"", symbol.version.since); + } } public override void visit_class (Class cl) { -- cgit v1.2.1