objects/class_only.vala \
objects/class-destroysinstance.vala \
objects/class-inner-types.vala \
+ objects/class-new-no-override.vala \
objects/classes.vala \
objects/classes-interfaces.vala \
objects/classes-interfaces-virtuals.vala \
--- /dev/null
+interface IFoo : Object {
+ public virtual void foo (int i) {
+ assert (i == 42);
+ }
+}
+
+class Bar : Object, IFoo {
+ public new string foo () {
+ return "bar";
+ }
+}
+
+void main () {
+ var bar = new Bar ();
+ assert (bar.foo () == "bar");
+ ((IFoo) bar).foo (42);
+}
_base_interface_method = base_match;
copy_attribute_double (base_match, "CCode", "instance_pos");
return;
- } else if (invalid_base_match != null) {
+ } else if (!hides && invalid_base_match != null) {
error = true;
var base_method_type = new MethodType (invalid_base_match);
Report.error (source_reference, "overriding method `%s' is incompatible with base method `%s': %s.".printf (get_full_name (), base_method_type.to_prototype_string (), invalid_error));