Skip to content

Commit

Permalink
ir: merge include+require nodes into ImportExpr (#656)
Browse files Browse the repository at this point in the history
Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>
  • Loading branch information
quasilyte committed Aug 10, 2020
1 parent 05e03b0 commit 2767923
Show file tree
Hide file tree
Showing 14 changed files with 43 additions and 217 deletions.
8 changes: 1 addition & 7 deletions src/ir/freefloating.go
Expand Up @@ -124,10 +124,6 @@ func (n *ExitExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFl

func (n *FunctionCallExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

func (n *IncludeExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

func (n *IncludeOnceExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

func (n *InstanceOfExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

func (n *IssetExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }
Expand All @@ -154,9 +150,7 @@ func (n *PropertyFetchExpr) GetFreeFloating() *freefloating.Collection { return

func (n *ReferenceExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

func (n *RequireExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

func (n *RequireOnceExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }
func (n *ImportExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

func (n *ShellExecExpr) GetFreeFloating() *freefloating.Collection { return &n.FreeFloating }

Expand Down
15 changes: 3 additions & 12 deletions src/ir/get_node_kind.go
Expand Up @@ -67,8 +67,6 @@ const (
KindEvalExpr
KindExitExpr
KindFunctionCallExpr
KindIncludeExpr
KindIncludeOnceExpr
KindInstanceOfExpr
KindIssetExpr
KindListExpr
Expand All @@ -82,8 +80,7 @@ const (
KindPrintExpr
KindPropertyFetchExpr
KindReferenceExpr
KindRequireExpr
KindRequireOnceExpr
KindImportExpr
KindShellExecExpr
KindStaticCallExpr
KindStaticPropertyFetchExpr
Expand Down Expand Up @@ -290,10 +287,6 @@ func GetNodeKind(n Node) NodeKind {
return KindExitExpr
case *FunctionCallExpr:
return KindFunctionCallExpr
case *IncludeExpr:
return KindIncludeExpr
case *IncludeOnceExpr:
return KindIncludeOnceExpr
case *InstanceOfExpr:
return KindInstanceOfExpr
case *IssetExpr:
Expand All @@ -320,10 +313,8 @@ func GetNodeKind(n Node) NodeKind {
return KindPropertyFetchExpr
case *ReferenceExpr:
return KindReferenceExpr
case *RequireExpr:
return KindRequireExpr
case *RequireOnceExpr:
return KindRequireOnceExpr
case *ImportExpr:
return KindImportExpr
case *ShellExecExpr:
return KindShellExecExpr
case *StaticCallExpr:
Expand Down
8 changes: 1 addition & 7 deletions src/ir/get_position.go
Expand Up @@ -128,10 +128,6 @@ func GetPosition(n Node) *position.Position {
return n.Position
case *FunctionCallExpr:
return n.Position
case *IncludeExpr:
return n.Position
case *IncludeOnceExpr:
return n.Position
case *InstanceOfExpr:
return n.Position
case *IssetExpr:
Expand All @@ -158,9 +154,7 @@ func GetPosition(n Node) *position.Position {
return n.Position
case *ReferenceExpr:
return n.Position
case *RequireExpr:
return n.Position
case *RequireOnceExpr:
case *ImportExpr:
return n.Position
case *ShellExecExpr:
return n.Position
Expand Down
29 changes: 4 additions & 25 deletions src/ir/irfmt/printer.go
Expand Up @@ -249,10 +249,6 @@ func (p *PrettyPrinter) printNode(n ir.Node) {
p.printExprExit(n)
case *ir.FunctionCallExpr:
p.printExprFunctionCall(n)
case *ir.IncludeExpr:
p.printExprInclude(n)
case *ir.IncludeOnceExpr:
p.printExprIncludeOnce(n)
case *ir.InstanceOfExpr:
p.printExprInstanceOf(n)
case *ir.IssetExpr:
Expand All @@ -277,10 +273,8 @@ func (p *PrettyPrinter) printNode(n ir.Node) {
p.printExprPropertyFetch(n)
case *ir.ReferenceExpr:
p.printExprReference(n)
case *ir.RequireExpr:
p.printExprRequire(n)
case *ir.RequireOnceExpr:
p.printExprRequireOnce(n)
case *ir.ImportExpr:
p.printExprImport(n)
case *ir.ShellExecExpr:
p.printExprShellExec(n)
case *ir.StaticCallExpr:
Expand Down Expand Up @@ -950,16 +944,6 @@ func (p *PrettyPrinter) printExprFunctionCall(n *ir.FunctionCallExpr) {
io.WriteString(p.w, ")")
}

func (p *PrettyPrinter) printExprInclude(n *ir.IncludeExpr) {
io.WriteString(p.w, "include ")
p.Print(n.Expr)
}

func (p *PrettyPrinter) printExprIncludeOnce(n *ir.IncludeOnceExpr) {
io.WriteString(p.w, "include_once ")
p.Print(n.Expr)
}

func (p *PrettyPrinter) printExprInstanceOf(n *ir.InstanceOfExpr) {
p.Print(n.Expr)
io.WriteString(p.w, " instanceof ")
Expand Down Expand Up @@ -1041,13 +1025,8 @@ func (p *PrettyPrinter) printExprReference(n *ir.ReferenceExpr) {
p.Print(n.Variable)
}

func (p *PrettyPrinter) printExprRequire(n *ir.RequireExpr) {
io.WriteString(p.w, "require ")
p.Print(n.Expr)
}

func (p *PrettyPrinter) printExprRequireOnce(n *ir.RequireOnceExpr) {
io.WriteString(p.w, "require_once ")
func (p *PrettyPrinter) printExprImport(n *ir.ImportExpr) {
io.WriteString(p.w, n.Func+" ")
p.Print(n.Expr)
}

Expand Down
8 changes: 4 additions & 4 deletions src/ir/irfmt/printer_test.go
Expand Up @@ -1542,7 +1542,7 @@ func TestPrintInclude(t *testing.T) {
o := bytes.NewBufferString("")

p := NewPrettyPrinter(o, " ")
p.Print(&ir.IncludeExpr{Expr: &ir.String{Value: "'path'"}})
p.Print(&ir.ImportExpr{Func: "include", Expr: &ir.String{Value: "'path'"}})

expected := `include 'path'`
actual := o.String()
Expand All @@ -1556,7 +1556,7 @@ func TestPrintIncludeOnce(t *testing.T) {
o := bytes.NewBufferString("")

p := NewPrettyPrinter(o, " ")
p.Print(&ir.IncludeOnceExpr{Expr: &ir.String{Value: "'path'"}})
p.Print(&ir.ImportExpr{Func: "include_once", Expr: &ir.String{Value: "'path'"}})

expected := `include_once 'path'`
actual := o.String()
Expand Down Expand Up @@ -1802,7 +1802,7 @@ func TestPrintRequire(t *testing.T) {
o := bytes.NewBufferString("")

p := NewPrettyPrinter(o, " ")
p.Print(&ir.RequireExpr{Expr: &ir.String{Value: "'path'"}})
p.Print(&ir.ImportExpr{Func: "require", Expr: &ir.String{Value: "'path'"}})

expected := `require 'path'`
actual := o.String()
Expand All @@ -1816,7 +1816,7 @@ func TestPrintRequireOnce(t *testing.T) {
o := bytes.NewBufferString("")

p := NewPrettyPrinter(o, " ")
p.Print(&ir.RequireOnceExpr{Expr: &ir.String{Value: "'path'"}})
p.Print(&ir.ImportExpr{Func: "require_once", Expr: &ir.String{Value: "'path'"}})

expected := `require_once 'path'`
actual := o.String()
Expand Down
20 changes: 1 addition & 19 deletions src/ir/irutil/clone.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 3 additions & 27 deletions src/ir/irutil/equal.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 2 additions & 19 deletions src/ir/types.go
Expand Up @@ -436,15 +436,10 @@ type FunctionCallExpr struct {
ArgumentList *ArgumentList
}

type IncludeExpr struct {
FreeFloating freefloating.Collection
Position *position.Position
Expr Node
}

type IncludeOnceExpr struct {
type ImportExpr struct {
FreeFloating freefloating.Collection
Position *position.Position
Func string // "include" "include_once" "require" "require_once"
Expr Node
}

Expand Down Expand Up @@ -532,18 +527,6 @@ type ReferenceExpr struct {
Variable Node
}

type RequireExpr struct {
FreeFloating freefloating.Collection
Position *position.Position
Expr Node
}

type RequireOnceExpr struct {
FreeFloating freefloating.Collection
Position *position.Position
Expr Node
}

type ShellExecExpr struct {
FreeFloating freefloating.Collection
Position *position.Position
Expand Down
32 changes: 1 addition & 31 deletions src/ir/walk.go
Expand Up @@ -763,26 +763,6 @@ func (n *FunctionCallExpr) Walk(v Visitor) {
v.LeaveNode(n)
}

func (n *IncludeExpr) Walk(v Visitor) {
if !v.EnterNode(n) {
return
}
if n.Expr != nil {
n.Expr.Walk(v)
}
v.LeaveNode(n)
}

func (n *IncludeOnceExpr) Walk(v Visitor) {
if !v.EnterNode(n) {
return
}
if n.Expr != nil {
n.Expr.Walk(v)
}
v.LeaveNode(n)
}

func (n *InstanceOfExpr) Walk(v Visitor) {
if !v.EnterNode(n) {
return
Expand Down Expand Up @@ -932,17 +912,7 @@ func (n *ReferenceExpr) Walk(v Visitor) {
v.LeaveNode(n)
}

func (n *RequireExpr) Walk(v Visitor) {
if !v.EnterNode(n) {
return
}
if n.Expr != nil {
n.Expr.Walk(v)
}
v.LeaveNode(n)
}

func (n *RequireOnceExpr) Walk(v Visitor) {
func (n *ImportExpr) Walk(v Visitor) {
if !v.EnterNode(n) {
return
}
Expand Down

0 comments on commit 2767923

Please sign in to comment.