mirror of
https://github.com/golang/go
synced 2024-10-06 08:00:07 +00:00
cmd/cgo: don't let inserted /*line*/ become a // comment
Fixes #29383 Change-Id: I0fb2929863e153b96d32d851e25e536231e4ae65 Reviewed-on: https://go-review.googlesource.com/c/155638 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
e7c20b7917
commit
08477a38ab
19
misc/cgo/test/issue29383.go
Normal file
19
misc/cgo/test/issue29383.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2018 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// cgo's /*line*/ comments failed when inserted after '/',
|
||||
// because the result looked like a "//" comment.
|
||||
// No runtime test; just make sure it compiles.
|
||||
|
||||
package cgotest
|
||||
|
||||
// #include <stddef.h>
|
||||
import "C"
|
||||
|
||||
func Issue29383(n, size uint) int {
|
||||
if ^C.size_t(0)/C.size_t(n) < C.size_t(size) {
|
||||
return 0
|
||||
}
|
||||
return 0
|
||||
}
|
|
@ -1389,7 +1389,9 @@ func (p *Package) rewriteRef(f *File) {
|
|||
|
||||
// Record source-level edit for cgo output.
|
||||
if !r.Done {
|
||||
repl := gofmtPos(expr, old.Pos())
|
||||
// Prepend a space in case the earlier code ends
|
||||
// with '/', which would give us a "//" comment.
|
||||
repl := " " + gofmtPos(expr, old.Pos())
|
||||
end := fset.Position(old.End())
|
||||
// Subtract 1 from the column if we are going to
|
||||
// append a close parenthesis. That will set the
|
||||
|
@ -1399,7 +1401,7 @@ func (p *Package) rewriteRef(f *File) {
|
|||
sub = 1
|
||||
}
|
||||
if end.Column > sub {
|
||||
repl = fmt.Sprintf("%s/*line :%d:%d*/", repl, end.Line, end.Column-sub)
|
||||
repl = fmt.Sprintf("%s /*line :%d:%d*/", repl, end.Line, end.Column-sub)
|
||||
}
|
||||
if r.Name.Kind != "type" {
|
||||
repl = "(" + repl + ")"
|
||||
|
|
Loading…
Reference in a new issue