- Added support for PHP 7 anonymous classes
- Anonymous classes are now tokenized as T_ANON_CLASS and ignored by normal class sniffs
- Added support for PHP 7 function return type declarations
- Return types are now tokenized as T_RETURN_TYPE
- Fixed tokenizing of the XOR operator, which was incorrectly identified as a power operator (bug #765)
- The T_POWER token has been removed and replaced by the T_BITWISE_XOR token
- The PHP-supplied T_POW token has been replicated for PHP versions before 5.6
- Traits are now tokenized in PHP versions before 5.4 to make testing easier
- Improved regular expression detection in JS files
- PEAR FunctionCallSignatureSniff now properly detects indents in more mixed HTML/PHP code blocks
- Full report now properly indents lines when newlines are found inside error messages
- Generating documentation without specifying a standard now uses the default standard instead
- Thanks to Ken Guest for the patch
- Generic InlineControlStructureSniff now supports braceless do/while loops in JS
- Thanks to Pieter Frenssen for the patch
- Added more guard code for function declarations with syntax errors
- Thanks to Yun Young-jin for the patch
- Added more guard code for foreach declarations with syntax errors
- Thanks to Johan de Ruijter for the patch
- Added more guard code for class declarations with syntax errors
- Squiz ArrayDeclarationSniff now has guard code for arrays with syntax errors
- Generic InlineControlStructureSniff now correctly fixes ELSEIF statements
- Fixed bug #601 : Expected type hint int[]; found array in Squiz FunctionCommentSniff
- Thanks to Scato Eggen for the patch
- Fixed bug #625 : Consider working around T_HASHBANG in HHVM 3.5.x and 3.6.x
- Thanks to Kunal Mehta for the patch
- Fixed bug #692 : Comment tokenizer can break when using mbstring function overloading
- Fixed bug #694 : Long sniff codes can cause PHP warnings in source report when showing error codes
- Fixed bug #698 : PSR2.Methods.FunctionCallSignature.Indent forces exact indent of ternary operator parameters
- Fixed bug #704 : ScopeIndent can fail when an opening parenthesis is on a line by itself
- Fixed bug #707 : Squiz MethodScopeSniff doesn't handle nested functions
- Fixed bug #709 : Squiz.Sniffs.Whitespace.ScopeClosingBraceSniff marking indented endif in mixed inline HTML blocks
- Fixed bug #711 : Sniffing from STDIN shows Generic.Files.LowercasedFilename.NotFound error
- Fixed bug #714 : Fixes suppression of errors using docblocks
- Thanks to Andrzej Karmazyn for the patch
- Fixed bug #716 : JSON report is invalid when messages contain newlines or tabs
- Thanks to Pieter Frenssen for the patch
- Fixed bug #723 : ScopeIndent can fail when multiple array closers are on the same line
- Fixed bug #730 : ScopeIndent can fail when a short array opening square bracket is on a line by itself
- Fixed bug #732 : PHP Notice if
@package
name is made up of all invalid characters- Adds new error code PEAR.Commenting.FileComment.InvalidPackageValue
- Fixed bug #748 : Auto fix for Squiz.Commenting.BlockComment.WrongEnd is incorrect
- Thanks to J.D. Grimes for the patch
- Fixed bug #753 : PSR2 standard shouldn't require space after USE block when next code is a closing tag
- Fixed bug #768 : PEAR FunctionCallSignature sniff forbids comments after opening parenthesis of a multiline call
- Fixed bug #769 : Incorrect detection of variable reference operator when used with short array syntax
- Thanks to Klaus Purer for the patch
- Fixed bug #772 : Syntax error when using PHPCBF on alternative style foreach loops
- Fixed bug #773 : Syntax error when stripping trailing PHP close tag and previous statement has no semicolon
- Fixed bug #778 : PHPCBF creates invalid PHP for inline FOREACH containing multiple control structures
- Fixed bug #781 : Incorrect checking for PHP7 return types on multi-line function declartions
- Fixed bug #782 : Conditional function declarations cause fixing conflicts in Squiz standard
- Squiz.ControlStructures.ControlSignature no longer enforces a single newline after open brace
- Squiz.WhiteSpace.ControlStructureSpacing can be used to checl spacing at the start/end of control structures