From: Fabien Potencier Date: Fri, 22 Apr 2011 14:08:07 +0000 (+0200) Subject: added template file information when an error occurs during compilation X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=1e09c7b660856b8178c1;p=web%2Fkonrad%2Ftwig.git added template file information when an error occurs during compilation --- diff --git a/lib/Twig/Environment.php b/lib/Twig/Environment.php index 81262c8..f2f4ce1 100644 --- a/lib/Twig/Environment.php +++ b/lib/Twig/Environment.php @@ -298,11 +298,13 @@ class Twig_Environment } if (!class_exists($cls, false)) { + $code = $this->compileSource($this->loader->getSource($name), $name); + if (false === $cache = $this->getCacheFilename($name)) { - eval('?>'.$this->compileSource($this->loader->getSource($name), $name)); + eval('?>'.$code); } else { if (!file_exists($cache) || ($this->isAutoReload() && !$this->loader->isFresh($name, filemtime($cache)))) { - $this->writeCacheFile($cache, $this->compileSource($this->loader->getSource($name), $name)); + $this->writeCacheFile($cache, $code); } require_once $cache; @@ -459,7 +461,14 @@ class Twig_Environment */ public function compileSource($source, $name = null) { - return $this->compile($this->parse($this->tokenize($source, $name))); + try { + return $this->compile($this->parse($this->tokenize($source, $name))); + } catch (Twig_Error $e) { + $e->setTemplateFile($name); + throw $e; + } catch (Exception $e) { + throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $name, $e); + } } /**