Avoid a confusing later panic if linting files across packages.
The usage declares that golint only accepts files from a single package,
so now we gracefully enforce that.
Fixes #63.
diff --git a/lint.go b/lint.go
index 80821f5..62c1c68 100644
--- a/lint.go
+++ b/lint.go
@@ -52,7 +52,7 @@
return l.LintFiles(map[string][]byte{filename: src})
}
-// LintFiles lints a set of files.
+// LintFiles lints a set of files of a single package.
// The argument is a map of filename to source.
func (l *Linter) LintFiles(files map[string][]byte) ([]Problem, error) {
if len(files) == 0 {
@@ -62,12 +62,17 @@
fset: token.NewFileSet(),
files: make(map[string]*file),
}
+ var pkgName string
for filename, src := range files {
f, err := parser.ParseFile(pkg.fset, filename, src, parser.ParseComments)
if err != nil {
return nil, err
}
- // TODO(dsymonds): Check for package name mismatch.
+ if pkgName == "" {
+ pkgName = f.Name.Name
+ } else if f.Name.Name != pkgName {
+ return nil, fmt.Errorf("%s is in package %s, not %s", filename, f.Name.Name, pkgName)
+ }
pkg.files[filename] = &file{
pkg: pkg,
f: f,