objects/interface-generics.vala \
objects/interface-property-base-access.vala \
objects/interface-property-delegate.vala \
+ objects/interface-property-override.vala \
objects/interface-virtual-override.vala \
objects/methods.vala \
objects/paramspec.vala \
--- /dev/null
+interface IFoo {
+ public virtual int bar {
+ get {
+ assert_not_reached ();
+ }
+ set {
+ assert_not_reached ();
+ }
+ }
+}
+
+class Foo : IFoo {
+ public override int bar {
+ get {
+ return 42;
+ }
+ set {
+ }
+ }
+}
+
+interface IBar : Object {
+ public virtual int foo {
+ get {
+ assert_not_reached ();
+ }
+ set {
+ assert_not_reached ();
+ }
+ }
+}
+
+class Bar : Object, IBar {
+ public override int foo {
+ get {
+ return 23;
+ }
+ set {
+ }
+ }
+}
+
+void main () {
+ {
+ var foo = new Foo ();
+ foo.bar = 0;
+ assert (foo.bar == 42);
+ }
+ {
+ var bar = new Bar ();
+ bar.foo = 0;
+ assert (bar.foo == 23);
+ }
+}
Report.error (source_reference, "property type `%s' is less accessible than property `%s'".printf (property_type.to_string (), get_full_name ()));
}
- if (overrides && base_property == null) {
+ if (overrides && base_property == null && base_interface_property == null) {
Report.error (source_reference, "%s: no suitable property found to override".printf (get_full_name ()));
}