refactoring: remove "StmtTraitMethodRef" node
This commit is contained in:
@@ -824,19 +824,6 @@ func (v *Dumper) StmtTrait(n *ast.StmtTrait) {
|
||||
v.print(v.indent, "},\n")
|
||||
}
|
||||
|
||||
func (v *Dumper) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) {
|
||||
v.print(0, "&ast.StmtTraitMethodRef{\n")
|
||||
v.indent++
|
||||
|
||||
v.dumpPosition(n.Position)
|
||||
v.dumpVertex("Trait", n.Trait)
|
||||
v.dumpToken("DoubleColonTkn", n.DoubleColonTkn)
|
||||
v.dumpVertex("Method", n.Method)
|
||||
|
||||
v.indent--
|
||||
v.print(v.indent, "},\n")
|
||||
}
|
||||
|
||||
func (v *Dumper) StmtTraitUse(n *ast.StmtTraitUse) {
|
||||
v.print(0, "&ast.StmtTraitUse{\n")
|
||||
v.indent++
|
||||
@@ -859,7 +846,9 @@ func (v *Dumper) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) {
|
||||
v.indent++
|
||||
|
||||
v.dumpPosition(n.Position)
|
||||
v.dumpVertex("Ref", n.Ref)
|
||||
v.dumpVertex("Trait", n.Trait)
|
||||
v.dumpToken("DoubleColonTkn", n.DoubleColonTkn)
|
||||
v.dumpVertex("Method", n.Method)
|
||||
v.dumpToken("AsTkn", n.AsTkn)
|
||||
v.dumpVertex("Modifier", n.Modifier)
|
||||
v.dumpVertex("Alias", n.Alias)
|
||||
@@ -874,7 +863,9 @@ func (v *Dumper) StmtTraitUsePrecedence(n *ast.StmtTraitUsePrecedence) {
|
||||
v.indent++
|
||||
|
||||
v.dumpPosition(n.Position)
|
||||
v.dumpVertex("Ref", n.Ref)
|
||||
v.dumpVertex("Trait", n.Trait)
|
||||
v.dumpToken("DoubleColonTkn", n.DoubleColonTkn)
|
||||
v.dumpVertex("Method", n.Method)
|
||||
v.dumpToken("InsteadofTkn", n.InsteadofTkn)
|
||||
v.dumpVertexList("Insteadof", n.Insteadof)
|
||||
v.dumpTokenList("SeparatorTkns", n.SeparatorTkns)
|
||||
|
||||
@@ -858,15 +858,6 @@ func (f *formatter) StmtTrait(n *ast.StmtTrait) {
|
||||
n.CloseCurlyBracketTkn = f.newToken('}', []byte("}"))
|
||||
}
|
||||
|
||||
func (f *formatter) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) {
|
||||
if n.Trait != nil {
|
||||
n.Trait.Accept(f)
|
||||
n.DoubleColonTkn = f.newToken(token.T_PAAMAYIM_NEKUDOTAYIM, []byte("::"))
|
||||
}
|
||||
|
||||
n.Method.Accept(f)
|
||||
}
|
||||
|
||||
func (f *formatter) StmtTraitUse(n *ast.StmtTraitUse) {
|
||||
n.UseTkn = f.newToken(token.T_USE, []byte("use"))
|
||||
f.addFreeFloating(token.T_WHITESPACE, []byte(" "))
|
||||
@@ -897,7 +888,12 @@ func (f *formatter) StmtTraitUse(n *ast.StmtTraitUse) {
|
||||
}
|
||||
|
||||
func (f *formatter) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) {
|
||||
n.Ref.Accept(f)
|
||||
if n.Trait != nil {
|
||||
n.Trait.Accept(f)
|
||||
n.DoubleColonTkn = f.newToken(token.T_PAAMAYIM_NEKUDOTAYIM, []byte("::"))
|
||||
}
|
||||
|
||||
n.Method.Accept(f)
|
||||
f.addFreeFloating(token.T_WHITESPACE, []byte(" "))
|
||||
n.AsTkn = f.newToken(token.T_AS, []byte("as"))
|
||||
|
||||
@@ -915,7 +911,12 @@ func (f *formatter) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) {
|
||||
}
|
||||
|
||||
func (f *formatter) StmtTraitUsePrecedence(n *ast.StmtTraitUsePrecedence) {
|
||||
n.Ref.Accept(f)
|
||||
if n.Trait != nil {
|
||||
n.Trait.Accept(f)
|
||||
n.DoubleColonTkn = f.newToken(token.T_PAAMAYIM_NEKUDOTAYIM, []byte("::"))
|
||||
}
|
||||
|
||||
n.Method.Accept(f)
|
||||
f.addFreeFloating(token.T_WHITESPACE, []byte(" "))
|
||||
n.InsteadofTkn = f.newToken(token.T_INSTEADOF, []byte("insteadof"))
|
||||
f.addFreeFloating(token.T_WHITESPACE, []byte(" "))
|
||||
|
||||
@@ -2360,59 +2360,6 @@ func TestFormatter_StmtTrait(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_StmtTraitMethodRef(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitMethodRef{
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
}
|
||||
|
||||
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||
n.Accept(f)
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n.Accept(p)
|
||||
|
||||
expected := `foo`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_StmtTraitMethodRef_Trait(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitMethodRef{
|
||||
Trait: &ast.NameName{
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
}
|
||||
|
||||
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||
n.Accept(f)
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n.Accept(p)
|
||||
|
||||
expected := `foo::bar`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_StmtTraitUse(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
@@ -2471,10 +2418,8 @@ func TestFormatter_StmtTraitUse_Adaptations(t *testing.T) {
|
||||
},
|
||||
Adaptations: []ast.Vertex{
|
||||
&ast.StmtTraitUseAlias{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Alias: &ast.Identifier{
|
||||
Value: []byte("baz"),
|
||||
@@ -2503,10 +2448,8 @@ func TestFormatter_StmtTraitUseAlias(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitUseAlias{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Modifier: &ast.Identifier{
|
||||
Value: []byte("public"),
|
||||
@@ -2530,14 +2473,48 @@ func TestFormatter_StmtTraitUseAlias(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_StmtTraitUseAlias_Trait(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitUseAlias{
|
||||
Trait: &ast.NameName{
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
Modifier: &ast.Identifier{
|
||||
Value: []byte("public"),
|
||||
},
|
||||
Alias: &ast.Identifier{
|
||||
Value: []byte("baz"),
|
||||
},
|
||||
}
|
||||
|
||||
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||
n.Accept(f)
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n.Accept(p)
|
||||
|
||||
expected := `foo::bar as public baz;`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_StmtTraitUseAlias_Alias(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitUseAlias{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Alias: &ast.Identifier{
|
||||
Value: []byte("bar"),
|
||||
@@ -2562,10 +2539,8 @@ func TestFormatter_StmtTraitUseAlias_Modifier(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitUseAlias{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Modifier: &ast.Identifier{
|
||||
Value: []byte("public"),
|
||||
@@ -2590,10 +2565,8 @@ func TestFormatter_StmtTraitUsePrecedence(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitUsePrecedence{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
Insteadof: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
@@ -2627,6 +2600,45 @@ func TestFormatter_StmtTraitUsePrecedence(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_StmtTraitUsePrecedence_Trait(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.StmtTraitUsePrecedence{
|
||||
Trait: &ast.NameName{
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Value: []byte("foo"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Method: &ast.Identifier{
|
||||
Value: []byte("bar"),
|
||||
},
|
||||
Insteadof: []ast.Vertex{
|
||||
&ast.NameName{
|
||||
Parts: []ast.Vertex{
|
||||
&ast.NameNamePart{
|
||||
Value: []byte("baz"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||
n.Accept(f)
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n.Accept(p)
|
||||
|
||||
expected := `foo::bar insteadof baz;`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_StmtTry(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ func (nsr *NamespaceResolver) StmtTraitUse(n *ast.StmtTraitUse) {
|
||||
for _, a := range n.Adaptations {
|
||||
switch aa := a.(type) {
|
||||
case *ast.StmtTraitUsePrecedence:
|
||||
refTrait := aa.Ref.(*ast.StmtTraitMethodRef).Trait
|
||||
refTrait := aa.Trait
|
||||
if refTrait != nil {
|
||||
nsr.ResolveName(refTrait, "")
|
||||
}
|
||||
@@ -196,7 +196,7 @@ func (nsr *NamespaceResolver) StmtTraitUse(n *ast.StmtTraitUse) {
|
||||
}
|
||||
|
||||
case *ast.StmtTraitUseAlias:
|
||||
refTrait := aa.Ref.(*ast.StmtTraitMethodRef).Trait
|
||||
refTrait := aa.Trait
|
||||
if refTrait != nil {
|
||||
nsr.ResolveName(refTrait, "")
|
||||
}
|
||||
|
||||
@@ -356,18 +356,14 @@ func TestResolveTraitUse(t *testing.T) {
|
||||
},
|
||||
Adaptations: []ast.Vertex{
|
||||
&ast.StmtTraitUsePrecedence{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Trait: fullyQualifiedNameB,
|
||||
Method: &ast.Identifier{Value: []byte("foo")},
|
||||
},
|
||||
Trait: fullyQualifiedNameB,
|
||||
Method: &ast.Identifier{Value: []byte("foo")},
|
||||
Insteadof: []ast.Vertex{fullyQualifiedNameBC},
|
||||
},
|
||||
&ast.StmtTraitUseAlias{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Trait: relativeNameBC,
|
||||
Method: &ast.Identifier{Value: []byte("foo")},
|
||||
},
|
||||
Alias: &ast.Identifier{Value: []byte("bar")},
|
||||
Trait: relativeNameBC,
|
||||
Method: &ast.Identifier{Value: []byte("foo")},
|
||||
Alias: &ast.Identifier{Value: []byte("bar")},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -194,10 +194,6 @@ func (v *Null) StmtTrait(_ *ast.StmtTrait) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
func (v *Null) StmtTraitMethodRef(_ *ast.StmtTraitMethodRef) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
func (v *Null) StmtTraitUse(_ *ast.StmtTraitUse) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@@ -518,12 +518,6 @@ func (p *printer) StmtTrait(n *ast.StmtTrait) {
|
||||
p.printToken(n.CloseCurlyBracketTkn, []byte("}"))
|
||||
}
|
||||
|
||||
func (p *printer) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) {
|
||||
p.printNode(n.Trait)
|
||||
p.printToken(n.DoubleColonTkn, p.ifNode(n.Trait, []byte("::")))
|
||||
p.printNode(n.Method)
|
||||
}
|
||||
|
||||
func (p *printer) StmtTraitUse(n *ast.StmtTraitUse) {
|
||||
p.printToken(n.UseTkn, []byte("use"))
|
||||
p.printSeparatedList(n.Traits, n.SeparatorTkns, []byte(","))
|
||||
@@ -534,7 +528,9 @@ func (p *printer) StmtTraitUse(n *ast.StmtTraitUse) {
|
||||
}
|
||||
|
||||
func (p *printer) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) {
|
||||
p.printNode(n.Ref)
|
||||
p.printNode(n.Trait)
|
||||
p.printToken(n.DoubleColonTkn, p.ifNode(n.Trait, []byte("::")))
|
||||
p.printNode(n.Method)
|
||||
p.printToken(n.AsTkn, []byte("as"))
|
||||
p.printNode(n.Modifier)
|
||||
p.printNode(n.Alias)
|
||||
@@ -542,7 +538,9 @@ func (p *printer) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) {
|
||||
}
|
||||
|
||||
func (p *printer) StmtTraitUsePrecedence(n *ast.StmtTraitUsePrecedence) {
|
||||
p.printNode(n.Ref)
|
||||
p.printNode(n.Trait)
|
||||
p.printToken(n.DoubleColonTkn, p.ifNode(n.Trait, []byte("::")))
|
||||
p.printNode(n.Method)
|
||||
p.printToken(n.InsteadofTkn, []byte("insteadof"))
|
||||
p.printSeparatedList(n.Insteadof, n.SeparatorTkns, []byte(","))
|
||||
p.printToken(n.SemiColonTkn, []byte(";"))
|
||||
|
||||
@@ -4452,50 +4452,13 @@ func TestPrinterPrintStmtThrow(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrinterPrintStmtTraitMethodRef(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n := &ast.StmtTraitMethodRef{
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
}
|
||||
n.Accept(p)
|
||||
|
||||
expected := `a`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrinterPrintStmtTraitMethodRefFull(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n := &ast.StmtTraitMethodRef{
|
||||
Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
}
|
||||
n.Accept(p)
|
||||
|
||||
expected := `Foo::a`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrinterPrintStmtTraitUseAlias(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n := &ast.StmtTraitUseAlias{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
},
|
||||
Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
Modifier: &ast.Identifier{Value: []byte("public")},
|
||||
Alias: &ast.Identifier{Value: []byte("b")},
|
||||
}
|
||||
@@ -4514,10 +4477,8 @@ func TestPrinterPrintStmtTraitUsePrecedence(t *testing.T) {
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n := &ast.StmtTraitUsePrecedence{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
},
|
||||
Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
Insteadof: []ast.Vertex{
|
||||
&ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
|
||||
&ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
|
||||
@@ -4564,11 +4525,9 @@ func TestPrinterPrintStmtTraitAdaptations(t *testing.T) {
|
||||
},
|
||||
Adaptations: []ast.Vertex{
|
||||
&ast.StmtTraitUseAlias{
|
||||
Ref: &ast.StmtTraitMethodRef{
|
||||
Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
},
|
||||
Alias: &ast.Identifier{Value: []byte("b")},
|
||||
Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
|
||||
Method: &ast.Identifier{Value: []byte("a")},
|
||||
Alias: &ast.Identifier{Value: []byte("b")},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user