From b7d32b07bfe0f6e7230a0c1d37e813d4de465db4 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Mon, 3 Aug 2020 22:42:21 +0200 Subject: [PATCH] [refactoring] store `colon` as free-floating token --- internal/php7/php7.go | Bin 273406 -> 272612 bytes internal/php7/php7.y | 14 +--- pkg/printer/printer.go | 8 +- pkg/token/position.go | 1 - pkg/token/position_string.go | 149 +++++++++++++++++------------------ 5 files changed, 79 insertions(+), 93 deletions(-) diff --git a/internal/php7/php7.go b/internal/php7/php7.go index c267235803312a2fd26e4ce7c90e3051b7c538d4..f5e4667f756b27dd212e1fd9e8aef4d74dc3af63 100644 GIT binary patch delta 5520 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 delta 5759 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 diff --git a/internal/php7/php7.y b/internal/php7/php7.y index deb2eff..1fb33a9 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1453,9 +1453,6 @@ function_declaration_statement: } yylex.(*Parser).setFreeFloating($$, token.Name, $5.Tokens) yylex.(*Parser).setFreeFloating($$, token.ParamList, $7.Tokens) - if $8 != nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $8.GetNode().Tokens[token.Colon]); delete($8.GetNode().Tokens, token.Colon) - } yylex.(*Parser).setFreeFloating($$, token.ReturnType, $9.Tokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $11.Tokens) @@ -2286,7 +2283,7 @@ return_type: $$ = $2; // save comments - yylex.(*Parser).setFreeFloating($$, token.Colon, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, append($1.Tokens, $$.GetNode().Tokens[token.Start]...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2540,9 +2537,6 @@ class_statement: } yylex.(*Parser).setFreeFloating($$, token.Name, $6.Tokens) yylex.(*Parser).setFreeFloating($$, token.ParameterList, $8.Tokens) - if $9 != nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $9.GetNode().Tokens[token.Colon]); delete($9.GetNode().Tokens, token.Colon) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4150,9 +4144,6 @@ inline_function: yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.Tokens) } yylex.(*Parser).setFreeFloating($$, token.ParameterList, $6.Tokens) - if $8 != nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.LexicalVars, $8.GetNode().Tokens[token.Colon]); delete($8.GetNode().Tokens, token.Colon) - } yylex.(*Parser).setFreeFloating($$, token.ReturnType, $9.Tokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $11.Tokens) @@ -4182,9 +4173,6 @@ inline_function: yylex.(*Parser).setFreeFloating($$, token.Ampersand, $3.Tokens) }; yylex.(*Parser).setFreeFloating($$, token.ParameterList, $5.Tokens) - if $6 != nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $6.GetNode().Tokens[token.Colon]); delete($6.GetNode().Tokens, token.Colon) - }; yylex.(*Parser).setFreeFloating($$, token.ReturnType, $8.Tokens) // normalize diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index dd06f0f..6fd54bc 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -1409,7 +1409,7 @@ func (p *Printer) printExprArrowFunction(n ast.Vertex) { p.printFreeFloating(nn, token.Params) if nn.ReturnType != nil { - io.WriteString(p.w, ":") + p.bufStart = ":" p.Print(nn.ReturnType) } p.printFreeFloating(nn, token.ReturnType) @@ -1505,7 +1505,7 @@ func (p *Printer) printExprClosure(n ast.Vertex) { p.printFreeFloating(nn, token.LexicalVars) if nn.ReturnType != nil { - io.WriteString(p.w, ":") + p.bufStart = ":" p.Print(nn.ReturnType) } p.printFreeFloating(nn, token.ReturnType) @@ -2285,7 +2285,7 @@ func (p *Printer) printStmtClassMethod(n ast.Vertex) { p.printFreeFloating(nn, token.Params) if nn.ReturnType != nil { - io.WriteString(p.w, ":") + p.bufStart = ":" p.Print(nn.ReturnType) } @@ -2703,7 +2703,7 @@ func (p *Printer) printStmtFunction(n ast.Vertex) { p.printFreeFloating(nn, token.Params) if nn.ReturnType != nil { - io.WriteString(p.w, ":") + p.bufStart = ":" p.Print(nn.ReturnType) } p.printFreeFloating(nn, token.ReturnType) diff --git a/pkg/token/position.go b/pkg/token/position.go index 1a3b02d..28f7802 100644 --- a/pkg/token/position.go +++ b/pkg/token/position.go @@ -6,7 +6,6 @@ type Position int const ( Start Position = iota End - Colon SemiColon AltEnd Dollar diff --git a/pkg/token/position_string.go b/pkg/token/position_string.go index a2f713a..ef682f8 100644 --- a/pkg/token/position_string.go +++ b/pkg/token/position_string.go @@ -10,84 +10,83 @@ func _() { var x [1]struct{} _ = x[Start-0] _ = x[End-1] - _ = x[Colon-2] - _ = x[SemiColon-3] - _ = x[AltEnd-4] - _ = x[Dollar-5] - _ = x[Ampersand-6] - _ = x[Name-7] - _ = x[Prefix-8] - _ = x[Key-9] - _ = x[Var-10] - _ = x[UseType-11] - _ = x[ReturnType-12] - _ = x[OptionalType-13] - _ = x[CaseSeparator-14] - _ = x[LexicalVars-15] - _ = x[Params-16] - _ = x[Ref-17] - _ = x[Cast-18] - _ = x[Expr-19] - _ = x[InitExpr-20] - _ = x[CondExpr-21] - _ = x[IncExpr-22] - _ = x[True-23] - _ = x[Cond-24] - _ = x[HaltCompiller-25] - _ = x[Namespace-26] - _ = x[Static-27] - _ = x[Class-28] - _ = x[Use-29] - _ = x[While-30] - _ = x[For-31] - _ = x[Switch-32] - _ = x[Break-33] - _ = x[Foreach-34] - _ = x[Declare-35] - _ = x[Label-36] - _ = x[Finally-37] - _ = x[List-38] - _ = x[Default-39] - _ = x[If-40] - _ = x[ElseIf-41] - _ = x[Else-42] - _ = x[Variadic-43] - _ = x[Function-44] - _ = x[DoubleArrow-45] - _ = x[Alias-46] - _ = x[As-47] - _ = x[Equal-48] - _ = x[Exit-49] - _ = x[Array-50] - _ = x[Isset-51] - _ = x[Empty-52] - _ = x[Eval-53] - _ = x[Echo-54] - _ = x[Try-55] - _ = x[Catch-56] - _ = x[Unset-57] - _ = x[Stmts-58] - _ = x[VarList-59] - _ = x[ConstList-60] - _ = x[NameList-61] - _ = x[ParamList-62] - _ = x[ModifierList-63] - _ = x[ArrayPairList-64] - _ = x[CaseListStart-65] - _ = x[CaseListEnd-66] - _ = x[ArgumentList-67] - _ = x[PropertyList-68] - _ = x[ParameterList-69] - _ = x[AdaptationList-70] - _ = x[LexicalVarList-71] - _ = x[UseDeclarationList-72] - _ = x[OpenParenthesisToken-73] - _ = x[CloseParenthesisToken-74] + _ = x[SemiColon-2] + _ = x[AltEnd-3] + _ = x[Dollar-4] + _ = x[Ampersand-5] + _ = x[Name-6] + _ = x[Prefix-7] + _ = x[Key-8] + _ = x[Var-9] + _ = x[UseType-10] + _ = x[ReturnType-11] + _ = x[OptionalType-12] + _ = x[CaseSeparator-13] + _ = x[LexicalVars-14] + _ = x[Params-15] + _ = x[Ref-16] + _ = x[Cast-17] + _ = x[Expr-18] + _ = x[InitExpr-19] + _ = x[CondExpr-20] + _ = x[IncExpr-21] + _ = x[True-22] + _ = x[Cond-23] + _ = x[HaltCompiller-24] + _ = x[Namespace-25] + _ = x[Static-26] + _ = x[Class-27] + _ = x[Use-28] + _ = x[While-29] + _ = x[For-30] + _ = x[Switch-31] + _ = x[Break-32] + _ = x[Foreach-33] + _ = x[Declare-34] + _ = x[Label-35] + _ = x[Finally-36] + _ = x[List-37] + _ = x[Default-38] + _ = x[If-39] + _ = x[ElseIf-40] + _ = x[Else-41] + _ = x[Variadic-42] + _ = x[Function-43] + _ = x[DoubleArrow-44] + _ = x[Alias-45] + _ = x[As-46] + _ = x[Equal-47] + _ = x[Exit-48] + _ = x[Array-49] + _ = x[Isset-50] + _ = x[Empty-51] + _ = x[Eval-52] + _ = x[Echo-53] + _ = x[Try-54] + _ = x[Catch-55] + _ = x[Unset-56] + _ = x[Stmts-57] + _ = x[VarList-58] + _ = x[ConstList-59] + _ = x[NameList-60] + _ = x[ParamList-61] + _ = x[ModifierList-62] + _ = x[ArrayPairList-63] + _ = x[CaseListStart-64] + _ = x[CaseListEnd-65] + _ = x[ArgumentList-66] + _ = x[PropertyList-67] + _ = x[ParameterList-68] + _ = x[AdaptationList-69] + _ = x[LexicalVarList-70] + _ = x[UseDeclarationList-71] + _ = x[OpenParenthesisToken-72] + _ = x[CloseParenthesisToken-73] } -const _Position_name = "StartEndColonSemiColonAltEndDollarAmpersandNamePrefixKeyVarUseTypeReturnTypeOptionalTypeCaseSeparatorLexicalVarsParamsRefCastExprInitExprCondExprIncExprTrueCondHaltCompillerNamespaceStaticClassUseWhileForSwitchBreakForeachDeclareLabelFinallyListDefaultIfElseIfElseVariadicFunctionDoubleArrowAliasAsEqualExitArrayIssetEmptyEvalEchoTryCatchUnsetStmtsVarListConstListNameListParamListModifierListArrayPairListCaseListStartCaseListEndArgumentListPropertyListParameterListAdaptationListLexicalVarListUseDeclarationListOpenParenthesisTokenCloseParenthesisToken" +const _Position_name = "StartEndSemiColonAltEndDollarAmpersandNamePrefixKeyVarUseTypeReturnTypeOptionalTypeCaseSeparatorLexicalVarsParamsRefCastExprInitExprCondExprIncExprTrueCondHaltCompillerNamespaceStaticClassUseWhileForSwitchBreakForeachDeclareLabelFinallyListDefaultIfElseIfElseVariadicFunctionDoubleArrowAliasAsEqualExitArrayIssetEmptyEvalEchoTryCatchUnsetStmtsVarListConstListNameListParamListModifierListArrayPairListCaseListStartCaseListEndArgumentListPropertyListParameterListAdaptationListLexicalVarListUseDeclarationListOpenParenthesisTokenCloseParenthesisToken" -var _Position_index = [...]uint16{0, 5, 8, 13, 22, 28, 34, 43, 47, 53, 56, 59, 66, 76, 88, 101, 112, 118, 121, 125, 129, 137, 145, 152, 156, 160, 173, 182, 188, 193, 196, 201, 204, 210, 215, 222, 229, 234, 241, 245, 252, 254, 260, 264, 272, 280, 291, 296, 298, 303, 307, 312, 317, 322, 326, 330, 333, 338, 343, 348, 355, 364, 372, 381, 393, 406, 419, 430, 442, 454, 467, 481, 495, 513, 533, 554} +var _Position_index = [...]uint16{0, 5, 8, 17, 23, 29, 38, 42, 48, 51, 54, 61, 71, 83, 96, 107, 113, 116, 120, 124, 132, 140, 147, 151, 155, 168, 177, 183, 188, 191, 196, 199, 205, 210, 217, 224, 229, 236, 240, 247, 249, 255, 259, 267, 275, 286, 291, 293, 298, 302, 307, 312, 317, 321, 325, 328, 333, 338, 343, 350, 359, 367, 376, 388, 401, 414, 425, 437, 449, 462, 476, 490, 508, 528, 549} func (i Position) String() string { if i < 0 || i >= Position(len(_Position_index)-1) {