From 48aaa7cc474dddfc530a83acca44032b0ccf1daa Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Thu, 17 Sep 2020 16:37:34 +0300 Subject: [PATCH] [refactoring] update ast structure of "Throw" node --- internal/php5/php5.go | Bin 287826 -> 287603 bytes internal/php5/php5.y | 17 ++++++++--------- internal/php7/php7.go | Bin 241851 -> 240642 bytes internal/php7/php7.y | 17 ++++++++--------- pkg/ast/node.go | 4 +++- pkg/ast/visitor/filter_tokens.go | 5 +++++ pkg/printer/printer.go | 22 +++++----------------- 7 files changed, 29 insertions(+), 36 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 6527ca84144e97cec960d423a28227d51f28f739..f819223c6be86bef3d4702be7e8777a6d45f1526 100644 GIT binary patch delta 7404 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 ZhgrQe9w+fRHqSC|K$v(*l6$z7@NY@W2EhOT delta 7588 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 IX`~hZe>q(QlmGw# diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 21c19ac..cdd7bc5 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -1167,15 +1167,14 @@ unticked_statement: } | T_THROW expr ';' { - $$ = &ast.StmtThrow{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtThrow{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + ThrowTkn: $1, + Expr: $2, + SemiColonTkn: $3, + } } | T_GOTO T_STRING ';' { diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 5c94ada59c55fa257206a10c7ea3f6a2284f54bf..f784230e41ba8be76c84c374b4f0153e4fd0233b 100644 GIT binary patch delta 9771 zcmZ`;d3ct^wSQ(N3kgdSAS6JN?+X(4<=YoQNDzt`6o?=oAOTTO6cP%GD4_{+mDcT?ozY#L+0Dtx z7+sdxJ(J#@lE(DwT+z#RH{^*3UE9XvV!B5&yHoShMyIAtyDUF#AVTkDc5B*ZjPA

)sX^sdbAne=Y!k`el* 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 N=81ylx6WD}kXiXV zB0;wnIxr}KX$)Ui2~1=7)^Z1aqujz*ZI&V0 z-V4&#^|Ek|!qT|`_PfG?pR8yteSW0_udQ_8)O?Crpld$)%3`#A8}J}u!m{oKb!C@*zLUk4uC52hXL>qvtVn8xtFehysGzcswO zzXKOlTNvr4l9pDBiC!+Kq+gwZo;^TZ&uOXd0QRP6kT~1$Ej}VcdhsAp$O13NVNQ3YjwHp#VDxiJNa=I-$ck$M?D6A74Udq8EA-*x#i_yQ z{2^j!FnW5ZxHuT4hl{6zksKk;4o0(2bVpyDB)0JEJi{MGx}!y7#4Q2VZ>)pS_v6Jl zW3&;Y$rHpRfAHP}vCkj8e!7_94^BVBK}Mcwkq6JlKEH9M*lXB$@X}f05`Qr2Y(5Se zh}|8-qCY!FOym{u=z{Y^ob6=sCnnkh#896LL}|cy?j&)QKcX)tiK>Mr4Cg z<7_cG7IDTQFL@RNUr| zXwc2}K(LakTi^!cc{8Fl%S1IzT_!J~<{I?~H6E66+PO}4qQVD6Ic;eaU1`xkc?^yF zQI^r6r$jz&yv?R4Bd#LZs6Kp~_$H??BqJ#TAw{3`P@QSQBci9CvO?_V6+t2_q7xMWfJt@ z5x920LzBs+9vJ*PpXu!%UZ zC3IvsLT23_=Rl^golWnEv<|&3PWRWNQqhzKd749sbJ)dbMGmYPlKL??X}ASx40I0SI!bM(TqtrhjUI;nOH_6(XSEug>S?&Z322K zX6UcB^C?-J3eM$gk2ngmIZu}S5>RC}YC^V@Cj1i}(u!Yfi)$j34)s$N`nzAe=F^Zw zme5di*E>ha?t&H{4HhD^aSjtb^HO5A}QFFcONsWJ%H8l2qQAn?SgH4)wzbS?Fs+xATk>&+~>$%EiGtPeGwUf3K7D_H- z*pAnzEKl+)z*Z1x>(^LWWRz%YW^Yd)wa3Y8%##JyI3pH|QA3`r)nB)lLjr0%$(54U zc94a7ZU5?nyCE*xRB4SwXj>e6zVAqlB4yOOZLEy*^qf?R~-+W}=d{ zbS#$bsJ^3|>dAx<3VWIm1>9h~b*mb@>Ni!WFXF{9_>0*c^OT$tbO_P zXgBKxz+nU@a?r6G2Cy3@?)0SnTgZ`a{)n>E*4_6Vpo*ClNxQ3cX9SSDpGXkAMb#qeM?#^;!)w9N^i3B(0Q=j9I zygGg^+vzvc@?76EiBsHgKt^d!Ht-7il!)Gum3KQ6rM-y;_mL}Uzz}S7YQlCr2i|QQlSk{T|wj-?7 zEE2c5o40bs2)mU4!mD>6-F$qqL{cj}$@-i5lMb-(WCuv)0DHAz=5&q*Ez?H@%$&D8 z?R!T%^apRk3AMAHda9+fyOLgsftkJO&>2W|k)v`MU2vM?|74WC=N;GsEul1R9WS@( z&&SG5{x+&)JgPzV?`f3<$wan8e*QfC%csKwL>cWnLq6aiR^)D+`(gC{neMb`vdwAI zL(Y=z{k@k-+u~^4LkgLC_yTND#MJ!0y7@dL52KceT!_48sCJ^{%e4Va7;^{kw~2N> z=EiJ(Nj>udyT<^$8&Zj>!XrG@CQowe-apCbGY?t3h^dnUr7{`Q8z;*I-w}A~bX5Pd zUXJlCmzjj=@+)a*gY2z0PLq9n`%U`!_97X!7YvgH($Sc%ogv@yy+KzMsvcB78(qNI z>8KPFE_1RKH57TEF1|t@^0!B((Z}IsPuI=F3yHr8Y20zldtc`z2+LPz$vb?AdzW3; z$-esDtK|xxEYY=?mfcFsoGq98kV@m`#u9aNJo26!d7Dh*ZUwr|br2a%Xz)MH8VoCK z-Hs~7wmd)2VMNAnC_#t2WuELnLl(IQng|T;-zx+N2k@1+u^!AC56`(6Q@CdeJ*#n*_poaNg zXQ!L|plsyDF?Y&yMC{>!J47OkOSM_BZu_W1$AWxU=)I3Q2tvx5y=j9-H4nSU9)SZE zZ1k4NNYrt_xlect0%Fp5h_-B&ZFS@+S;vO5K*9hTz(}7akz}#XS7TaV~&c_D9C6@hJp!aT zJoSIP6r34Arfh}uke7pl0V1!hTo?TrufZl6SuK3|#wFrwSk$oFW?4q!5u;@NE4u@3 zH)$5A=kJ%tv!j?h?xl^NK9*y0I>L15Eo8$x4_LQ>FHF5> z;sE}9K%SIiG7oy@)a!Ylc~yYt!BOr-%?IJgul|O;MUPe-NTjXAgcUurmF|YF; z1i8C2G#cIxC+OWHb|&-j#Jn&r{{>4)|00>q5>pz)5j-sjMi-iZztHnXeM!?81kZiL zfAay@m?T_*#?hjAs-51lMokr~hAO@cvU0o?nKxHj^et|E!*55UjEAsN3V(;Enn#`x zJ?Ln$JaP5ocq1CyRo3B;i}VDk+VkG90^HBIe)P;&g9Pnrqxe#1Ae$z4PEZ|mO+$a%$Fn)MfjDQH_0x7o-VK}Fo0>Q5J*uPT&VauYl%2A zhWMyMgtP4ffr;&kqJSF!PGl*qI3haI%|(uG6bqPAW|G8T1-;zKm+`NP$94AE!$pZ) zuQ{vX>e;lgTBZHx?|k~Gv)X75Ag?CvH}>VUuZyq3Txz39_@7NVsn`KfTMi(&wio+0 zgb3YrmG0A3**8iP@+yNPB=Yc{c~OaaoV~}HAjADYIel~tPQkeDD&a%e4W!=+`uG^t zmU`W(2J1sTy#2M3-1zijTxZKv(w8(XBN;_!IpC9F10& zSMh*k+@WDP-~rVEtg^9`o>{G`f|B7q7@4)k^=|`JmG2PzswrSVw1^M+Stk=&b7NJ{y&fgvVJno!R5m9?syuR&!qSv@7LekZ9% z-1^IW995A>+>q~Kt1Sg#1En!KHRbZ5Sb@q_$*{?Y7c+bwk4amrtO6t!R`6KbRe*?L zYGo#%O1#%0tHx+m#xB6BPV$?viLDO>?Kv*cjUMfJh)q+l$ zJjwP6#b zmmB;|G1TC*7|K(6TA&b(9)ESJ^dEzbTHB;sV-g%kQMz<`pwU$A+{;fneKI}JXAl$j zR5(}lrWqHjl&L93lW7f6BBJ!&#Q{4y!-!5_qU>id!&rIl?d5T+0^h-IxK>@Mt7j|wj$z5Elm_`HUj@FR zC0f4e;`RFaz)Ij5LdLE)1vt+_#&5Q8tZqbR&m4AQXh6UR8zPro75Xb7kCGmw!pH%HX_QaW^@ zI>G!J03RtD)pNcZQc-+TR#m3G=qM<&GB8@Du<;95sv6%!l}g0)Yj>$xzIK(uXWaD(2=G$5oGK!vik9xt;frqNC535?Cm)x)H&m(w!Y5SGBQop=T*?Wg2+bFHnqaISD zeBCOIOD42L1548QCg&`sarMFr LAU+6fQn7yljba`q diff --git a/internal/php7/php7.y b/internal/php7/php7.y index a679f14..920dc76 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1077,15 +1077,14 @@ statement: } | T_THROW expr ';' { - $$ = &ast.StmtThrow{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtThrow{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + ThrowTkn: $1, + Expr: $2, + SemiColonTkn: $3, + } } | T_GOTO T_STRING ';' { diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 0479183..e459723 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -709,7 +709,9 @@ func (n *StmtSwitch) Accept(v NodeVisitor) { // StmtThrow node type StmtThrow struct { Node - Expr Vertex + ThrowTkn *token.Token + Expr Vertex + SemiColonTkn *token.Token } func (n *StmtThrow) Accept(v NodeVisitor) { diff --git a/pkg/ast/visitor/filter_tokens.go b/pkg/ast/visitor/filter_tokens.go index 83a3410..62f7700 100644 --- a/pkg/ast/visitor/filter_tokens.go +++ b/pkg/ast/visitor/filter_tokens.go @@ -260,3 +260,8 @@ func (v *FilterTokens) StmtFinally(n *ast.StmtFinally) { n.OpenCurlyBracketTkn = nil n.CloseCurlyBracketTkn = nil } + +func (v *FilterTokens) StmtThrow(n *ast.StmtThrow) { + n.ThrowTkn = nil + n.SemiColonTkn = nil +} diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index fab6102..0ade2a0 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -2674,23 +2674,11 @@ func (p *Printer) printStmtAltSwitch(n *ast.StmtSwitch) { p.printToken(n.SemiColonTkn, ";") } -func (p *Printer) printStmtThrow(n ast.Vertex) { - nn := n.(*ast.StmtThrow) - p.printFreeFloating(nn, token.Start) - - p.write([]byte("throw")) - if nn.Expr.GetNode().Tokens.IsEmpty() { - p.write([]byte(" ")) - } - p.Print(nn.Expr) - p.printFreeFloating(nn, token.Expr) - - p.printFreeFloating(nn, token.SemiColon) - if n.GetNode().Tokens.IsEmpty() { - p.write([]byte(";")) - } - - p.printFreeFloating(nn, token.End) +func (p *Printer) printStmtThrow(n *ast.StmtThrow) { + p.printToken(n.ThrowTkn, "throw") + p.bufStart = " " + p.Print(n.Expr) + p.printToken(n.SemiColonTkn, ";") } func (p *Printer) printStmtTraitAdaptationList(n ast.Vertex) {