aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/vet/asmdecl.go13
-rw-r--r--cmd/vet/types.go4
2 files changed, 14 insertions, 3 deletions
diff --git a/cmd/vet/asmdecl.go b/cmd/vet/asmdecl.go
index e1ea9a2..63095aa 100644
--- a/cmd/vet/asmdecl.go
+++ b/cmd/vet/asmdecl.go
@@ -81,7 +81,7 @@ var (
asmTEXT = re(`\bTEXT\b.*ยท([^\(]+)\(SB\)(?:\s*,\s*([0-9A-Z|+]+))?(?:\s*,\s*\$(-?[0-9]+)(?:-([0-9]+))?)?`)
asmDATA = re(`\b(DATA|GLOBL)\b`)
asmNamedFP = re(`([a-zA-Z0-9_\xFF-\x{10FFFF}]+)(?:\+([0-9]+))\(FP\)`)
- asmUnnamedFP = re(`[^+\-0-9]](([0-9]+)\(FP\))`)
+ asmUnnamedFP = re(`[^+\-0-9](([0-9]+)\(FP\))`)
asmSP = re(`[^+\-0-9](([0-9]+)\(([A-Z0-9]+)\))`)
asmOpcode = re(`^\s*(?:[A-Z0-9a-z_]+:)?\s*([A-Z]+)\s*([^,]*)(?:,\s*(.*))?`)
power64Suff = re(`([BHWD])(ZU|Z|U|BR)?$`)
@@ -191,6 +191,9 @@ Files:
localSize += archDef.intSize
}
argSize, _ = strconv.Atoi(m[4])
+ if fn == nil && !strings.Contains(fnName, "<>") {
+ badf("function %s missing Go declaration", fnName)
+ }
wroteSP = false
haveRetArg = false
continue
@@ -252,7 +255,13 @@ Files:
}
for _, m := range asmUnnamedFP.FindAllStringSubmatch(line, -1) {
- badf("use of unnamed argument %s", m[1])
+ off, _ := strconv.Atoi(m[2])
+ v := fn.varByOffset[off]
+ if v != nil {
+ badf("use of unnamed argument %s; offset %d is %s+%d(FP)", m[1], off, v.name, v.off)
+ } else {
+ badf("use of unnamed argument %s", m[1])
+ }
}
for _, m := range asmNamedFP.FindAllStringSubmatch(line, -1) {
diff --git a/cmd/vet/types.go b/cmd/vet/types.go
index 0a2a248..8a0182b 100644
--- a/cmd/vet/types.go
+++ b/cmd/vet/types.go
@@ -37,7 +37,9 @@ func init() {
func importType(path, name string) types.Type {
pkg, err := types.DefaultImport(imports, path)
if err != nil {
- warnf("import failed: %v", err)
+ // This can happen if fmt hasn't been compiled yet.
+ // Since nothing uses formatterType anyway, don't complain.
+ //warnf("import failed: %v", err)
return nil
}
if obj, ok := pkg.Scope().Lookup(name).(*types.TypeName); ok {