@@ -607,38 +607,57 @@ protected function tokenize($string)
607607
608608 if ($ tokenIsArray === true
609609 && isset (Util \Tokens::$ contextSensitiveKeywords [$ token [0 ]]) === true
610- && isset ($ this ->tstringContexts [$ finalTokens [$ lastNotEmptyToken ]['code ' ]]) === true
610+ && (isset ($ this ->tstringContexts [$ finalTokens [$ lastNotEmptyToken ]['code ' ]]) === true
611+ || $ finalTokens [$ lastNotEmptyToken ]['content ' ] === '& ' )
611612 ) {
612- $ preserveKeyword = false ;
613+ if (isset ($ this ->tstringContexts [$ finalTokens [$ lastNotEmptyToken ]['code ' ]]) === true ) {
614+ $ preserveKeyword = false ;
613615
614- // `new class`, and `new static` should be preserved.
615- if ($ finalTokens [$ lastNotEmptyToken ]['code ' ] === T_NEW
616- && ($ token [0 ] === T_CLASS
617- || $ token [0 ] === T_STATIC )
618- ) {
619- $ preserveKeyword = true ;
620- }
616+ // `new class`, and `new static` should be preserved.
617+ if ($ finalTokens [$ lastNotEmptyToken ]['code ' ] === T_NEW
618+ && ($ token [0 ] === T_CLASS
619+ || $ token [0 ] === T_STATIC )
620+ ) {
621+ $ preserveKeyword = true ;
622+ }
621623
622- // `new class extends` `new class implements` should be preserved
623- if (($ token [0 ] === T_EXTENDS || $ token [0 ] === T_IMPLEMENTS )
624- && $ finalTokens [$ lastNotEmptyToken ]['code ' ] === T_CLASS
625- ) {
626- $ preserveKeyword = true ;
627- }
624+ // `new class extends` `new class implements` should be preserved
625+ if (($ token [0 ] === T_EXTENDS || $ token [0 ] === T_IMPLEMENTS )
626+ && $ finalTokens [$ lastNotEmptyToken ]['code ' ] === T_CLASS
627+ ) {
628+ $ preserveKeyword = true ;
629+ }
630+
631+ // `namespace\` should be preserved
632+ if ($ token [0 ] === T_NAMESPACE ) {
633+ for ($ i = ($ stackPtr + 1 ); $ i < $ numTokens ; $ i ++) {
634+ if (is_array ($ tokens [$ i ]) === false ) {
635+ break ;
636+ }
637+
638+ if (isset (Util \Tokens::$ emptyTokens [$ tokens [$ i ][0 ]]) === true ) {
639+ continue ;
640+ }
641+
642+ if ($ tokens [$ i ][0 ] === T_NS_SEPARATOR ) {
643+ $ preserveKeyword = true ;
644+ }
628645
629- // `namespace\` should be preserved
630- if ($ token [0 ] === T_NAMESPACE ) {
631- for ($ i = ($ stackPtr + 1 ); $ i < $ numTokens ; $ i ++) {
632- if (is_array ($ tokens [$ i ]) === false ) {
633646 break ;
634647 }
648+ }
649+ }//end if
650+
651+ if ($ finalTokens [$ lastNotEmptyToken ]['content ' ] === '& ' ) {
652+ $ preserveKeyword = true ;
635653
636- if (isset (Util \Tokens::$ emptyTokens [$ tokens [$ i ][0 ]]) === true ) {
654+ for ($ i = ($ lastNotEmptyToken - 1 ); $ i >= 0 ; $ i --) {
655+ if (isset (Util \Tokens::$ emptyTokens [$ finalTokens [$ i ]['code ' ]]) === true ) {
637656 continue ;
638657 }
639658
640- if ($ tokens [$ i ][0 ] === T_NS_SEPARATOR ) {
641- $ preserveKeyword = true ;
659+ if ($ finalTokens [$ i ][' code ' ] === T_FUNCTION ) {
660+ $ preserveKeyword = false ;
642661 }
643662
644663 break ;
0 commit comments