diff --git a/internal/php5/php5.go b/internal/php5/php5.go index ad07c76..199faec 100644 Binary files a/internal/php5/php5.go and b/internal/php5/php5.go differ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index d801635..0e7e6fa 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -2060,19 +2060,24 @@ parameter: } } - $$ = &ast.Parameter{ast.Node{}, $1, variable, nil} - + pos := position.NewTokenPosition($4) if $1 != nil { - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) + pos = position.NewNodeTokenPosition($1, $4) } else if $2 != nil { - $$.GetNode().Position = position.NewTokensPosition($2, $4) + pos = position.NewTokensPosition($2, $4) } else if $3 != nil { - $$.GetNode().Position = position.NewTokensPosition($3, $4) - } else { - $$.GetNode().Position = position.NewTokenPosition($4) + pos = position.NewTokensPosition($3, $4) + } + + $$ = &ast.Parameter{ + Node: ast.Node{ + Position: pos, + }, + Type: $1, + Var: variable, } } - | optional_class_type is_reference is_variadic T_VARIABLE '=' static_scalar + | optional_class_type is_reference is_variadic T_VARIABLE '=' expr { identifier := &ast.Identifier{ Node: ast.Node{ @@ -2108,16 +2113,23 @@ parameter: } } - $$ = &ast.Parameter{ast.Node{}, $1, variable, $6} - + pos := position.NewTokenNodePosition($4, $6) if $1 != nil { - $$.GetNode().Position = position.NewNodesPosition($1, $6) + pos = position.NewNodesPosition($1, $6) } else if $2 != nil { - $$.GetNode().Position = position.NewTokenNodePosition($2, $6) + pos = position.NewTokenNodePosition($2, $6) } else if $3 != nil { - $$.GetNode().Position = position.NewTokenNodePosition($3, $6) - } else { - $$.GetNode().Position = position.NewTokenNodePosition($4, $6) + pos = position.NewTokenNodePosition($3, $6) + } + + $$ = &ast.Parameter{ + Node: ast.Node{ + Position: pos, + }, + Type: $1, + Var: variable, + EqualTkn: $5, + DefaultValue: $6, } } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index a3ed309..62c54a9 100644 Binary files a/internal/php7/php7.go and b/internal/php7/php7.go differ diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 602859b..586a9aa 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1884,16 +1884,21 @@ parameter: } } - $$ = &ast.Parameter{ast.Node{}, $1, variable, nil} - + pos := position.NewTokenPosition($4) if $1 != nil { - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) + pos = position.NewNodeTokenPosition($1, $4) } else if $2 != nil { - $$.GetNode().Position = position.NewTokensPosition($2, $4) + pos = position.NewTokensPosition($2, $4) } else if $3 != nil { - $$.GetNode().Position = position.NewTokensPosition($3, $4) - } else { - $$.GetNode().Position = position.NewTokenPosition($4) + pos = position.NewTokensPosition($3, $4) + } + + $$ = &ast.Parameter{ + Node: ast.Node{ + Position: pos, + }, + Type: $1, + Var: variable, } } | optional_type is_reference is_variadic T_VARIABLE '=' expr @@ -1932,16 +1937,23 @@ parameter: } } - $$ = &ast.Parameter{ast.Node{}, $1, variable, $6} - + pos := position.NewTokenNodePosition($4, $6) if $1 != nil { - $$.GetNode().Position = position.NewNodesPosition($1, $6) + pos = position.NewNodesPosition($1, $6) } else if $2 != nil { - $$.GetNode().Position = position.NewTokenNodePosition($2, $6) + pos = position.NewTokenNodePosition($2, $6) } else if $3 != nil { - $$.GetNode().Position = position.NewTokenNodePosition($3, $6) - } else { - $$.GetNode().Position = position.NewTokenNodePosition($4, $6) + pos = position.NewTokenNodePosition($3, $6) + } + + $$ = &ast.Parameter{ + Node: ast.Node{ + Position: pos, + }, + Type: $1, + Var: variable, + EqualTkn: $5, + DefaultValue: $6, } } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 5242bf6..8d4b885 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -68,6 +68,7 @@ type Parameter struct { Node Type Vertex Var Vertex + EqualTkn *token.Token DefaultValue Vertex }