]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cgo: add line info for return statements
authorPatrick Pokatilo <mail@shyxormz.net>
Mon, 29 Nov 2021 07:22:15 +0000 (07:22 +0000)
committerGopher Robot <gobot@golang.org>
Sun, 8 May 2022 17:18:37 +0000 (17:18 +0000)
When calling a C function, line information will be
incorrect if the function call's closing parenthesis
is not on the same line as the last argument. We add
a comment with the line info for the return statement
to guide debuggers to the correct line.

Fixes #49839.

Change-Id: I8bc2ce35fec9cbcafbbe8536d5a79dc487eb24bb
GitHub-Last-Rev: 8b28646d2e25b19272ded7a3d54b9374108a54e2
GitHub-Pull-Request: golang/go#49840
Reviewed-on: https://go-review.googlesource.com/c/go/+/367454
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/cmd/cgo/gcc.go

index a469afa8dd1476f9271bac0a1c5a237d8d3c8165..855309edfa255006f5b6939fa69b8ed7afbde716 100644 (file)
@@ -811,6 +811,7 @@ func (p *Package) rewriteCall(f *File, call *Call) (string, bool) {
 
        params := name.FuncType.Params
        args := call.Call.Args
+       end := call.Call.End()
 
        // Avoid a crash if the number of arguments doesn't match
        // the number of parameters.
@@ -958,7 +959,7 @@ func (p *Package) rewriteCall(f *File, call *Call) (string, bool) {
        if nu {
                needsUnsafe = true
        }
-       sb.WriteString(gofmtLine(m))
+       sb.WriteString(gofmtPos(m, end))
 
        sb.WriteString("(")
        for i := range params {