summaryrefslogtreecommitdiff
path: root/vala/valanulltype.vala
diff options
context:
space:
mode:
authorJuerg Billeter <j@bitron.ch>2007-12-15 11:54:52 +0000
committerJürg Billeter <juergbi@src.gnome.org>2007-12-15 11:54:52 +0000
commitb261df87989167862fb63387d4b07dfd923e322d (patch)
treeeb65ef38c59b45f83e7de503376564155e89fc3e /vala/valanulltype.vala
parent415d9160d8dfd115a5dc747f65aad00cfcf6907b (diff)
downloadvala-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.vala21
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;
+ }
}