Skip to content

Commit

Permalink
go/ast: fix ast.MergePackageFiles to collect infos about imports
Browse files Browse the repository at this point in the history
R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/4710047
  • Loading branch information
sbinet authored and griesemer committed Aug 22, 2011
1 parent 7bbe2c8 commit c7a742c
Showing 1 changed file with 30 additions and 3 deletions.
33 changes: 30 additions & 3 deletions src/pkg/go/ast/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,8 @@ const (
// If set, comments that are not associated with a specific
// AST node (as Doc or Comment) are excluded.
FilterUnassociatedComments
// If set, duplicate import declarations are excluded.
FilterImportDuplicates
)

// separator is an empty //-style comment that is interspersed between
Expand Down Expand Up @@ -459,6 +461,32 @@ func MergePackageFiles(pkg *Package, mode MergeMode) *File {
}
}

// Collect import specs from all package files.
var imports []*ImportSpec
if mode&FilterImportDuplicates != 0 {
seen := make(map[string]bool)
for _, f := range pkg.Files {
for _, imp := range f.Imports {
path := imp.Path.Value
if !seen[path] {
//TODO: consider handling cases where:
// - 2 imports exist with the same import path but
// have different local names (one should probably
// keep both of them)
// - 2 imports exist but only one has a comment
// - 2 imports exist and they both have (possibly
// different) comments
seen[path] = true
imports = append(imports, imp)
}
}
}
} else {
for _, f := range pkg.Files {
imports = append(imports, f.Imports...)
}
}

// Collect comments from all package files.
var comments []*CommentGroup
if mode&FilterUnassociatedComments == 0 {
Expand All @@ -469,7 +497,6 @@ func MergePackageFiles(pkg *Package, mode MergeMode) *File {
}
}

// TODO(gri) need to compute pkgScope and unresolved identifiers!
// TODO(gri) need to compute imports!
return &File{doc, pos, NewIdent(pkg.Name), decls, nil, nil, nil, comments}
// TODO(gri) need to compute unresolved identifiers!
return &File{doc, pos, NewIdent(pkg.Name), decls, pkg.Scope, imports, nil, comments}
}

0 comments on commit c7a742c

Please sign in to comment.