Skip to content

Commit 37ebee1

Browse files
committed
pretty printer: fix printing String, Ternary
1 parent a514fec commit 37ebee1

File tree

2 files changed

+38
-37
lines changed

2 files changed

+38
-37
lines changed

printer/printer.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -512,9 +512,7 @@ func (p *Printer) printScalarDNumber(n node.Node) {
512512
func (p *Printer) printScalarString(n node.Node) {
513513
v := n.(*scalar.String).Value
514514

515-
io.WriteString(p.w, "'")
516515
io.WriteString(p.w, v)
517-
io.WriteString(p.w, "'")
518516
}
519517

520518
func (p *Printer) printScalarEncapsedStringPart(n node.Node) {
@@ -1236,14 +1234,14 @@ func (p *Printer) printExprTernary(n node.Node) {
12361234
p.Print(nn.Condition)
12371235
io.WriteString(p.w, " ?")
12381236

1239-
if nn.IfFalse != nil {
1237+
if nn.IfTrue != nil {
12401238
io.WriteString(p.w, " ")
1241-
p.Print(nn.IfFalse)
1239+
p.Print(nn.IfTrue)
12421240
io.WriteString(p.w, " ")
12431241
}
12441242

12451243
io.WriteString(p.w, ": ")
1246-
p.Print(nn.IfTrue)
1244+
p.Print(nn.IfFalse)
12471245
}
12481246

12491247
func (p *Printer) printExprUnaryMinus(n node.Node) {

printer/printer_test.go

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestPrintParameter(t *testing.T) {
3737
Variadic: true,
3838
VariableType: &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
3939
Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
40-
DefaultValue: &scalar.String{Value: "default"},
40+
DefaultValue: &scalar.String{Value: "'default'"},
4141
})
4242

4343
expected := "\\Foo ...$var = 'default'"
@@ -58,7 +58,7 @@ func TestPrintNullable(t *testing.T) {
5858
Variadic: true,
5959
VariableType: &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
6060
Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
61-
DefaultValue: &scalar.String{Value: "default"},
61+
DefaultValue: &scalar.String{Value: "'default'"},
6262
},
6363
})
6464

@@ -220,10 +220,13 @@ func TestPrintScalarString(t *testing.T) {
220220
o := bytes.NewBufferString("")
221221

222222
p := printer.NewPrinter(o, " ")
223-
p.Print(&scalar.String{Value: "hello world"})
223+
p.Print(&scalar.String{Value: "'hello world'"})
224224

225-
if o.String() != `'hello world'` {
226-
t.Errorf("TestPrintScalarString is failed\n")
225+
expected := `'hello world'`
226+
actual := o.String()
227+
228+
if expected != actual {
229+
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
227230
}
228231
}
229232

@@ -1106,7 +1109,7 @@ func TestPrintExprArrayItemWithKey(t *testing.T) {
11061109
p := printer.NewPrinter(o, " ")
11071110
p.Print(&expr.ArrayItem{
11081111
ByRef: false,
1109-
Key: &scalar.String{Value: "Hello"},
1112+
Key: &scalar.String{Value: "'Hello'"},
11101113
Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}},
11111114
})
11121115

@@ -1143,7 +1146,7 @@ func TestPrintExprArray(t *testing.T) {
11431146
Items: []node.Node{
11441147
&expr.ArrayItem{
11451148
ByRef: false,
1146-
Key: &scalar.String{Value: "Hello"},
1149+
Key: &scalar.String{Value: "'Hello'"},
11471150
Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}},
11481151
},
11491152
&expr.ArrayItem{
@@ -1413,7 +1416,7 @@ func TestPrintInclude(t *testing.T) {
14131416
o := bytes.NewBufferString("")
14141417

14151418
p := printer.NewPrinter(o, " ")
1416-
p.Print(&expr.Include{Expr: &scalar.String{Value: "path"}})
1419+
p.Print(&expr.Include{Expr: &scalar.String{Value: "'path'"}})
14171420

14181421
expected := `include 'path'`
14191422
actual := o.String()
@@ -1427,7 +1430,7 @@ func TestPrintIncludeOnce(t *testing.T) {
14271430
o := bytes.NewBufferString("")
14281431

14291432
p := printer.NewPrinter(o, " ")
1430-
p.Print(&expr.IncludeOnce{Expr: &scalar.String{Value: "path"}})
1433+
p.Print(&expr.IncludeOnce{Expr: &scalar.String{Value: "'path'"}})
14311434

14321435
expected := `include_once 'path'`
14331436
actual := o.String()
@@ -1653,7 +1656,7 @@ func TestPrintRequire(t *testing.T) {
16531656
o := bytes.NewBufferString("")
16541657

16551658
p := printer.NewPrinter(o, " ")
1656-
p.Print(&expr.Require{Expr: &scalar.String{Value: "path"}})
1659+
p.Print(&expr.Require{Expr: &scalar.String{Value: "'path'"}})
16571660

16581661
expected := `require 'path'`
16591662
actual := o.String()
@@ -1667,7 +1670,7 @@ func TestPrintRequireOnce(t *testing.T) {
16671670
o := bytes.NewBufferString("")
16681671

16691672
p := printer.NewPrinter(o, " ")
1670-
p.Print(&expr.RequireOnce{Expr: &scalar.String{Value: "path"}})
1673+
p.Print(&expr.RequireOnce{Expr: &scalar.String{Value: "'path'"}})
16711674

16721675
expected := `require_once 'path'`
16731676
actual := o.String()
@@ -1704,7 +1707,7 @@ func TestPrintExprShortArray(t *testing.T) {
17041707
p.Print(&expr.ShortArray{
17051708
Items: []node.Node{
17061709
&expr.ArrayItem{
1707-
Key: &scalar.String{Value: "Hello"},
1710+
Key: &scalar.String{Value: "'Hello'"},
17081711
Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}},
17091712
},
17101713
&expr.ArrayItem{
@@ -1806,7 +1809,7 @@ func TestPrintTernary(t *testing.T) {
18061809
p := printer.NewPrinter(o, " ")
18071810
p.Print(&expr.Ternary{
18081811
Condition: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
1809-
IfTrue: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
1812+
IfFalse: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
18101813
})
18111814

18121815
expected := `$a ?: $b`
@@ -1823,8 +1826,8 @@ func TestPrintTernaryFull(t *testing.T) {
18231826
p := printer.NewPrinter(o, " ")
18241827
p.Print(&expr.Ternary{
18251828
Condition: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
1826-
IfFalse: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
1827-
IfTrue: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
1829+
IfTrue: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
1830+
IfFalse: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
18281831
})
18291832

18301833
expected := `$a ? $b : $c`
@@ -2142,13 +2145,13 @@ func TestPrintStmtAltSwitch(t *testing.T) {
21422145
Cond: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
21432146
Cases: []node.Node{
21442147
&stmt.Case{
2145-
Cond: &scalar.String{Value: "a"},
2148+
Cond: &scalar.String{Value: "'a'"},
21462149
Stmts: []node.Node{
21472150
&stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
21482151
},
21492152
},
21502153
&stmt.Case{
2151-
Cond: &scalar.String{Value: "b"},
2154+
Cond: &scalar.String{Value: "'b'"},
21522155
Stmts: []node.Node{
21532156
&stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
21542157
},
@@ -2343,7 +2346,7 @@ func TestPrintStmtClass(t *testing.T) {
23432346
Consts: []node.Node{
23442347
&stmt.Constant{
23452348
ConstantName: &node.Identifier{Value: "FOO"},
2346-
Expr: &scalar.String{Value: "bar"},
2349+
Expr: &scalar.String{Value: "'bar'"},
23472350
},
23482351
},
23492352
},
@@ -2392,7 +2395,7 @@ func TestPrintStmtAnonymousClass(t *testing.T) {
23922395
Consts: []node.Node{
23932396
&stmt.Constant{
23942397
ConstantName: &node.Identifier{Value: "FOO"},
2395-
Expr: &scalar.String{Value: "bar"},
2398+
Expr: &scalar.String{Value: "'bar'"},
23962399
},
23972400
},
23982401
},
@@ -2423,11 +2426,11 @@ func TestPrintStmtClassConstList(t *testing.T) {
24232426
Consts: []node.Node{
24242427
&stmt.Constant{
24252428
ConstantName: &node.Identifier{Value: "FOO"},
2426-
Expr: &scalar.String{Value: "a"},
2429+
Expr: &scalar.String{Value: "'a'"},
24272430
},
24282431
&stmt.Constant{
24292432
ConstantName: &node.Identifier{Value: "BAR"},
2430-
Expr: &scalar.String{Value: "b"},
2433+
Expr: &scalar.String{Value: "'b'"},
24312434
},
24322435
},
24332436
})
@@ -2446,7 +2449,7 @@ func TestPrintStmtConstant(t *testing.T) {
24462449
p := printer.NewPrinter(o, " ")
24472450
p.Print(&stmt.Constant{
24482451
ConstantName: &node.Identifier{Value: "FOO"},
2449-
Expr: &scalar.String{Value: "BAR"},
2452+
Expr: &scalar.String{Value: "'BAR'"},
24502453
})
24512454

24522455
expected := "FOO = 'BAR'"
@@ -2483,7 +2486,7 @@ func TestPrintStmtDeclareStmts(t *testing.T) {
24832486
Consts: []node.Node{
24842487
&stmt.Constant{
24852488
ConstantName: &node.Identifier{Value: "FOO"},
2486-
Expr: &scalar.String{Value: "bar"},
2489+
Expr: &scalar.String{Value: "'bar'"},
24872490
},
24882491
},
24892492
Stmt: &stmt.StmtList{
@@ -2517,10 +2520,10 @@ func TestPrintStmtDeclareExpr(t *testing.T) {
25172520
Consts: []node.Node{
25182521
&stmt.Constant{
25192522
ConstantName: &node.Identifier{Value: "FOO"},
2520-
Expr: &scalar.String{Value: "bar"},
2523+
Expr: &scalar.String{Value: "'bar'"},
25212524
},
25222525
},
2523-
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "bar"}},
2526+
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
25242527
},
25252528
},
25262529
})
@@ -2544,7 +2547,7 @@ func TestPrintStmtDeclareNop(t *testing.T) {
25442547
Consts: []node.Node{
25452548
&stmt.Constant{
25462549
ConstantName: &node.Identifier{Value: "FOO"},
2547-
Expr: &scalar.String{Value: "bar"},
2550+
Expr: &scalar.String{Value: "'bar'"},
25482551
},
25492552
},
25502553
Stmt: &stmt.Nop{},
@@ -2697,7 +2700,7 @@ func TestPrintStmtElseIfExpr(t *testing.T) {
26972700
p := printer.NewPrinter(o, " ")
26982701
p.Print(&stmt.ElseIf{
26992702
Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
2700-
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "bar"}},
2703+
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
27012704
})
27022705

27032706
expected := `elseif ($a)
@@ -2753,7 +2756,7 @@ func TestPrintStmtElseExpr(t *testing.T) {
27532756

27542757
p := printer.NewPrinter(o, " ")
27552758
p.Print(&stmt.Else{
2756-
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "bar"}},
2759+
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
27572760
})
27582761

27592762
expected := `else
@@ -2877,7 +2880,7 @@ func TestPrintStmtForExpr(t *testing.T) {
28772880
Loop: []node.Node{
28782881
&expr.Variable{VarName: &node.Identifier{Value: "c"}},
28792882
},
2880-
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "bar"}},
2883+
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
28812884
},
28822885
},
28832886
})
@@ -2958,7 +2961,7 @@ func TestPrintStmtForeachExpr(t *testing.T) {
29582961
Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
29592962
Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}},
29602963
Variable: &expr.Variable{VarName: &node.Identifier{Value: "v"}},
2961-
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "bar"}},
2964+
Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
29622965
},
29632966
},
29642967
})
@@ -3505,13 +3508,13 @@ func TestPrintStmtSwitch(t *testing.T) {
35053508
Cond: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
35063509
Cases: []node.Node{
35073510
&stmt.Case{
3508-
Cond: &scalar.String{Value: "a"},
3511+
Cond: &scalar.String{Value: "'a'"},
35093512
Stmts: []node.Node{
35103513
&stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
35113514
},
35123515
},
35133516
&stmt.Case{
3514-
Cond: &scalar.String{Value: "b"},
3517+
Cond: &scalar.String{Value: "'b'"},
35153518
Stmts: []node.Node{
35163519
&stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
35173520
},

0 commit comments

Comments
 (0)