diff --git a/CHANGELOG b/CHANGELOG index cdd48c62b..450a18415 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ * 1.29.0 (2016-XX-XX) + * marked some classes as being final (via @final) * made Twig_Error report real source path when possible * added support for {{ _self }} to provide an upgrade path from 1.x to 2.0 (replaces {{ _self.templateName }}) * deprecated silent display of undefined blocks diff --git a/doc/deprecated.rst b/doc/deprecated.rst index 7a9702e1f..3890c932e 100644 --- a/doc/deprecated.rst +++ b/doc/deprecated.rst @@ -209,3 +209,6 @@ Miscellaneous * As of Twig 1.27, ``Twig_Parser::addHandler()`` and ``Twig_Parser::addNodeVisitor()`` are deprecated and will be removed in 2.0. + +* As of Twig 1.29, some classes are marked as being final via the `@final` + annotation. Those classes will be marked as final in 2.0. diff --git a/lib/Twig/Cache/Null.php b/lib/Twig/Cache/Null.php index fde8c8082..f6089187d 100644 --- a/lib/Twig/Cache/Null.php +++ b/lib/Twig/Cache/Null.php @@ -12,6 +12,8 @@ /** * Implements a no-cache strategy. * + * @final + * * @author Fabien Potencier */ class Twig_Cache_Null implements Twig_CacheInterface diff --git a/lib/Twig/Extension/Core.php b/lib/Twig/Extension/Core.php index 16959e4f4..69fa57b41 100644 --- a/lib/Twig/Extension/Core.php +++ b/lib/Twig/Extension/Core.php @@ -13,6 +13,10 @@ if (!defined('ENT_SUBSTITUTE')) { * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + +/** + * @final + */ class Twig_Extension_Core extends Twig_Extension { protected $dateFormats = array('F j, Y H:i', '%d days'); diff --git a/lib/Twig/Extension/Debug.php b/lib/Twig/Extension/Debug.php index 42fdb1e30..3642049f8 100644 --- a/lib/Twig/Extension/Debug.php +++ b/lib/Twig/Extension/Debug.php @@ -8,6 +8,10 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + +/** + * @final + */ class Twig_Extension_Debug extends Twig_Extension { public function getFunctions() diff --git a/lib/Twig/Extension/Escaper.php b/lib/Twig/Extension/Escaper.php index 5efccf206..c95f87a1f 100644 --- a/lib/Twig/Extension/Escaper.php +++ b/lib/Twig/Extension/Escaper.php @@ -8,6 +8,10 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + +/** + * @final + */ class Twig_Extension_Escaper extends Twig_Extension { protected $defaultStrategy; diff --git a/lib/Twig/Extension/Optimizer.php b/lib/Twig/Extension/Optimizer.php index 5a64a1a4e..e468fce62 100644 --- a/lib/Twig/Extension/Optimizer.php +++ b/lib/Twig/Extension/Optimizer.php @@ -8,6 +8,10 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + +/** + * @final + */ class Twig_Extension_Optimizer extends Twig_Extension { protected $optimizers; diff --git a/lib/Twig/Extension/Sandbox.php b/lib/Twig/Extension/Sandbox.php index 760d12382..f290415e4 100644 --- a/lib/Twig/Extension/Sandbox.php +++ b/lib/Twig/Extension/Sandbox.php @@ -8,6 +8,10 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + +/** + * @final + */ class Twig_Extension_Sandbox extends Twig_Extension { protected $sandboxedGlobally; diff --git a/lib/Twig/Extension/StringLoader.php b/lib/Twig/Extension/StringLoader.php index 1b3bd26a3..26b49da12 100644 --- a/lib/Twig/Extension/StringLoader.php +++ b/lib/Twig/Extension/StringLoader.php @@ -8,6 +8,10 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + +/** + * @final + */ class Twig_Extension_StringLoader extends Twig_Extension { public function getFunctions() diff --git a/lib/Twig/Loader/Array.php b/lib/Twig/Loader/Array.php index 2bb2fb829..2c4ae2515 100644 --- a/lib/Twig/Loader/Array.php +++ b/lib/Twig/Loader/Array.php @@ -19,6 +19,8 @@ * * This loader should only be used for unit testing. * + * @final + * * @author Fabien Potencier */ class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface diff --git a/lib/Twig/Loader/Chain.php b/lib/Twig/Loader/Chain.php index 26766d6d3..c48d921b2 100644 --- a/lib/Twig/Loader/Chain.php +++ b/lib/Twig/Loader/Chain.php @@ -12,6 +12,8 @@ /** * Loads templates from other loaders. * + * @final + * * @author Fabien Potencier */ class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface diff --git a/lib/Twig/NodeTraverser.php b/lib/Twig/NodeTraverser.php index 85c663b9f..5b05cd67f 100644 --- a/lib/Twig/NodeTraverser.php +++ b/lib/Twig/NodeTraverser.php @@ -14,6 +14,8 @@ * * It visits all nodes and their children and calls the given visitor for each. * + * @final + * * @author Fabien Potencier */ class Twig_NodeTraverser diff --git a/lib/Twig/NodeVisitor/Escaper.php b/lib/Twig/NodeVisitor/Escaper.php index 28a979224..78572b7b2 100644 --- a/lib/Twig/NodeVisitor/Escaper.php +++ b/lib/Twig/NodeVisitor/Escaper.php @@ -12,6 +12,8 @@ /** * Twig_NodeVisitor_Escaper implements output escaping. * + * @final + * * @author Fabien Potencier */ class Twig_NodeVisitor_Escaper extends Twig_BaseNodeVisitor diff --git a/lib/Twig/NodeVisitor/Optimizer.php b/lib/Twig/NodeVisitor/Optimizer.php index c0411cb6e..4ac9a4dde 100644 --- a/lib/Twig/NodeVisitor/Optimizer.php +++ b/lib/Twig/NodeVisitor/Optimizer.php @@ -17,6 +17,8 @@ * You can configure which optimizations you want to activate via the * optimizer mode. * + * @final + * * @author Fabien Potencier */ class Twig_NodeVisitor_Optimizer extends Twig_BaseNodeVisitor diff --git a/lib/Twig/NodeVisitor/SafeAnalysis.php b/lib/Twig/NodeVisitor/SafeAnalysis.php index 439f5bf49..80821eda1 100644 --- a/lib/Twig/NodeVisitor/SafeAnalysis.php +++ b/lib/Twig/NodeVisitor/SafeAnalysis.php @@ -9,6 +9,9 @@ * file that was distributed with this source code. */ +/** + * @final + */ class Twig_NodeVisitor_SafeAnalysis extends Twig_BaseNodeVisitor { protected $data = array(); diff --git a/lib/Twig/NodeVisitor/Sandbox.php b/lib/Twig/NodeVisitor/Sandbox.php index a5e23c292..d3258b407 100644 --- a/lib/Twig/NodeVisitor/Sandbox.php +++ b/lib/Twig/NodeVisitor/Sandbox.php @@ -12,6 +12,8 @@ /** * Twig_NodeVisitor_Sandbox implements sandboxing. * + * @final + * * @author Fabien Potencier */ class Twig_NodeVisitor_Sandbox extends Twig_BaseNodeVisitor diff --git a/lib/Twig/Profiler/Dumper/Blackfire.php b/lib/Twig/Profiler/Dumper/Blackfire.php index b82747a94..03df629e6 100644 --- a/lib/Twig/Profiler/Dumper/Blackfire.php +++ b/lib/Twig/Profiler/Dumper/Blackfire.php @@ -11,6 +11,8 @@ /** * @author Fabien Potencier + * + * @final */ class Twig_Profiler_Dumper_Blackfire { diff --git a/lib/Twig/Profiler/Dumper/Html.php b/lib/Twig/Profiler/Dumper/Html.php index f066da750..d192af38d 100644 --- a/lib/Twig/Profiler/Dumper/Html.php +++ b/lib/Twig/Profiler/Dumper/Html.php @@ -11,6 +11,8 @@ /** * @author Fabien Potencier + * + * @final */ class Twig_Profiler_Dumper_Html extends Twig_Profiler_Dumper_Text { diff --git a/lib/Twig/Profiler/Dumper/Text.php b/lib/Twig/Profiler/Dumper/Text.php index 998e210d3..d8c0f9f52 100644 --- a/lib/Twig/Profiler/Dumper/Text.php +++ b/lib/Twig/Profiler/Dumper/Text.php @@ -11,6 +11,8 @@ /** * @author Fabien Potencier + * + * @final */ class Twig_Profiler_Dumper_Text { diff --git a/lib/Twig/Profiler/NodeVisitor/Profiler.php b/lib/Twig/Profiler/NodeVisitor/Profiler.php index 099a44f53..60df054cd 100644 --- a/lib/Twig/Profiler/NodeVisitor/Profiler.php +++ b/lib/Twig/Profiler/NodeVisitor/Profiler.php @@ -11,6 +11,8 @@ /** * @author Fabien Potencier + * + * @final */ class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor { diff --git a/lib/Twig/Profiler/Profile.php b/lib/Twig/Profiler/Profile.php index 104bc0581..93bdbb62b 100644 --- a/lib/Twig/Profiler/Profile.php +++ b/lib/Twig/Profiler/Profile.php @@ -11,6 +11,8 @@ /** * @author Fabien Potencier + * + * @final */ class Twig_Profiler_Profile implements IteratorAggregate, Serializable { diff --git a/lib/Twig/Sandbox/SecurityPolicy.php b/lib/Twig/Sandbox/SecurityPolicy.php index ed4ba8eb9..121fc30f6 100644 --- a/lib/Twig/Sandbox/SecurityPolicy.php +++ b/lib/Twig/Sandbox/SecurityPolicy.php @@ -12,6 +12,8 @@ /** * Represents a security policy which need to be enforced when sandbox mode is enabled. * + * @final + * * @author Fabien Potencier */ class Twig_Sandbox_SecurityPolicy implements Twig_Sandbox_SecurityPolicyInterface diff --git a/lib/Twig/Source.php b/lib/Twig/Source.php index b3fb0ceea..efe0f1497 100644 --- a/lib/Twig/Source.php +++ b/lib/Twig/Source.php @@ -12,6 +12,8 @@ /** * Holds information about a non-compiled Twig template. * + * @final + * * @author Fabien Potencier */ class Twig_Source diff --git a/lib/Twig/Token.php b/lib/Twig/Token.php index 3937a6fa3..67b5787c0 100644 --- a/lib/Twig/Token.php +++ b/lib/Twig/Token.php @@ -14,6 +14,8 @@ * Represents a Token. * * @author Fabien Potencier + * + * @final */ class Twig_Token { diff --git a/lib/Twig/TokenParser/AutoEscape.php b/lib/Twig/TokenParser/AutoEscape.php index b8c590d9e..066bf03b5 100644 --- a/lib/Twig/TokenParser/AutoEscape.php +++ b/lib/Twig/TokenParser/AutoEscape.php @@ -26,6 +26,8 @@ * using the js escaping strategy * {% endautoescape %} * + * + * @final */ class Twig_TokenParser_AutoEscape extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Block.php b/lib/Twig/TokenParser/Block.php index bae9a4460..dbb95119f 100644 --- a/lib/Twig/TokenParser/Block.php +++ b/lib/Twig/TokenParser/Block.php @@ -19,6 +19,8 @@ * {% block title %}{% endblock %} - My Webpage * {% endblock %} * + * + * @final */ class Twig_TokenParser_Block extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Do.php b/lib/Twig/TokenParser/Do.php index 7adb5a081..b7c0bca47 100644 --- a/lib/Twig/TokenParser/Do.php +++ b/lib/Twig/TokenParser/Do.php @@ -11,6 +11,8 @@ /** * Evaluates an expression, discarding the returned value. + * + * @final */ class Twig_TokenParser_Do extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Embed.php b/lib/Twig/TokenParser/Embed.php index ddc2602c3..95f3e6d19 100644 --- a/lib/Twig/TokenParser/Embed.php +++ b/lib/Twig/TokenParser/Embed.php @@ -11,6 +11,8 @@ /** * Embeds a template. + * + * @final */ class Twig_TokenParser_Embed extends Twig_TokenParser_Include { diff --git a/lib/Twig/TokenParser/Extends.php b/lib/Twig/TokenParser/Extends.php index 940ea1bbb..fd0fc2e90 100644 --- a/lib/Twig/TokenParser/Extends.php +++ b/lib/Twig/TokenParser/Extends.php @@ -16,6 +16,8 @@ *
  *  {% extends "base.html" %}
  * 
+ * + * @final */ class Twig_TokenParser_Extends extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Filter.php b/lib/Twig/TokenParser/Filter.php index b735ed409..e72676b6b 100644 --- a/lib/Twig/TokenParser/Filter.php +++ b/lib/Twig/TokenParser/Filter.php @@ -17,6 +17,8 @@ * This text becomes uppercase * {% endfilter %} * + * + * @final */ class Twig_TokenParser_Filter extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Flush.php b/lib/Twig/TokenParser/Flush.php index f9ce7c3b1..f0ec4b241 100644 --- a/lib/Twig/TokenParser/Flush.php +++ b/lib/Twig/TokenParser/Flush.php @@ -13,6 +13,8 @@ * Flushes the output to the client. * * @see flush() + * + * @final */ class Twig_TokenParser_Flush extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/For.php b/lib/Twig/TokenParser/For.php index 3ce9401d5..771ebf517 100644 --- a/lib/Twig/TokenParser/For.php +++ b/lib/Twig/TokenParser/For.php @@ -20,6 +20,8 @@ * {% endfor %} * * + * + * @final */ class Twig_TokenParser_For extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/From.php b/lib/Twig/TokenParser/From.php index a8f53b321..59b3a4b3a 100644 --- a/lib/Twig/TokenParser/From.php +++ b/lib/Twig/TokenParser/From.php @@ -15,6 +15,8 @@ *
  *   {% from 'forms.html' import forms %}
  * 
+ * + * @final */ class Twig_TokenParser_From extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/If.php b/lib/Twig/TokenParser/If.php index 479fc5698..e249828e1 100644 --- a/lib/Twig/TokenParser/If.php +++ b/lib/Twig/TokenParser/If.php @@ -22,6 +22,8 @@ * * {% endif %} * + * + * @final */ class Twig_TokenParser_If extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Import.php b/lib/Twig/TokenParser/Import.php index 85c5c0364..0de977f23 100644 --- a/lib/Twig/TokenParser/Import.php +++ b/lib/Twig/TokenParser/Import.php @@ -15,6 +15,8 @@ *
  *   {% import 'forms.html' as forms %}
  * 
+ * + * @final */ class Twig_TokenParser_Import extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Include.php b/lib/Twig/TokenParser/Include.php index 0e76dae3e..794708227 100644 --- a/lib/Twig/TokenParser/Include.php +++ b/lib/Twig/TokenParser/Include.php @@ -18,6 +18,8 @@ * Body * {% include 'footer.html' %} * + * + * @final */ class Twig_TokenParser_Include extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Macro.php b/lib/Twig/TokenParser/Macro.php index 1b2d3989a..026c99396 100644 --- a/lib/Twig/TokenParser/Macro.php +++ b/lib/Twig/TokenParser/Macro.php @@ -17,6 +17,8 @@ * * {% endmacro %} * + * + * @final */ class Twig_TokenParser_Macro extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Sandbox.php b/lib/Twig/TokenParser/Sandbox.php index c50a17ffd..2277f2050 100644 --- a/lib/Twig/TokenParser/Sandbox.php +++ b/lib/Twig/TokenParser/Sandbox.php @@ -19,6 +19,8 @@ * * * @see http://www.twig-project.org/doc/api.html#sandbox-extension for details + * + * @final */ class Twig_TokenParser_Sandbox extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Set.php b/lib/Twig/TokenParser/Set.php index 819371705..71d01d1fc 100644 --- a/lib/Twig/TokenParser/Set.php +++ b/lib/Twig/TokenParser/Set.php @@ -25,6 +25,8 @@ * * {% set foo %}Some content{% endset %} * + * + * @final */ class Twig_TokenParser_Set extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Spaceless.php b/lib/Twig/TokenParser/Spaceless.php index 53d906d82..ad315fd7f 100644 --- a/lib/Twig/TokenParser/Spaceless.php +++ b/lib/Twig/TokenParser/Spaceless.php @@ -21,6 +21,8 @@ * * {# output will be
foo
#} * + * + * @final */ class Twig_TokenParser_Spaceless extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/Use.php b/lib/Twig/TokenParser/Use.php index 3c4c4b927..87ad8cbdc 100644 --- a/lib/Twig/TokenParser/Use.php +++ b/lib/Twig/TokenParser/Use.php @@ -22,6 +22,8 @@ * * * @see http://www.twig-project.org/doc/templates.html#horizontal-reuse for details. + * + * @final */ class Twig_TokenParser_Use extends Twig_TokenParser { diff --git a/lib/Twig/TokenParser/With.php b/lib/Twig/TokenParser/With.php index 73f820a49..827313315 100644 --- a/lib/Twig/TokenParser/With.php +++ b/lib/Twig/TokenParser/With.php @@ -13,6 +13,8 @@ * Creates a nested scope. * * @author Fabien Potencier + * + * @final */ class Twig_TokenParser_With extends Twig_TokenParser { diff --git a/lib/Twig/TokenStream.php b/lib/Twig/TokenStream.php index 3835414a1..a1bcf44b3 100644 --- a/lib/Twig/TokenStream.php +++ b/lib/Twig/TokenStream.php @@ -13,6 +13,8 @@ /** * Represents a token stream. * + * @final + * * @author Fabien Potencier */ class Twig_TokenStream diff --git a/lib/Twig/Util/DeprecationCollector.php b/lib/Twig/Util/DeprecationCollector.php index 850b628e1..1e517f5c0 100644 --- a/lib/Twig/Util/DeprecationCollector.php +++ b/lib/Twig/Util/DeprecationCollector.php @@ -11,6 +11,8 @@ /** * @author Fabien Potencier + * + * @final */ class Twig_Util_DeprecationCollector {