@@ -5709,3 +5709,112 @@ func TestFunctionExpression_String(t *testing.T) {
57095709 )
57105710 })
57115711}
5712+
5713+ func TestStringTemplateExpression_MarshalJSON (t * testing.T ) {
5714+
5715+ t .Parallel ()
5716+
5717+ expr := & StringTemplateExpression {
5718+ Values : []string {"Hello, " , "!" },
5719+ Expressions : []Expression {
5720+ & IdentifierExpression {
5721+ Identifier : Identifier {
5722+ Identifier : "name" ,
5723+ Pos : Position {Offset : 1 , Line : 2 , Column : 3 },
5724+ },
5725+ },
5726+ },
5727+ Range : Range {
5728+ StartPos : Position {Offset : 4 , Line : 5 , Column : 6 },
5729+ EndPos : Position {Offset : 7 , Line : 8 , Column : 9 },
5730+ },
5731+ }
5732+
5733+ actual , err := json .Marshal (expr )
5734+ require .NoError (t , err )
5735+
5736+ assert .JSONEq (t ,
5737+ // language=json
5738+ `
5739+ {
5740+ "Type": "StringTemplateExpression",
5741+ "Values": ["Hello, ", "!"],
5742+ "Expressions": [
5743+ {
5744+ "Type": "IdentifierExpression",
5745+ "Identifier": {
5746+ "Identifier": "name",
5747+ "StartPos": {"Offset": 1, "Line": 2, "Column": 3},
5748+ "EndPos": {"Offset": 4, "Line": 2, "Column": 6}
5749+ },
5750+ "StartPos": {"Offset": 1, "Line": 2, "Column": 3},
5751+ "EndPos": {"Offset": 4, "Line": 2, "Column": 6}
5752+ }
5753+ ],
5754+ "StartPos": {"Offset": 4, "Line": 5, "Column": 6},
5755+ "EndPos": {"Offset": 7, "Line": 8, "Column": 9}
5756+ }
5757+ ` ,
5758+ string (actual ),
5759+ )
5760+ }
5761+
5762+ func TestStringExpressionTemplate_Doc (t * testing.T ) {
5763+
5764+ t .Parallel ()
5765+
5766+ expr := & StringTemplateExpression {
5767+ Values : []string {"Hello, " , "!" },
5768+ Expressions : []Expression {
5769+ & IdentifierExpression {
5770+ Identifier : Identifier {
5771+ Identifier : "name" ,
5772+ Pos : Position {Offset : 1 , Line : 2 , Column : 3 },
5773+ },
5774+ },
5775+ },
5776+ Range : Range {
5777+ StartPos : Position {Offset : 4 , Line : 5 , Column : 6 },
5778+ EndPos : Position {Offset : 7 , Line : 8 , Column : 9 },
5779+ },
5780+ }
5781+
5782+ assert .Equal (t ,
5783+ prettier.Concat {
5784+ prettier .Text (`"` ),
5785+ prettier .Text (`Hello, ` ),
5786+ prettier .Text (`\(` ),
5787+ prettier .Text (`name` ),
5788+ prettier .Text (`)` ),
5789+ prettier .Text (`!` ),
5790+ prettier .Text (`"` ),
5791+ },
5792+ expr .Doc (),
5793+ )
5794+ }
5795+
5796+ func TestStringExpressionTemplate_String (t * testing.T ) {
5797+
5798+ t .Parallel ()
5799+
5800+ expr := & StringTemplateExpression {
5801+ Values : []string {"Hello, " , "!" },
5802+ Expressions : []Expression {
5803+ & IdentifierExpression {
5804+ Identifier : Identifier {
5805+ Identifier : "name" ,
5806+ Pos : Position {Offset : 1 , Line : 2 , Column : 3 },
5807+ },
5808+ },
5809+ },
5810+ Range : Range {
5811+ StartPos : Position {Offset : 4 , Line : 5 , Column : 6 },
5812+ EndPos : Position {Offset : 7 , Line : 8 , Column : 9 },
5813+ },
5814+ }
5815+
5816+ assert .Equal (t ,
5817+ `"Hello, \(name)!"` ,
5818+ expr .String (),
5819+ )
5820+ }
0 commit comments