continue
}
if gc.Debug_checknil != 0 && p.Lineno > 1 { // p->lineno==1 in generated wrappers
- gc.Warnl(int(p.Lineno), "generated nil check")
+ gc.Warnl(p.Lineno, "generated nil check")
}
// check is
continue
}
if gc.Debug_checknil != 0 && p.Lineno > 1 { // p->lineno==1 in generated wrappers
- gc.Warnl(int(p.Lineno), "generated nil check")
+ gc.Warnl(p.Lineno, "generated nil check")
}
if p.From.Type != obj.TYPE_REG {
gc.Fatalf("invalid nil check %v", p)
continue
}
if gc.Debug_checknil != 0 && p.Lineno > 1 { // p->lineno==1 in generated wrappers
- gc.Warnl(int(p.Lineno), "generated nil check")
+ gc.Warnl(p.Lineno, "generated nil check")
}
if p.From.Type != obj.TYPE_REG {
gc.Fatalf("invalid nil check %v\n", p)
if v.Name.Byval {
how = "value"
}
- Warnl(int(v.Lineno), "%v capturing by %s: %v (addr=%v assign=%v width=%d)", name, how, v.Sym, v.Name.Param.Closure.Addrtaken, v.Name.Param.Closure.Assigned, int32(v.Type.Width))
+ Warnl(v.Lineno, "%v capturing by %s: %v (addr=%v assign=%v width=%d)", name, how, v.Sym, v.Name.Param.Closure.Addrtaken, v.Name.Param.Closure.Assigned, int32(v.Type.Width))
}
typecheck(&outer, Erv)
}
func popdcl() {
- var d *Sym
- var s *Sym
- var lno int
-
- // if(dflag())
- // print("revert\n");
-
- for d = dclstack; d != nil; d = d.Link {
- if d.Name == "" {
- break
- }
- s = Pkglookup(d.Name, d.Pkg)
- lno = int(s.Lastlineno)
+ d := dclstack
+ for ; d != nil && d.Name != ""; d = d.Link {
+ s := Pkglookup(d.Name, d.Pkg)
+ lno := s.Lastlineno
dcopy(s, d)
- d.Lastlineno = int32(lno)
+ d.Lastlineno = lno
if dflag() {
fmt.Printf("\t%v pop %v %p\n", Ctxt.Line(int(lineno)), s, s.Def)
}
if d == nil {
Fatalf("popdcl: no mark")
}
- dclstack = d.Link
+
+ dclstack = d.Link // pop mark
block = d.Block
}
block = blockgen
}
-// if(dflag())
-// print("markdcl\n");
func dumpdcl(st string) {
- var s *Sym
-
i := 0
for d := dclstack; d != nil; d = d.Link {
i++
}
fmt.Printf(" '%s'", d.Name)
- s = Pkglookup(d.Name, d.Pkg)
- fmt.Printf(" %v\n", s)
+ fmt.Printf(" %v\n", Pkglookup(d.Name, d.Pkg))
}
}
errorexit()
}
Yyerror("mark left on the stack")
- continue
}
}
}
pkgstr := tmp
Yyerror("%v redeclared %s\n"+"\tprevious declaration during import %q", s, where, pkgstr)
} else {
- line1 := parserline()
- line2 := int(s.Lastlineno)
+ line1 := lineno
+ line2 := s.Lastlineno
// When an import and a declaration collide in separate files,
// present the import as the "redeclared", because the declaration
// See issue 4510.
if s.Def == nil {
line2 = line1
- line1 = int(s.Lastlineno)
+ line1 = s.Lastlineno
}
- yyerrorl(int(line1), "%v redeclared %s\n"+"\tprevious declaration at %v", s, where, Ctxt.Line(line2))
+ yyerrorl(line1, "%v redeclared %s\n"+"\tprevious declaration at %v", s, where, Ctxt.Line(int(line2)))
}
}
// named OLITERAL needs Name; most OLITERALs don't.
n.Name = new(Name)
}
- n.Lineno = int32(parserline())
+ n.Lineno = lineno
s := n.Sym
// kludgy: typecheckok means we're past parsing. Eg genwrapper may declare out of package names later.
}
s.Block = block
- s.Lastlineno = int32(parserline())
+ s.Lastlineno = lineno
s.Def = n
n.Name.Vargen = int32(gen)
n.Name.Funcdepth = Funcdepth
continue
}
if !colasname(n) {
- yyerrorl(int(defn.Lineno), "non-name %v on left side of :=", n)
+ yyerrorl(defn.Lineno, "non-name %v on left side of :=", n)
nerr++
continue
}
if n.Sym.Flags&SymUniq == 0 {
- yyerrorl(int(defn.Lineno), "%v repeated on left side of :=", n.Sym)
+ yyerrorl(defn.Lineno, "%v repeated on left side of :=", n.Sym)
n.Diag++
nerr++
continue
}
if nnew == 0 && nerr == 0 {
- yyerrorl(int(defn.Lineno), "no new variables on left side of :=")
+ yyerrorl(defn.Lineno, "no new variables on left side of :=")
}
}
call = c.best[n]
}
err = fmt.Sprintf("write barrier prohibited by caller; %v%s", n.Func.Nname, err)
- yyerrorl(int(n.Func.WBLineno), err)
+ yyerrorl(n.Func.WBLineno, err)
}
})
}
if Debug['m'] != 0 {
for l := e.noesc; l != nil; l = l.Next {
if l.N.Esc == EscNone {
- Warnl(int(l.N.Lineno), "%v %v does not escape", e.curfnSym(l.N), Nconv(l.N, obj.FmtShort))
+ Warnl(l.N.Lineno, "%v %v does not escape", e.curfnSym(l.N), Nconv(l.N, obj.FmtShort))
}
}
}
n.Op == ONEW && n.Type.Type.Width >= 1<<16 ||
n.Op == OMAKESLICE && !isSmallMakeSlice(n)) {
if Debug['m'] > 1 {
- Warnl(int(n.Lineno), "%v is too large for stack", n)
+ Warnl(n.Lineno, "%v is too large for stack", n)
}
n.Esc = EscHeap
addrescapes(n)
// b escapes as well. If we ignore such OSLICEARR, we will conclude
// that b does not escape when b contents do.
if Debug['m'] != 0 {
- Warnl(int(n.Lineno), "%v ignoring self-assignment to %v", e.curfnSym(n), Nconv(n.Left, obj.FmtShort))
+ Warnl(n.Lineno, "%v ignoring self-assignment to %v", e.curfnSym(n), Nconv(n.Left, obj.FmtShort))
}
break
slice2 := n.List.Next.N
escassignDereference(e, &e.theSink, slice2) // lose track of assign of dereference
if Debug['m'] > 2 {
- Warnl(int(n.Lineno), "%v special treatment of append(slice1, slice2...) %v", e.curfnSym(n), Nconv(n, obj.FmtShort))
+ Warnl(n.Lineno, "%v special treatment of append(slice1, slice2...) %v", e.curfnSym(n), Nconv(n, obj.FmtShort))
}
}
escassignDereference(e, &e.theSink, n.List.N) // The original elements are now leaked, too
// 4. return *in
if Debug['m'] != 0 {
if Debug['m'] == 1 {
- Warnl(int(src.Lineno), "leaking param: %v to result %v level=%v", Nconv(src, obj.FmtShort), dst.Sym, level.int())
+ Warnl(src.Lineno, "leaking param: %v to result %v level=%v", Nconv(src, obj.FmtShort), dst.Sym, level.int())
} else {
- Warnl(int(src.Lineno), "leaking param: %v to result %v level=%v", Nconv(src, obj.FmtShort), dst.Sym, level)
+ Warnl(src.Lineno, "leaking param: %v to result %v level=%v", Nconv(src, obj.FmtShort), dst.Sym, level)
}
}
if src.Esc&EscMask != EscReturn {
level.int() > 0 {
src.Esc = escMax(EscContentEscapes|src.Esc, EscNone)
if Debug['m'] != 0 {
- Warnl(int(src.Lineno), "mark escaped content: %v", Nconv(src, obj.FmtShort))
+ Warnl(src.Lineno, "mark escaped content: %v", Nconv(src, obj.FmtShort))
}
}
src.Esc = escMax(EscContentEscapes|src.Esc, EscNone)
if Debug['m'] != 0 {
if Debug['m'] == 1 {
- Warnl(int(src.Lineno), "leaking param content: %v", Nconv(src, obj.FmtShort))
+ Warnl(src.Lineno, "leaking param content: %v", Nconv(src, obj.FmtShort))
} else {
- Warnl(int(src.Lineno), "leaking param content: %v level=%v dst.eld=%v src.eld=%v dst=%v",
+ Warnl(src.Lineno, "leaking param content: %v level=%v dst.eld=%v src.eld=%v dst=%v",
Nconv(src, obj.FmtShort), level, dstE.Escloopdepth, modSrcLoopdepth, Nconv(dst, obj.FmtShort))
}
}
src.Esc = EscScope
if Debug['m'] != 0 {
if Debug['m'] == 1 {
- Warnl(int(src.Lineno), "leaking param: %v", Nconv(src, obj.FmtShort))
+ Warnl(src.Lineno, "leaking param: %v", Nconv(src, obj.FmtShort))
} else {
- Warnl(int(src.Lineno), "leaking param: %v level=%v dst.eld=%v src.eld=%v dst=%v",
+ Warnl(src.Lineno, "leaking param: %v level=%v dst.eld=%v src.eld=%v dst=%v",
Nconv(src, obj.FmtShort), level, dstE.Escloopdepth, modSrcLoopdepth, Nconv(dst, obj.FmtShort))
}
}
// original variable.
if src.Class == PPARAMREF {
if leaks && Debug['m'] != 0 {
- Warnl(int(src.Lineno), "leaking closure reference %v", Nconv(src, obj.FmtShort))
+ Warnl(src.Lineno, "leaking closure reference %v", Nconv(src, obj.FmtShort))
}
escwalk(e, level, dst, src.Name.Param.Closure)
}
p = p.Left // merely to satisfy error messages in tests
}
if Debug['m'] > 1 {
- Warnl(int(src.Lineno), "%v escapes to heap, level=%v, dst.eld=%v, src.eld=%v",
+ Warnl(src.Lineno, "%v escapes to heap, level=%v, dst.eld=%v, src.eld=%v",
Nconv(p, obj.FmtShort), level, dstE.Escloopdepth, modSrcLoopdepth)
} else {
- Warnl(int(src.Lineno), "%v escapes to heap", Nconv(p, obj.FmtShort))
+ Warnl(src.Lineno, "%v escapes to heap", Nconv(p, obj.FmtShort))
}
}
escwalkBody(e, level.dec(), dst, src.Left, modSrcLoopdepth)
if leaks {
src.Esc = EscHeap
if Debug['m'] != 0 {
- Warnl(int(src.Lineno), "%v escapes to heap", Nconv(src, obj.FmtShort))
+ Warnl(src.Lineno, "%v escapes to heap", Nconv(src, obj.FmtShort))
}
extraloopdepth = modSrcLoopdepth
}
if leaks {
src.Esc = EscHeap
if Debug['m'] != 0 {
- Warnl(int(src.Lineno), "%v escapes to heap", Nconv(src, obj.FmtShort))
+ Warnl(src.Lineno, "%v escapes to heap", Nconv(src, obj.FmtShort))
}
extraloopdepth = modSrcLoopdepth
}
} else {
name = fmt.Sprintf("arg#%d", narg)
}
- Warnl(int(func_.Lineno), "%v assuming %v is unsafe uintptr", funcSym(func_), name)
+ Warnl(func_.Lineno, "%v assuming %v is unsafe uintptr", funcSym(func_), name)
}
t.Note = &unsafeUintptrTag
}
copytype(pt.Nod, t)
pt.Nod = n // unzero nod
pt.Sym.Importdef = importpkg
- pt.Sym.Lastlineno = int32(parserline())
+ pt.Sym.Lastlineno = lineno
declare(n, PEXTERN)
checkwidth(pt)
} else if !Eqtype(pt.Orig, t) {
for lab := labellist; lab != nil; lab = lab.Link {
if lab.Def == nil {
for _, n := range lab.Use {
- yyerrorl(int(n.Lineno), "label %v not defined", lab.Sym)
+ yyerrorl(n.Lineno, "label %v not defined", lab.Sym)
}
continue
}
if lab.Use == nil && !lab.Used {
- yyerrorl(int(lab.Def.Lineno), "label %v defined and not used", lab.Sym)
+ yyerrorl(lab.Def.Lineno, "label %v defined and not used", lab.Sym)
continue
}
c := obj.Bgetc(l.bin)
if c < utf8.RuneSelf {
if c == 0 {
- yyerrorl(int(lexlineno), "illegal NUL byte")
+ yyerrorl(lexlineno, "illegal NUL byte")
return 0
}
if c == '\n' && importpkg == nil {
// The string conversion here makes a copy for passing
// to fmt.Printf, so that buf itself does not escape and
// can be allocated on the stack.
- yyerrorl(int(lexlineno), "illegal UTF-8 sequence % x", string(buf[:i]))
+ yyerrorl(lexlineno, "illegal UTF-8 sequence % x", string(buf[:i]))
}
if r == BOM {
- yyerrorl(int(lexlineno), "Unicode (UTF-8) BOM in middle of file")
+ yyerrorl(lexlineno, "Unicode (UTF-8) BOM in middle of file")
goto redo
}
return fmt.Sprintf("LEX-%d", lex)
}
-func pkgnotused(lineno int, path string, name string) {
+func pkgnotused(lineno int32, path string, name string) {
// If the package was imported with a name other than the final
// import path element, show it explicitly in the error message.
// Note that this handles both renamed imports and imports of
elem = elem[i+1:]
}
if name == "" || elem == name {
- yyerrorl(int(lineno), "imported and not used: %q", path)
+ yyerrorl(lineno, "imported and not used: %q", path)
} else {
- yyerrorl(int(lineno), "imported and not used: %q as %s", path, name)
+ yyerrorl(lineno, "imported and not used: %q as %s", path, name)
}
}
// errors if a conflicting top-level name is
// introduced by a different file.
if !s.Def.Used && nsyntaxerrors == 0 {
- pkgnotused(int(s.Def.Lineno), s.Def.Name.Pkg.Path, s.Name)
+ pkgnotused(s.Def.Lineno, s.Def.Name.Pkg.Path, s.Name)
}
s.Def = nil
continue
// throw away top-level name left over
// from previous import . "x"
if s.Def.Name != nil && s.Def.Name.Pack != nil && !s.Def.Name.Pack.Used && nsyntaxerrors == 0 {
- pkgnotused(int(s.Def.Name.Pack.Lineno), s.Def.Name.Pack.Name.Pkg.Path, "")
+ pkgnotused(s.Def.Name.Pack.Lineno, s.Def.Name.Pack.Name.Pkg.Path, "")
s.Def.Name.Pack.Used = true
}
return
}
- line := int32(parserline())
+ line := lineno
// We need to clear importpkg before calling p.next(),
// otherwise it will affect lexlineno.
symlineno := lineno
sym := p.sym()
if sym == nil {
- yyerrorl(int(symlineno), "invalid declaration")
+ yyerrorl(symlineno, "invalid declaration")
return nil
}
return dclname(sym)
if !n.Name.Needzero {
n.Name.Needzero = true
if debuglive >= 1 {
- Warnl(int(p.Lineno), "%v: %v is ambiguously live", Curfn.Func.Nname, Nconv(n, obj.FmtLong))
+ Warnl(p.Lineno, "%v: %v is ambiguously live", Curfn.Func.Nname, Nconv(n, obj.FmtLong))
}
// Record in 'ambiguous' bitmap.
}
n = lv.vars[j]
if n.Class != PPARAM {
- yyerrorl(int(p.Lineno), "internal error: %v %v recorded as live on entry, p.Pc=%v", Curfn.Func.Nname, Nconv(n, obj.FmtLong), p.Pc)
+ yyerrorl(p.Lineno, "internal error: %v %v recorded as live on entry, p.Pc=%v", Curfn.Func.Nname, Nconv(n, obj.FmtLong), p.Pc)
}
}
}
ncheck++
if Thearch.Stackaddr(&p.From) {
if Debug_checknil != 0 && p.Lineno > 1 {
- Warnl(int(p.Lineno), "removed nil check of SP address")
+ Warnl(p.Lineno, "removed nil check of SP address")
}
f.Data = &killed
continue
nilwalkfwd(f)
if f.Data != nil {
if Debug_checknil != 0 && p.Lineno > 1 {
- Warnl(int(p.Lineno), "removed nil check before indirect")
+ Warnl(p.Lineno, "removed nil check before indirect")
}
continue
}
nilwalkback(f)
if f.Data != nil {
if Debug_checknil != 0 && p.Lineno > 1 {
- Warnl(int(p.Lineno), "removed repeated nil check")
+ Warnl(p.Lineno, "removed repeated nil check")
}
continue
}
// Check that we used all labels
for name, lab := range s.labels {
if !lab.used() && !lab.reported {
- yyerrorl(int(lab.defNode.Lineno), "label %v defined and not used", name)
+ yyerrorl(lab.defNode.Lineno, "label %v defined and not used", name)
lab.reported = true
}
if lab.used() && !lab.defined() && !lab.reported {
- yyerrorl(int(lab.useNode.Lineno), "label %v not defined", name)
+ yyerrorl(lab.useNode.Lineno, "label %v not defined", name)
lab.reported = true
}
}
}
func (s *state) Error(msg string, args ...interface{}) {
- yyerrorl(int(s.peekLine()), msg, args...)
+ yyerrorl(s.peekLine(), msg, args...)
}
// newValue0 adds a new value with no arguments to the current block.
s.startBlock(bEnd)
if Debug_wb > 0 {
- Warnl(int(line), "write barrier")
+ Warnl(line, "write barrier")
}
}
s.startBlock(bEnd)
if Debug_wb > 0 {
- Warnl(int(line), "write barrier")
+ Warnl(line, "write barrier")
}
}
}
if Debug_typeassert > 0 {
- Warnl(int(n.Lineno), "type assertion inlined")
+ Warnl(n.Lineno, "type assertion inlined")
}
// TODO: If we have a nonempty interface and its itab field is nil,
fs = fs.Link
}
- lno := int(from.Left.Lineno)
+ lno := from.Left.Lineno
if block != nil {
yyerrorl(lno, "goto %v jumps into block starting at %v", from.Left.Sym, Ctxt.Line(int(block.Lastlineno)))
} else {
ssa.OpAMD64MOVSSstore, ssa.OpAMD64MOVSDstore, ssa.OpAMD64MOVOstore:
if w.Args[0] == v.Args[0] && w.Aux == nil && w.AuxInt >= 0 && w.AuxInt < minZeroPage {
if Debug_checknil != 0 && int(v.Line) > 1 {
- Warnl(int(v.Line), "removed nil check")
+ Warnl(v.Line, "removed nil check")
}
return
}
off := ssa.ValAndOff(v.AuxInt).Off()
if w.Args[0] == v.Args[0] && w.Aux == nil && off >= 0 && off < minZeroPage {
if Debug_checknil != 0 && int(v.Line) > 1 {
- Warnl(int(v.Line), "removed nil check")
+ Warnl(v.Line, "removed nil check")
}
return
}
p.To.Reg = regnum(v.Args[0])
addAux(&p.To, v)
if Debug_checknil != 0 && v.Line > 1 { // v.Line==1 in generated wrappers
- Warnl(int(v.Line), "generated nil check")
+ Warnl(v.Line, "generated nil check")
}
default:
v.Unimplementedf("genValue not implemented: %s", v.LongString())
// Warnl reports a "warning", which is usually flag-triggered
// logging output for the benefit of tests.
func (e *ssaExport) Warnl(line int, fmt_ string, args ...interface{}) {
- Warnl(line, fmt_, args...)
+ Warnl(int32(line), fmt_, args...)
}
func (e *ssaExport) Debug_checknil() bool {
)
type Error struct {
- lineno int
+ lineno int32
msg string
}
os.Exit(2)
}
-func parserline() int {
- return int(lineno)
-}
-
func adderrorname(n *Node) {
if n.Op != ODOT {
return
}
}
-func adderr(line int, format string, args ...interface{}) {
+func adderr(line int32, format string, args ...interface{}) {
errors = append(errors, Error{
lineno: line,
- msg: fmt.Sprintf("%v: %s\n", Ctxt.Line(line), fmt.Sprintf(format, args...)),
+ msg: fmt.Sprintf("%v: %s\n", Ctxt.Line(int(line)), fmt.Sprintf(format, args...)),
})
}
}
}
-func yyerrorl(line int, format string, args ...interface{}) {
+func yyerrorl(line int32, format string, args ...interface{}) {
adderr(line, format, args...)
hcrash()
nerrors++
if nsavederrors+nerrors >= 10 && Debug['e'] == 0 {
Flusherrors()
- fmt.Printf("%v: too many errors\n", Ctxt.Line(line))
+ fmt.Printf("%v: too many errors\n", Ctxt.Line(int(line)))
errorexit()
}
}
}
yyerror_lastsyntax = lineno
- yyerrorl(int(lineno), "%s", msg)
+ yyerrorl(lineno, "%s", msg)
return
}
- adderr(parserline(), "%s", msg)
+ adderr(lineno, "%s", msg)
hcrash()
nerrors++
if nsavederrors+nerrors >= 10 && Debug['e'] == 0 {
Flusherrors()
- fmt.Printf("%v: too many errors\n", Ctxt.Line(parserline()))
+ fmt.Printf("%v: too many errors\n", Ctxt.Line(int(lineno)))
errorexit()
}
}
func Warn(fmt_ string, args ...interface{}) {
- adderr(parserline(), fmt_, args...)
+ adderr(lineno, fmt_, args...)
hcrash()
}
-func Warnl(line int, fmt_ string, args ...interface{}) {
+func Warnl(line int32, fmt_ string, args ...interface{}) {
adderr(line, fmt_, args...)
if Debug['m'] != 0 {
Flusherrors()
if n == 0 {
// can't possibly be used - there were no symbols
- yyerrorl(int(pack.Lineno), "imported and not used: %q", opkg.Path)
+ yyerrorl(pack.Lineno, "imported and not used: %q", opkg.Path)
}
}
n.Op = op
n.Left = nleft
n.Right = nright
- n.Lineno = int32(parserline())
+ n.Lineno = lineno
n.Xoffset = BADWIDTH
n.Orig = n
switch op {
break
}
if Eqtype(c1.node.Left.Type, c2.node.Left.Type) {
- yyerrorl(int(c2.node.Lineno), "duplicate case %v in type switch\n\tprevious case at %v", c2.node.Left.Type, c1.node.Line())
+ yyerrorl(c2.node.Lineno, "duplicate case %v in type switch\n\tprevious case at %v", c2.node.Left.Type, c1.node.Line())
}
}
}
break
}
sprint_depchain(&fmt_, typecheck_tcstack, n, n)
- yyerrorl(int(n.Lineno), "constant definition loop%s", fmt_)
+ yyerrorl(n.Lineno, "constant definition loop%s", fmt_)
}
if nsavederrors+nerrors == 0 {
if fn.Type.Outtuple != 0 && len(fn.Nbody.Slice()) != 0 {
markbreakslice(fn.Nbody.Slice(), nil)
if !fn.Nbody.isterminating() {
- yyerrorl(int(fn.Func.Endlineno), "missing return at end of function")
+ yyerrorl(fn.Func.Endlineno, "missing return at end of function")
}
}
}
func applywritebarrier(n *Node) *Node {
if n.Left != nil && n.Right != nil && needwritebarrier(n.Left, n.Right) {
if Debug_wb > 1 {
- Warnl(int(n.Lineno), "marking %v for barrier", Nconv(n.Left, 0))
+ Warnl(n.Lineno, "marking %v for barrier", Nconv(n.Left, 0))
}
n.Op = OASWB
return n
continue
}
if gc.Debug_checknil != 0 && p.Lineno > 1 { // p->lineno==1 in generated wrappers
- gc.Warnl(int(p.Lineno), "generated nil check")
+ gc.Warnl(p.Lineno, "generated nil check")
}
if p.From.Type != obj.TYPE_REG {
gc.Fatalf("invalid nil check %v\n", p)
continue
}
if gc.Debug_checknil != 0 && p.Lineno > 1 { // p->lineno==1 in generated wrappers
- gc.Warnl(int(p.Lineno), "generated nil check")
+ gc.Warnl(p.Lineno, "generated nil check")
}
if p.From.Type != obj.TYPE_REG {
gc.Fatalf("invalid nil check %v\n", p)
continue
}
if gc.Debug_checknil != 0 && p.Lineno > 1 { // p->lineno==1 in generated wrappers
- gc.Warnl(int(p.Lineno), "generated nil check")
+ gc.Warnl(p.Lineno, "generated nil check")
}
// check is