diff options
author | Ivan Enderlin <ivan.enderlin@hoa-project.net> | 2013-11-22 15:11:57 +0100 |
---|---|---|
committer | Ivan Enderlin <ivan.enderlin@hoa-project.net> | 2013-11-22 15:11:57 +0100 |
commit | c5b344986d8a65aeea69848f765a8267296681a8 (patch) | |
tree | a5dea8839bd7140baf771720673246e87de6a8bc | |
parent | 61f09f7049928d3f4813a6623ec2c055adf792c2 (diff) | |
download | Praspel-c5b344986d8a65aeea69848f765a8267296681a8.zip Praspel-c5b344986d8a65aeea69848f765a8267296681a8.tar.gz Praspel-c5b344986d8a65aeea69848f765a8267296681a8.tar.bz2 |
Clean a little bit \old(e) support.
Remove a useless code in the RAC. And move the `\old(e)` support from
the interpreter to the model.
-rw-r--r-- | AssertionChecker/Runtime.php | 9 | ||||
-rw-r--r-- | Model/Declaration.php | 19 | ||||
-rw-r--r-- | Visitor/Interpreter.php | 15 |
3 files changed, 16 insertions, 27 deletions
diff --git a/AssertionChecker/Runtime.php b/AssertionChecker/Runtime.php index 5f99c62..e0b8265 100644 --- a/AssertionChecker/Runtime.php +++ b/AssertionChecker/Runtime.php @@ -546,12 +546,7 @@ class Runtime extends AssertionChecker { foreach($clause as $name => $variable) { - $_name = $name; - - if('\old(' === substr($name, 0, 5)) - $_name = substr($name, 5, -1); - - if(false === array_key_exists($_name, $data)) { + if(false === array_key_exists($name, $data)) { $exceptions[] = new $exception( 'Variable %s is required and has no value.', 7, $name); @@ -559,7 +554,7 @@ class Runtime extends AssertionChecker { continue; } - $datum = &$data[$_name]; + $datum = &$data[$name]; $_verdict = false; $traceVariable = null; diff --git a/Model/Declaration.php b/Model/Declaration.php index ffbf936..2e1abf9 100644 --- a/Model/Declaration.php +++ b/Model/Declaration.php @@ -146,8 +146,7 @@ abstract class Declaration * @access public * @param string $name Variable name. * @param bool $borrowing Borrowing variable or not. - * @return \Hoa\Praspel\Model\Variable - * @throw \Hoa\Praspel\Exception\Model + * @return mixed */ public function getVariable ( $name, $borrowing = false ) { @@ -159,10 +158,18 @@ abstract class Declaration return $out; } - if('\old(' === substr($name, 0, 5)) - throw new \Hoa\Praspel\Exception\Model( - 'Cannot declare domains for %s in @%s.', - 0, array($name, $this->getName())); + if('\old(' === substr($name, 0, 5)) { + + $variable = $this->getVariable($name, true); + + return new \Hoa\Realdom\Crate\Constant( + $variable->getBorrowedVariable(), + function ( ) use ( $variable ) { + + return $variable->getName(); + } + ); + } if(false === $this->offsetExists($name)) { diff --git a/Visitor/Interpreter.php b/Visitor/Interpreter.php index bf9a3d9..9d20411 100644 --- a/Visitor/Interpreter.php +++ b/Visitor/Interpreter.php @@ -332,16 +332,6 @@ class Interpreter implements \Hoa\Visitor\Visit { $argument = $child->accept($this, $handle, $eldnah); - if( $argument instanceof \Hoa\Praspel\Model\Variable\Borrowing - && $argument::TYPE_OLD === $argument->getType()) - $argument = new \Hoa\Realdom\Crate\Constant( - $argument->getBorrowedVariable(), - function ( ) use ( $argument ) { - - return $argument->getName(); - } - ); - if($argument instanceof \Hoa\Realdom\Disjunction) { $realdoms = $argument->getRealdoms(); @@ -464,10 +454,7 @@ class Interpreter implements \Hoa\Visitor\Visit { ')'; if(false !== $eldnah) - return $this->_clause->getVariable( - $value, - true - ); + return $this->_clause->getVariable($value); return $value; break; |