From 1e09c7b660856b8178c120328b7a13a371f109e4 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 22 Apr 2011 16:08:07 +0200 Subject: [PATCH] added template file information when an error occurs during compilation --- lib/Twig/Environment.php | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) 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); + } } /** -- 1.7.2.5