[svn:parrot] r39312 - trunk/lib/Parrot/Pmc2c

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Jun 1 23:12:01 UTC 2009


Author: bacek
Date: Mon Jun  1 23:12:00 2009
New Revision: 39312
URL: https://trac.parrot.org/parrot/changeset/39312

Log:
[pmc2c] Don't use return with expression in void functions. ISO C forbids it. doughera++

Modified:
   trunk/lib/Parrot/Pmc2c/PMCEmitter.pm

Modified: trunk/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- trunk/lib/Parrot/Pmc2c/PMCEmitter.pm	Mon Jun  1 23:11:26 2009	(r39311)
+++ trunk/lib/Parrot/Pmc2c/PMCEmitter.pm	Mon Jun  1 23:12:00 2009	(r39312)
@@ -1009,27 +1009,33 @@
     # Gather parameters names
     my @parameters = map { s/\s*PMC\s*\*\s*//; $_ } split (/,/, $impl->parameters);
     my $parameters = join ', ', @parameters;
+    # ISO C forbids return with expression from void functions.
+    my $return = $impl->return_type =~ /^void\s*$/
+                    ? ''
+                    : 'return ';
 
     if ($type eq 'DEFAULT' || $type eq 'PMC') {
         # For default case we have to handle return manually.
-        my ($pcc_signature, $retval, $call_tail, $return)
+        my ($pcc_signature, $retval, $call_tail, $pcc_return)
                 = $self->gen_defaul_case_wrapping($ssig, @parameters);
 
         $case = <<"CASE";
         default:
             if (type < enum_class_core_max)
-                return $func(INTERP, SELF, $parameters);
+                $return$func(INTERP, SELF, $parameters);
             else {
                 $retval
                 Parrot_mmd_multi_dispatch_from_c_args(INTERP, "$vt_method_name", "$pcc_signature", SELF, $parameters$call_tail);
-                $return
+                $pcc_return
             }
+            break;
 CASE
     }
     else {
         $case = <<"CASE";
         case enum_class_$type:
-            return $func(INTERP, SELF, $parameters);
+            $return$func(INTERP, SELF, $parameters);
+            break;
 CASE
     }
 


More information about the parrot-commits mailing list