mirror of
https://github.com/golang/go
synced 2024-11-23 04:10:04 -07: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
@ -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
|
void
|
||||||
mkpackage(char* pkgname)
|
mkpackage(char* pkgname)
|
||||||
{
|
{
|
||||||
@ -2304,7 +2326,7 @@ mkpackage(char* pkgname)
|
|||||||
// errors if a conflicting top-level name is
|
// errors if a conflicting top-level name is
|
||||||
// introduced by a different file.
|
// introduced by a different file.
|
||||||
if(!s->def->used && !nsyntaxerrors)
|
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;
|
s->def = N;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -2312,7 +2334,7 @@ mkpackage(char* pkgname)
|
|||||||
// throw away top-level name left over
|
// throw away top-level name left over
|
||||||
// from previous import . "x"
|
// from previous import . "x"
|
||||||
if(s->def->pack != N && !s->def->pack->used && !nsyntaxerrors) {
|
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->pack->used = 1;
|
||||||
}
|
}
|
||||||
s->def = N;
|
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 New Issue
Block a user