refactoring: update ast structure of "Class", "Interface" and "Trait" nodes
This commit is contained in:
@@ -9945,74 +9945,66 @@ func TestStmtClass_ClassExtends(t *testing.T) {
|
||||
},
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Extends: &ast.StmtClassExtends{
|
||||
ExtendsTkn: &token.Token{
|
||||
ID: token.T_EXTENDS,
|
||||
Value: []byte("extends"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 19,
|
||||
EndPos: 30,
|
||||
EndPos: 26,
|
||||
},
|
||||
ExtendTkn: &token.Token{
|
||||
ID: token.T_EXTENDS,
|
||||
Value: []byte("extends"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 19,
|
||||
EndPos: 26,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 18,
|
||||
EndPos: 19,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 18,
|
||||
EndPos: 19,
|
||||
},
|
||||
},
|
||||
},
|
||||
ClassName: &ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 27,
|
||||
EndPos: 30,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
},
|
||||
Extends: &ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 27,
|
||||
EndPos: 30,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 27,
|
||||
EndPos: 30,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 27,
|
||||
EndPos: 30,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 27,
|
||||
EndPos: 30,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 26,
|
||||
EndPos: 27,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 26,
|
||||
EndPos: 27,
|
||||
},
|
||||
},
|
||||
},
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -10187,75 +10179,67 @@ func TestStmtClass_ClassImplement(t *testing.T) {
|
||||
},
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Implements: &ast.StmtClassImplements{
|
||||
ImplementsTkn: &token.Token{
|
||||
ID: token.T_IMPLEMENTS,
|
||||
Value: []byte("implements"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 19,
|
||||
EndPos: 33,
|
||||
EndPos: 29,
|
||||
},
|
||||
ImplementsTkn: &token.Token{
|
||||
ID: token.T_IMPLEMENTS,
|
||||
Value: []byte("implements"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 19,
|
||||
EndPos: 29,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 18,
|
||||
EndPos: 19,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
InterfaceNames: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
StartPos: 18,
|
||||
EndPos: 19,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
},
|
||||
},
|
||||
},
|
||||
Implements: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 29,
|
||||
EndPos: 30,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 29,
|
||||
EndPos: 30,
|
||||
},
|
||||
},
|
||||
},
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -10431,129 +10415,121 @@ func TestStmtClass_ClassImplements(t *testing.T) {
|
||||
},
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Implements: &ast.StmtClassImplements{
|
||||
ImplementsTkn: &token.Token{
|
||||
ID: token.T_IMPLEMENTS,
|
||||
Value: []byte("implements"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 19,
|
||||
EndPos: 38,
|
||||
EndPos: 29,
|
||||
},
|
||||
ImplementsTkn: &token.Token{
|
||||
ID: token.T_IMPLEMENTS,
|
||||
Value: []byte("implements"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 19,
|
||||
EndPos: 29,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 18,
|
||||
EndPos: 19,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
InterfaceNames: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
StartPos: 18,
|
||||
EndPos: 19,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
},
|
||||
},
|
||||
},
|
||||
Implements: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 29,
|
||||
EndPos: 30,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 29,
|
||||
EndPos: 30,
|
||||
},
|
||||
},
|
||||
},
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
},
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 35,
|
||||
EndPos: 38,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
},
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 35,
|
||||
EndPos: 38,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 35,
|
||||
EndPos: 38,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("baz"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 35,
|
||||
EndPos: 38,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("baz"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 35,
|
||||
EndPos: 38,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 34,
|
||||
EndPos: 35,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 34,
|
||||
EndPos: 35,
|
||||
},
|
||||
},
|
||||
},
|
||||
Value: []byte("baz"),
|
||||
},
|
||||
Value: []byte("baz"),
|
||||
},
|
||||
},
|
||||
},
|
||||
SeparatorTkns: []*token.Token{
|
||||
{
|
||||
ID: token.ID(44),
|
||||
Value: []byte(","),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 33,
|
||||
EndPos: 34,
|
||||
},
|
||||
},
|
||||
ImplementsSeparatorTkns: []*token.Token{
|
||||
{
|
||||
ID: token.ID(44),
|
||||
Value: []byte(","),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 33,
|
||||
EndPos: 34,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -19076,75 +19052,67 @@ func TestStmtInterface_Extend(t *testing.T) {
|
||||
},
|
||||
Value: []byte("Foo"),
|
||||
},
|
||||
Extends: &ast.StmtInterfaceExtends{
|
||||
ExtendsTkn: &token.Token{
|
||||
ID: token.T_EXTENDS,
|
||||
Value: []byte("extends"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 17,
|
||||
EndPos: 28,
|
||||
EndPos: 24,
|
||||
},
|
||||
ExtendsTkn: &token.Token{
|
||||
ID: token.T_EXTENDS,
|
||||
Value: []byte("extends"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 17,
|
||||
EndPos: 24,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 16,
|
||||
EndPos: 17,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
InterfaceNames: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
StartPos: 16,
|
||||
EndPos: 17,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
},
|
||||
},
|
||||
},
|
||||
Extends: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("Bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("Bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 24,
|
||||
EndPos: 25,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 24,
|
||||
EndPos: 25,
|
||||
},
|
||||
},
|
||||
},
|
||||
Value: []byte("Bar"),
|
||||
},
|
||||
Value: []byte("Bar"),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -19275,129 +19243,121 @@ func TestStmtInterface_Extends(t *testing.T) {
|
||||
},
|
||||
Value: []byte("Foo"),
|
||||
},
|
||||
Extends: &ast.StmtInterfaceExtends{
|
||||
ExtendsTkn: &token.Token{
|
||||
ID: token.T_EXTENDS,
|
||||
Value: []byte("extends"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 17,
|
||||
EndPos: 33,
|
||||
EndPos: 24,
|
||||
},
|
||||
ExtendsTkn: &token.Token{
|
||||
ID: token.T_EXTENDS,
|
||||
Value: []byte("extends"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 17,
|
||||
EndPos: 24,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 16,
|
||||
EndPos: 17,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
InterfaceNames: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
StartPos: 16,
|
||||
EndPos: 17,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
},
|
||||
},
|
||||
},
|
||||
Extends: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("Bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("Bar"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 25,
|
||||
EndPos: 28,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 24,
|
||||
EndPos: 25,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 24,
|
||||
EndPos: 25,
|
||||
},
|
||||
},
|
||||
},
|
||||
Value: []byte("Bar"),
|
||||
},
|
||||
Value: []byte("Bar"),
|
||||
},
|
||||
},
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
},
|
||||
&ast.NameName{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("Baz"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
StringTkn: &token.Token{
|
||||
ID: token.T_STRING,
|
||||
Value: []byte("Baz"),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 30,
|
||||
EndPos: 33,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 29,
|
||||
EndPos: 30,
|
||||
},
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
ID: token.T_WHITESPACE,
|
||||
Value: []byte(" "),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 29,
|
||||
EndPos: 30,
|
||||
},
|
||||
},
|
||||
},
|
||||
Value: []byte("Baz"),
|
||||
},
|
||||
Value: []byte("Baz"),
|
||||
},
|
||||
},
|
||||
},
|
||||
SeparatorTkns: []*token.Token{
|
||||
{
|
||||
ID: token.ID(44),
|
||||
Value: []byte(","),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 28,
|
||||
EndPos: 29,
|
||||
},
|
||||
},
|
||||
ExtendsSeparatorTkns: []*token.Token{
|
||||
{
|
||||
ID: token.ID(44),
|
||||
Value: []byte(","),
|
||||
Position: &position.Position{
|
||||
StartLine: 1,
|
||||
EndLine: 1,
|
||||
StartPos: 28,
|
||||
EndPos: 29,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
928
internal/php5/php5.go
generated
928
internal/php5/php5.go
generated
File diff suppressed because it is too large
Load Diff
@@ -1280,36 +1280,55 @@ unticked_class_declaration_statement:
|
||||
{
|
||||
switch n := $1.(type) {
|
||||
case *ast.StmtClass :
|
||||
n.Position = yylex.(*Parser).builder.NewNodeTokenPosition($1, $7)
|
||||
n.ClassName = &ast.Identifier{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition($2),
|
||||
className := &ast.Identifier{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition($2),
|
||||
IdentifierTkn: $2,
|
||||
Value: $2.Value,
|
||||
}
|
||||
n.Extends = $3
|
||||
n.Implements = $4
|
||||
n.OpenCurlyBracketTkn = $5
|
||||
n.Stmts = $6
|
||||
|
||||
n.Position = yylex.(*Parser).builder.NewNodeTokenPosition($1, $7)
|
||||
n.ClassName = className
|
||||
n.OpenCurlyBracketTkn = $5
|
||||
n.Stmts = $6
|
||||
n.CloseCurlyBracketTkn = $7
|
||||
|
||||
if $3 != nil {
|
||||
n.ExtendsTkn = $3.(*ast.StmtClass).ExtendsTkn
|
||||
n.Extends = $3.(*ast.StmtClass).Extends
|
||||
}
|
||||
|
||||
if $4 != nil {
|
||||
n.ImplementsTkn = $4.(*ast.StmtClass).ImplementsTkn
|
||||
n.Implements = $4.(*ast.StmtClass).Implements
|
||||
n.ImplementsSeparatorTkns = $4.(*ast.StmtClass).ImplementsSeparatorTkns
|
||||
}
|
||||
case *ast.StmtTrait :
|
||||
n.Position = yylex.(*Parser).builder.NewNodeTokenPosition($1, $7)
|
||||
n.TraitName = &ast.Identifier{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition($2),
|
||||
traitName := &ast.Identifier{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition($2),
|
||||
IdentifierTkn: $2,
|
||||
Value: $2.Value,
|
||||
}
|
||||
n.Extends = $3
|
||||
n.Implements = $4
|
||||
n.OpenCurlyBracketTkn = $5
|
||||
n.Stmts = $6
|
||||
|
||||
n.Position = yylex.(*Parser).builder.NewNodeTokenPosition($1, $7)
|
||||
n.TraitName = traitName
|
||||
n.OpenCurlyBracketTkn = $5
|
||||
n.Stmts = $6
|
||||
n.CloseCurlyBracketTkn = $7
|
||||
|
||||
if $3 != nil {
|
||||
yylex.(*Parser).errHandlerFunc(errors.NewError("A trait cannot extend a class. Traits can only be composed from other traits with the 'use' keyword", $3.(*ast.StmtClass).Position))
|
||||
}
|
||||
|
||||
if $4 != nil {
|
||||
yylex.(*Parser).errHandlerFunc(errors.NewError("A trait cannot implement an interface", $4.(*ast.StmtClass).Position))
|
||||
}
|
||||
}
|
||||
|
||||
$$ = $1
|
||||
}
|
||||
| interface_entry T_STRING interface_extends_list '{' class_statement_list '}'
|
||||
{
|
||||
$$ = &ast.StmtInterface{
|
||||
iface := &ast.StmtInterface{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition($1, $6),
|
||||
InterfaceTkn: $1,
|
||||
InterfaceName: &ast.Identifier{
|
||||
@@ -1317,11 +1336,18 @@ unticked_class_declaration_statement:
|
||||
IdentifierTkn: $2,
|
||||
Value: $2.Value,
|
||||
},
|
||||
Extends: $3,
|
||||
OpenCurlyBracketTkn: $4,
|
||||
Stmts: $5,
|
||||
CloseCurlyBracketTkn: $6,
|
||||
}
|
||||
|
||||
if $3 != nil {
|
||||
iface.ExtendsTkn = $3.(*ast.StmtInterface).ExtendsTkn
|
||||
iface.Extends = $3.(*ast.StmtInterface).Extends
|
||||
iface.ExtendsSeparatorTkns = $3.(*ast.StmtInterface).ExtendsSeparatorTkns
|
||||
}
|
||||
|
||||
$$ = iface
|
||||
}
|
||||
;
|
||||
|
||||
@@ -1378,10 +1404,10 @@ extends_from:
|
||||
}
|
||||
| T_EXTENDS fully_qualified_class_name
|
||||
{
|
||||
$$ = &ast.StmtClassExtends{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
||||
ExtendTkn: $1,
|
||||
ClassName: $2,
|
||||
$$ = &ast.StmtClass{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
||||
ExtendsTkn: $1,
|
||||
Extends: $2,
|
||||
}
|
||||
}
|
||||
;
|
||||
@@ -1400,11 +1426,11 @@ interface_extends_list:
|
||||
}
|
||||
| T_EXTENDS interface_list
|
||||
{
|
||||
$$ = &ast.StmtInterfaceExtends{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodeListPosition($1, $2.(*ast.ParserSeparatedList).Items),
|
||||
ExtendsTkn: $1,
|
||||
InterfaceNames: $2.(*ast.ParserSeparatedList).Items,
|
||||
SeparatorTkns: $2.(*ast.ParserSeparatedList).SeparatorTkns,
|
||||
$$ = &ast.StmtInterface{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodeListPosition($1, $2.(*ast.ParserSeparatedList).Items),
|
||||
ExtendsTkn: $1,
|
||||
Extends: $2.(*ast.ParserSeparatedList).Items,
|
||||
ExtendsSeparatorTkns: $2.(*ast.ParserSeparatedList).SeparatorTkns,
|
||||
};
|
||||
}
|
||||
;
|
||||
@@ -1416,11 +1442,11 @@ implements_list:
|
||||
}
|
||||
| T_IMPLEMENTS interface_list
|
||||
{
|
||||
$$ = &ast.StmtClassImplements{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodeListPosition($1, $2.(*ast.ParserSeparatedList).Items),
|
||||
ImplementsTkn: $1,
|
||||
InterfaceNames: $2.(*ast.ParserSeparatedList).Items,
|
||||
SeparatorTkns: $2.(*ast.ParserSeparatedList).SeparatorTkns,
|
||||
$$ = &ast.StmtClass{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodeListPosition($1, $2.(*ast.ParserSeparatedList).Items),
|
||||
ImplementsTkn: $1,
|
||||
Implements: $2.(*ast.ParserSeparatedList).Items,
|
||||
ImplementsSeparatorTkns: $2.(*ast.ParserSeparatedList).SeparatorTkns,
|
||||
};
|
||||
}
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user