objects/bug615830-2.test \
objects/bug766739.vala \
objects/bug778632.vala \
+ objects/bug779038-1.test \
+ objects/bug779038-2.test \
+ objects/bug779038-3.test \
objects/bug779219.vala \
errors/errors.vala \
errors/bug567181.vala \
--- /dev/null
+Invalid Code
+
+public interface Foo : Object {
+ public abstract string foo { get; set; }
+}
+
+public interface Bar : Object {
+ public abstract string foo { set; }
+}
+
+public class Baz : Object, Foo {
+ public string foo { get; set; }
+}
+
+public class Manam : Baz, Bar {
+}
+
+void main () {
+}
--- /dev/null
+Invalid Code
+
+public interface Foo : Object {
+ public abstract int foo { get; set; }
+}
+
+public interface Bar : Object {
+ public abstract string foo { get; set; }
+}
+
+public class Baz : Object, Foo {
+ public int foo { get; set; }
+}
+
+public class Manam : Baz, Bar {
+}
+
+void main () {
+}
--- /dev/null
+Invalid Code
+
+public interface Foo : Object {
+ public abstract string foo { get; construct; }
+}
+
+public interface Bar : Object {
+ public abstract string foo { get; set; }
+}
+
+public class Baz : Object, Foo {
+ public string foo { get; construct; }
+}
+
+public class Manam : Baz, Bar {
+}
+
+void main () {
+}
base_class = base_class.base_class;
}
if (sym is Property) {
+ var base_prop = (Property) sym;
+ string? invalid_match = null;
+ // No check at all for "new" classified properties, really?
+ if (!base_prop.hides && !base_prop.compatible (prop, out invalid_match)) {
+ error = true;
+ Report.error (source_reference, "Type and/or accessors of inherited properties `%s' and `%s' do not match: %s.".printf (prop.get_full_name (), base_prop.get_full_name (), invalid_match));
+ }
// property is used as interface implementation, so it is not unused
sym.version.check (source_reference);
sym.used = true;