diff options
author | Juerg Billeter <j@bitron.ch> | 2007-12-15 11:54:52 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2007-12-15 11:54:52 +0000 |
commit | b261df87989167862fb63387d4b07dfd923e322d (patch) | |
tree | eb65ef38c59b45f83e7de503376564155e89fc3e /vala/valanulltype.vala | |
parent | 415d9160d8dfd115a5dc747f65aad00cfcf6907b (diff) | |
download | vala-b261df87989167862fb63387d4b07dfd923e322d.tar.gz |
update to be compatible with new pointer types
2007-12-15 Juerg Billeter <j@bitron.ch>
* gee/hashmap.vala, gee/hashset.vala: update to be compatible with new
pointer types
* vala/parser.y, vala/vala.h, vala/valaclass.vala,
vala/valadatatype.vala, vala/valamemorymanager.vala,
vala/valanulltype.vala, vala/valapointertype.vala,
vala/valasemanticanalyzer.vala, vala/valasymbolresolver.vala,
vala/valavoidtype.vala, gobject/valaccodegenerator.vala,
gobject/valaccodegeneratormethod.vala: use PointerType
svn path=/trunk/; revision=774
Diffstat (limited to 'vala/valanulltype.vala')
-rw-r--r-- | vala/valanulltype.vala | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/vala/valanulltype.vala b/vala/valanulltype.vala index 2efbaaac7..3be020147 100644 --- a/vala/valanulltype.vala +++ b/vala/valanulltype.vala @@ -28,4 +28,25 @@ using GLib; public class Vala.NullType : ReferenceType { public NullType () { } + + public override bool compatible (DataType! target_type) { + if (!(target_type is PointerType) && (target_type is NullType || (target_type.data_type == null && target_type.type_parameter == null))) { + return true; + } + + /* null can be cast to any reference or array type or pointer type */ + if (target_type.type_parameter != null || + target_type is PointerType || + target_type.data_type.is_reference_type () || + target_type.is_out || + target_type.data_type is Pointer || + target_type.data_type is Array || + target_type.data_type is Callback || + target_type.data_type.get_attribute ("PointerType") != null) { + return true; + } + + /* null is not compatible with any other type (i.e. value types) */ + return false; + } } |