Only report a warning for external creation methods to reduce the initial
fallout.
Fixes https://gitlab.gnome.org/GNOME/vala/issues/766
objects/classes-implicit-implementation.vala \
objects/compact-class.vala \
objects/compact-class-destructor.vala \
+ objects/constructor-abstract-public.test \
objects/constructor-variadic.test \
objects/constructors.vala \
objects/destructors.vala \
--- /dev/null
+Invalid Code
+
+abstract class Foo {
+ public Foo () {
+ }
+}
+
+void main () {
+}
m.error = true;
return;
}
+ if (is_abstract && cm.access == SymbolAccessibility.PUBLIC) {
+ //TODO Report an error for external constructors too
+ if (external_package) {
+ Report.warning (m.source_reference, "Creation method of abstract class cannot be public.");
+ } else {
+ Report.error (m.source_reference, "Creation method of abstract class cannot be public.");
+ error = true;
+ return;
+ }
+ }
}
base.add_method (m);