From: Rico Tzschichholz Date: Mon, 24 Apr 2023 08:00:44 +0000 (+0200) Subject: vala: Recursively check for Version.deprecated attribute from bottom to top X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b92ace4fff15838eb2a96ade482c80fd3730013;p=thirdparty%2Fvala.git vala: Recursively check for Version.deprecated attribute from bottom to top --- diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala index 08b5b384e..4360b4e60 100644 --- a/vala/valamemberaccess.vala +++ b/vala/valamemberaccess.vala @@ -921,7 +921,9 @@ public class Vala.MemberAccess : Expression { if (parent != member) { member.used = true; } - member.version.check (context, source_reference); + if (!(parent_node is MemberAccess)) { + member.version.check (context, source_reference); + } // FIXME Code duplication with MemberInitializer.check() if (access == SymbolAccessibility.PROTECTED && member.parent_symbol is TypeSymbol) { diff --git a/vala/valaversionattribute.vala b/vala/valaversionattribute.vala index aca09768e..c7a63373b 100644 --- a/vala/valaversionattribute.vala +++ b/vala/valaversionattribute.vala @@ -50,12 +50,21 @@ public class Vala.VersionAttribute { */ public bool deprecated { get { - if (_deprecated == null) { + if (_deprecated != null) { + return _deprecated; + } + if (symbol.has_attribute ("Version") + // [Deprecated] is deprecated + || symbol.has_attribute ("Deprecated")) { _deprecated = symbol.get_attribute_bool ("Version", "deprecated", false) || symbol.has_attribute_argument ("Version", "deprecated_since") || symbol.has_attribute_argument ("Version", "replacement") // [Deprecated] is deprecated || symbol.has_attribute ("Deprecated"); + } else if (symbol.parent_symbol != null) { + _deprecated = symbol.parent_symbol.version.deprecated; + } else { + _deprecated = false; } return _deprecated; }