diff --git a/setup/test/tests/class.php_analyze.php b/setup/test/tests/class.php_analyze.php
index 153c9ad11fa99ac7a731a8b7492c6cbc4b9c6b92..53e0a85ab342851a322b102ecde9899a6361cee0 100644
--- a/setup/test/tests/class.php_analyze.php
+++ b/setup/test/tests/class.php_analyze.php
@@ -73,13 +73,19 @@ class SourceAnalyzer extends Test {
         $scope = array();
         while ($token != "{") {
             list(,$token) = each($this->tokens);
-            if (!is_array($token)
-                    || $token[0] == T_WHITESPACE)
+            switch ($token[0]) {
+            case T_WHITESPACE:
                 continue;
-            if ($token[0] == T_STRING)
+            case T_STRING:
                 $function['name'] = $token[1];
-            elseif ($token[0] == T_VARIABLE)
+                break;
+            case T_VARIABLE:
                 $scope[$token[1]] = 1;
+                break;
+            case ';':
+                // Abstract function -- no body will follow
+                return;
+            }
         }
         // Start inside a block -- we've already consumed the {
         $this->checkVariableUsage($function, $scope, 1, $options);