mirror of
https://github.com/golang/go
synced 2024-11-02 09:03:03 +00:00
cmd/gc: show package name in 'imported and not used' error
Fixes #5957. R=ken2 CC=golang-dev https://golang.org/cl/13250046
This commit is contained in:
parent
a7d8b35aac
commit
8d530f2472
5 changed files with 48 additions and 2 deletions
|
@ -2279,6 +2279,28 @@ yytinit(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pkgnotused(int lineno, Strlit *path, char *name)
|
||||
{
|
||||
char *elem;
|
||||
|
||||
// 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
|
||||
// packages containing unconventional package declarations.
|
||||
// Note that this uses / always, even on Windows, because Go import
|
||||
// paths always use forward slashes.
|
||||
elem = strrchr(path->s, '/');
|
||||
if(elem != nil)
|
||||
elem++;
|
||||
else
|
||||
elem = path->s;
|
||||
if(strcmp(elem, name) == 0)
|
||||
yyerrorl(lineno, "imported and not used: \"%Z\"", path);
|
||||
else
|
||||
yyerrorl(lineno, "imported and not used: \"%Z\" as %s", path, name);
|
||||
}
|
||||
|
||||
void
|
||||
mkpackage(char* pkgname)
|
||||
{
|
||||
|
@ -2304,7 +2326,7 @@ mkpackage(char* pkgname)
|
|||
// errors if a conflicting top-level name is
|
||||
// introduced by a different file.
|
||||
if(!s->def->used && !nsyntaxerrors)
|
||||
yyerrorl(s->def->lineno, "imported and not used: \"%Z\"", s->def->pkg->path);
|
||||
pkgnotused(s->def->lineno, s->def->pkg->path, s->name);
|
||||
s->def = N;
|
||||
continue;
|
||||
}
|
||||
|
@ -2312,7 +2334,7 @@ mkpackage(char* pkgname)
|
|||
// throw away top-level name left over
|
||||
// from previous import . "x"
|
||||
if(s->def->pack != N && !s->def->pack->used && !nsyntaxerrors) {
|
||||
yyerrorl(s->def->pack->lineno, "imported and not used: \"%Z\"", s->def->pack->pkg->path);
|
||||
pkgnotused(s->def->pack->lineno, s->def->pack->pkg->path, s->name);
|
||||
s->def->pack->used = 1;
|
||||
}
|
||||
s->def = N;
|
||||
|
|
3
test/fixedbugs/issue5957.dir/a.go
Normal file
3
test/fixedbugs/issue5957.dir/a.go
Normal file
|
@ -0,0 +1,3 @@
|
|||
package surprise
|
||||
|
||||
var X int
|
2
test/fixedbugs/issue5957.dir/b.go
Normal file
2
test/fixedbugs/issue5957.dir/b.go
Normal file
|
@ -0,0 +1,2 @@
|
|||
package surprise2
|
||||
|
12
test/fixedbugs/issue5957.dir/c.go
Normal file
12
test/fixedbugs/issue5957.dir/c.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
package p
|
||||
|
||||
import (
|
||||
"./a" // ERROR "imported and not used: \x22a\x22 as surprise"
|
||||
"./b" // ERROR "imported and not used: \x22b\x22 as surprise2"
|
||||
b "./b" // ERROR "imported and not used: \x22b\x22$"
|
||||
foo "math" // ERROR "imported and not used: \x22math\x22 as foo"
|
||||
"fmt" // actually used
|
||||
"strings" // ERROR "imported and not used: \x22strings\x22"
|
||||
)
|
||||
|
||||
var _ = fmt.Printf
|
7
test/fixedbugs/issue5957.go
Normal file
7
test/fixedbugs/issue5957.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
// errorcheckdir
|
||||
|
||||
// Copyright 2013 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.
|
||||
|
||||
package ignored
|
Loading…
Reference in a new issue