var cisnull = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, cvar, new CCodeConstant ("NULL"));
if (type.type_parameter != null) {
- if (!(current_type_symbol is Class) || current_class.is_compact) {
+ var parent = type.type_parameter.parent_symbol;
+ var cl = parent as Class;
+ if ((!(parent is Method) && !(parent is ObjectTypeSymbol)) || (cl != null && cl.is_compact)) {
return new CCodeConstant ("NULL");
}
methods/bug653391.vala \
methods/bug653908.vala \
methods/bug663210.vala \
+ methods/generics.vala \
control-flow/break.vala \
control-flow/expressions-conditional.vala \
control-flow/for.vala \
--- /dev/null
+interface Foo : Object {
+ public void foo<T> (owned T bar) {
+ bar = null;
+ }
+}
+
+class Baz : Object, Foo {
+}
+
+void foo<T> (owned T bar) {
+ bar = null;
+}
+
+void main () {
+ var bar = new Object ();
+ foo<Object> (bar);
+ assert (bar.ref_count == 1);
+
+ var baz = new Baz ();
+ baz.foo<Object> (bar);
+ assert (baz.ref_count == 1);
+}