[vala/wip/abi: 2/2] codegen: Add abi-stability path for interfaces
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/abi: 2/2] codegen: Add abi-stability path for interfaces
- Date: Thu, 18 Jan 2018 12:13:56 +0000 (UTC)
commit 7c656840ffbaa73dc229f1331d570f992d7ce165
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Jan 18 13:06:39 2018 +0100
codegen: Add abi-stability path for interfaces
https://bugzilla.gnome.org/show_bug.cgi?id=789069
vala/valainterface.vala | 56 +++++++++++++++++++++++++++++++++-------------
1 files changed, 40 insertions(+), 16 deletions(-)
---
diff --git a/vala/valainterface.vala b/vala/valainterface.vala
index 8e3229c..72d3454 100644
--- a/vala/valainterface.vala
+++ b/vala/valainterface.vala
@@ -261,13 +261,6 @@ public class Vala.Interface : ObjectTypeSymbol {
en.check (context);
}
- foreach (Method m in get_methods ()) {
- m.check (context);
- if (m.is_virtual || m.is_abstract) {
- virtuals.add (m);
- }
- }
-
foreach (Field f in get_fields ()) {
f.check (context);
}
@@ -276,17 +269,48 @@ public class Vala.Interface : ObjectTypeSymbol {
c.check (context);
}
- foreach (Signal sig in get_signals ()) {
- sig.check (context);
- if (sig.is_virtual) {
- virtuals.add (sig);
+ if (context.abi_stability) {
+ foreach (Symbol s in get_members ()) {
+ if (s is Method) {
+ var m = (Method) s;
+ m.check (context);
+ if (m.is_virtual || m.is_abstract) {
+ virtuals.add (m);
+ }
+ } else if (s is Signal) {
+ var sig = (Signal) s;
+ sig.check (context);
+ if (sig.is_virtual) {
+ virtuals.add (sig);
+ }
+ } else if (s is Property) {
+ var prop = (Property) s;
+ prop.check (context);
+ if (prop.is_virtual || prop.is_abstract) {
+ virtuals.add (prop);
+ }
+ }
+ }
+ } else {
+ foreach (Method m in get_methods ()) {
+ m.check (context);
+ if (m.is_virtual || m.is_abstract) {
+ virtuals.add (m);
+ }
}
- }
- foreach (Property prop in get_properties ()) {
- prop.check (context);
- if (prop.is_virtual || prop.is_abstract) {
- virtuals.add (prop);
+ foreach (Signal sig in get_signals ()) {
+ sig.check (context);
+ if (sig.is_virtual) {
+ virtuals.add (sig);
+ }
+ }
+
+ foreach (Property prop in get_properties ()) {
+ prop.check (context);
+ if (prop.is_virtual || prop.is_abstract) {
+ virtuals.add (prop);
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]