From: Luca Bruno Date: Sat, 11 Jan 2014 16:04:02 +0000 (+0100) Subject: codegen: Support "foo is G" X-Git-Tag: 0.23.2~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e15a795130250de68c4ea9bf3205c58865732869;p=thirdparty%2Fvala.git codegen: Support "foo is G" --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 4f049c1e6..488d434b1 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -5349,13 +5349,13 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var type_domain = new CCodeIdentifier (get_ccode_upper_case_name (et.error_domain)); return new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, instance_domain, type_domain); } else { - string type_id = get_ccode_type_id (type.data_type); - if (type_id == "") { + var type_id = get_type_id_expression (type); + if (type_id == null) { return new CCodeInvalidExpression (); } var ccheck = new CCodeFunctionCall (new CCodeIdentifier ("G_TYPE_CHECK_INSTANCE_TYPE")); ccheck.add_argument ((CCodeExpression) ccodenode); - ccheck.add_argument (new CCodeIdentifier (type_id)); + ccheck.add_argument (type_id); return ccheck; } } diff --git a/tests/methods/generics.vala b/tests/methods/generics.vala index b4655239a..27e9cc16e 100644 --- a/tests/methods/generics.vala +++ b/tests/methods/generics.vala @@ -4,6 +4,9 @@ interface Foo : Object { } } +class Bar { +} + class Baz : Object, Foo { } @@ -11,6 +14,11 @@ void foo (owned T bar) { bar = null; } +bool is_check () { + var o = new Bar (); + return o is G; +} + void main () { var bar = new Object (); foo (bar); @@ -19,4 +27,7 @@ void main () { var baz = new Baz (); baz.foo (bar); assert (baz.ref_count == 1); + + assert (is_check ()); + assert (!is_check ()); }