[vala/wip/gtimezone: 1/2] codegen: Emit external creation methods in bindings
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/gtimezone: 1/2] codegen: Emit external creation methods in bindings
- Date: Wed, 7 Apr 2021 16:32:29 +0000 (UTC)
commit b77caccca5c8399a58536ba1eece97324277feb8
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Wed Apr 7 18:14:16 2021 +0200
codegen: Emit external creation methods in bindings
These must be chained up to an existing constructor of the parent symbol
codegen/valaccodebasemodule.vala | 12 ++++++++++++
codegen/valaccodemethodmodule.vala | 2 +-
2 files changed, 13 insertions(+), 1 deletion(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index fc25b327f..c52c5da0a 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -4938,6 +4938,18 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
generate_method_declaration (m, cfile);
+ if (m is CreationMethod && !m.external && m.external_package) {
+ unowned CreationMethod cm = (CreationMethod) m;
+ if (!cm.chain_up) {
+ Report.error (cm.source_reference, "internal: Creation method
implementation in binding must be chained up");
+ }
+ // internal VAPI creation methods
+ // only add them once per source file
+ if (add_generated_external_symbol (cm)) {
+ visit_creation_method (cm);
+ }
+ }
+
unowned Class? cl = expr.type_reference.type_symbol as Class;
if (!get_ccode_has_new_function (m)) {
diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala
index 944d6a00a..deb9dba65 100644
--- a/codegen/valaccodemethodmodule.vala
+++ b/codegen/valaccodemethodmodule.vala
@@ -1241,7 +1241,7 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
visit_method (m);
ellipses_to_valist = false;
- if (m.source_type == SourceFileType.FAST) {
+ if ((!m.external && m.external_package) || m.source_type == SourceFileType.FAST) {
pop_line ();
return;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]