move reference type check from MemoryManager to DataType
authorJuerg Billeter <j@bitron.ch>
Fri, 14 Dec 2007 21:14:23 +0000 (21:14 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 14 Dec 2007 21:14:23 +0000 (21:14 +0000)
2007-12-14  Juerg Billeter  <j@bitron.ch>

* vala/valadatatype.vala, vala/valamemorymanager.vala: move reference
  type check from MemoryManager to DataType

svn path=/trunk/; revision=769

ChangeLog
vala/valadatatype.vala
vala/valamemorymanager.vala

index cefb2d4..f417ca5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2007-12-14  Jürg Billeter  <j@bitron.ch>
 
+       * vala/valadatatype.vala, vala/valamemorymanager.vala: move reference
+         type check from MemoryManager to DataType
+
+2007-12-14  Jürg Billeter  <j@bitron.ch>
+
        * vala/Makefile.am, vala/valadatatype.vala, vala/valadelegatetype.vala,
          vala/valafield.vala, vala/valaformalparameter.vala,
          vala/valainterfacewriter.vala, vala/valainvokable.vala,
index c19ba42..3690b6b 100644 (file)
@@ -357,4 +357,10 @@ public class Vala.DataType : CodeNode {
        public virtual Collection<FormalParameter> get_parameters () {
                return null;
        }
+
+       public virtual bool is_reference_type_or_type_parameter () {
+               return (data_type != null &&
+                       data_type.is_reference_type ()) ||
+                      type_parameter != null;
+       }
 }
index 1435784..21fdf31 100644 (file)
@@ -42,9 +42,7 @@ public class Vala.MemoryManager : CodeVisitor {
        
        private void visit_possibly_leaked_expression (Expression! expr) {
                if (expr.static_type != null &&
-                   ((expr.static_type.data_type != null &&
-                     expr.static_type.data_type.is_reference_type ()) ||
-                    expr.static_type.type_parameter != null) &&
+                   expr.static_type.is_reference_type_or_type_parameter () &&
                    expr.static_type.transfers_ownership) {
                        /* mark reference as leaked */
                        expr.ref_leaked = true;
@@ -53,9 +51,7 @@ public class Vala.MemoryManager : CodeVisitor {
 
        private void visit_possibly_missing_copy_expression (Expression! expr) {
                if (expr.static_type != null &&
-                   ((expr.static_type.data_type != null &&
-                     expr.static_type.data_type.is_reference_type ()) ||
-                    expr.static_type.type_parameter != null) &&
+                   expr.static_type.is_reference_type_or_type_parameter () &&
                    !expr.static_type.transfers_ownership) {
                        /* mark reference as missing */
                        expr.ref_missing = true;
@@ -213,9 +209,7 @@ public class Vala.MemoryManager : CodeVisitor {
                        if (params_it.next ()) {
                                var param = params_it.get ();
                                if (!param.ellipsis
-                                   && ((param.type_reference.data_type != null
-                                   && param.type_reference.data_type.is_reference_type ())
-                                   || param.type_reference.type_parameter != null)) {
+                                   && param.type_reference.is_reference_type_or_type_parameter ()) {
                                        bool is_ref = param.type_reference.transfers_ownership;
                                        if (is_ref && param.type_reference.type_parameter != null) {
                                                if (expr.call is MemberAccess) {
@@ -256,9 +250,7 @@ public class Vala.MemoryManager : CodeVisitor {
                        if (params_it.next ()) {
                                var param = params_it.get ();
                                if (!param.ellipsis
-                                   && ((param.type_reference.data_type != null
-                                   && param.type_reference.data_type.is_reference_type ())
-                                   || param.type_reference.type_parameter != null)) {
+                                   && param.type_reference.is_reference_type_or_type_parameter ()) {
                                        bool is_ref = param.type_reference.transfers_ownership;
                                        if (is_ref && param.type_reference.type_parameter != null) {
                                                var param_type = SemanticAnalyzer.get_actual_type (expr.type_reference, msym, param.type_reference, expr);