File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -131,7 +131,7 @@ var binOperatorsPrecedence = [
131
131
[ 'or' ] ,
132
132
[ 'xor' ] ,
133
133
[ 'and' ] ,
134
- // TODO: assignment / not sure that PHP allows this with expressions
134
+ [ '=' ] ,
135
135
[ '?' ] ,
136
136
[ '??' ] ,
137
137
[ '||' ] ,
@@ -210,6 +210,19 @@ AST.prototype.resolvePrecedence = function(result) {
210
210
buffer . test = this . resolvePrecedence ( result ) ;
211
211
result = buffer ;
212
212
}
213
+ } else if ( result . kind === 'assign' ) {
214
+ // https://github.com/glayzzle/php-parser/issues/81
215
+ if ( result . right && result . right . kind === 'bin' ) {
216
+ var lLevel = AST . precedence [ '=' ] ;
217
+ var rLevel = AST . precedence [ result . right . type ] ;
218
+ // only shifts with and, xor, or
219
+ if ( lLevel && rLevel && rLevel < lLevel ) {
220
+ buffer = result . right ;
221
+ result . right = result . right . left ;
222
+ buffer . left = result ;
223
+ result = buffer ;
224
+ }
225
+ }
213
226
}
214
227
return result ;
215
228
} ;
You can’t perform that action at this time.
0 commit comments