Author: bernhard
Date: Fri Jan  2 09:35:05 2009
New Revision: 34825

Modified:
   trunk/languages/pipp/src/classes/Object.pir
   trunk/languages/pipp/src/pct/actions.pm

Log:
[Pipp] Add a default __construct in ['PippObject']


Modified: trunk/languages/pipp/src/classes/Object.pir
==============================================================================
--- trunk/languages/pipp/src/classes/Object.pir (original)
+++ trunk/languages/pipp/src/classes/Object.pir Fri Jan  2 09:35:05 2009
@@ -74,6 +74,17 @@
     .return ($P1)
 .end
 
+=item __construct
+
+A default constructor. Used for checking that there are no args.
+TODO: Should be a method.
+
+=cut
+
+.sub '__construct' # :method
+    .return ()
+.end
+
 =back
 
 =head2 Private methods

Modified: trunk/languages/pipp/src/pct/actions.pm
==============================================================================
--- trunk/languages/pipp/src/pct/actions.pm     (original)
+++ trunk/languages/pipp/src/pct/actions.pm     Fri Jan  2 09:35:05 2009
@@ -236,21 +236,17 @@
         PAST::Stmts.new(
             PAST::Var.new( :name('obj'),  :scope('register'), :isdecl(1) ),
             PAST::Var.new( :name('cons'), :scope('register'), :isdecl(1) ),
-            PAST::Op.new(                    # check whether there is a 
constructor
+            # use default constructor when there is no explicit constructor
+            PAST::Op.new(
                 :pasttype('if'), 
                 PAST::Op.new(
                     :pirop('isnull'),
-                    PAST::Op.new(
-                        :inline("%r = get_global ['" ~ $class_name ~ "'], 
'__construct'", 'cons = %r')  # condition
-                    )
-                ),
-                PAST::Op.new(                                 # no constructor 
call needed
-                    :inline('%r = new %0',
-                            'obj = %r'),
-                    $class_name
+                    PAST::Op.new( :inline("%r = get_global ['" ~ $class_name ~ 
"'], '__construct'") )  # condition
                 ),
-                $cons_call                                    # call the 
constructor
+                PAST::Op.new( :inline("cons = get_global ['PippObject'], 
'__construct'") ),
+                PAST::Op.new( :inline("cons = get_global ['" ~ $class_name ~ 
"'], '__construct'") )
             ),
+            $cons_call,                                       # call the 
constructor
             PAST::Var.new( :name('obj'), :scope('register') ) # return the 
created object
         );
 }

Reply via email to