+ assert(!is_typeref(type));
+ return type->kind == TYPE_POINTER;
+}
+
+static inline bool is_type_reference(const type_t *type)
+{
+ assert(!is_typeref(type));
+ return type->kind == TYPE_REFERENCE;
+}
+
+static inline bool is_type_array(const type_t *type)
+{
+ assert(!is_typeref(type));
+ return type->kind == TYPE_ARRAY;
+}
+
+static inline bool is_type_function(const type_t *type)
+{
+ assert(!is_typeref(type));
+ return type->kind == TYPE_FUNCTION;
+}
+
+static inline bool is_type_union(const type_t *type)
+{
+ assert(!is_typeref(type));
+ return type->kind == TYPE_COMPOUND_UNION;
+}
+
+static inline bool is_type_struct(const type_t *type)
+{
+ assert(!is_typeref(type));
+ return type->kind == TYPE_COMPOUND_STRUCT;
+}
+
+static inline bool is_type_builtin(const type_t *type)
+{
+ assert(!is_typeref(type));
+ return type->kind == TYPE_BUILTIN;