Skip to content

Commit

Permalink
Merge pull request #7583 from planetscale/deep-clone
Browse files Browse the repository at this point in the history
Optimise AST rewriting
  • Loading branch information
harshit-gangal committed Mar 2, 2021
2 parents f28f6f1 + 0b963ec commit d2f939e
Show file tree
Hide file tree
Showing 3 changed files with 162 additions and 99 deletions.
48 changes: 30 additions & 18 deletions go/tools/asthelpergen/integration/rewriter.go

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

13 changes: 7 additions & 6 deletions go/tools/asthelpergen/rewriter_gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,14 @@ func (r *rewriterGen) createReplacementMethod(container, elem types.Type, x jen.
return func(newnode, container AST) {
container.(InterfaceSlice)[idx] = newnode.(AST)
}
}
}(x)
*/
return jen.Func().Params(jen.List(jen.Id("newNode"), jen.Id("container")).Id(r.ifaceName)).Block(
jen.Id("container").Assert(jen.Id(types.TypeString(container, noQualifier))).Add(x).Index(jen.Id("x")).Op("=").
Id("newNode").Assert(jen.Id(types.TypeString(elem, noQualifier))),
)
return jen.Func().Params(jen.Id("idx").Int()).Func().Params(jen.List(jen.Id(r.ifaceName), jen.Id(r.ifaceName))).Block(
jen.Return(jen.Func().Params(jen.List(jen.Id("newNode"), jen.Id("container")).Id(r.ifaceName))).Block(
jen.Id("container").Assert(jen.Id(types.TypeString(container, noQualifier))).Add(x).Index(jen.Id("idx")).Op("=").
Id("newNode").Assert(jen.Id(types.TypeString(elem, noQualifier))),
),
).Call(jen.Id("x"))
}

func (r *rewriterGen) createFile(pkgName string) (string, *jen.File) {
Expand Down

0 comments on commit d2f939e

Please sign in to comment.