From: Rico Tzschichholz Date: Tue, 17 Mar 2020 14:26:36 +0000 (+0100) Subject: vala: Improve copy of required attributes from delegate to lamdba method X-Git-Tag: 0.48.2~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27b727bcbd9695e9f3080ccbcfad785620840fb9;p=thirdparty%2Fvala.git vala: Improve copy of required attributes from delegate to lamdba method --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 6d021ddf3..e04ad34b5 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -5735,11 +5735,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { public override void visit_lambda_expression (LambdaExpression lambda) { var delegate_type = (DelegateType) lambda.target_type; - var d = delegate_type.delegate_symbol; - - lambda.method.set_attribute_bool ("CCode", "array_length", get_ccode_array_length (d)); - lambda.method.set_attribute_bool ("CCode", "array_null_terminated", get_ccode_array_null_terminated (d)); - lambda.method.set_attribute_string ("CCode", "array_length_type", get_ccode_array_length_type (d)); lambda.accept_children (this); diff --git a/vala/valalambdaexpression.vala b/vala/valalambdaexpression.vala index 314bfa7ce..7588cea23 100644 --- a/vala/valalambdaexpression.vala +++ b/vala/valalambdaexpression.vala @@ -137,6 +137,14 @@ public class Vala.LambdaExpression : Expression { method.used = true; method.version.check (source_reference); + if (return_type is ArrayType) { + method.copy_attribute_bool (cb, "CCode", "array_length"); + method.copy_attribute_bool (cb, "CCode", "array_null_terminated"); + method.copy_attribute_string (cb, "CCode", "array_length_type"); + } else if (return_type is DelegateType) { + method.copy_attribute_bool (cb, "CCode", "delegate_target"); + } + if (!cb.has_target || !context.analyzer.is_in_instance_method ()) { method.binding = MemberBinding.STATIC; } else {