mirror of
https://github.com/golang/go
synced 2024-11-21 17:54:39 -07:00
Don't ignore flags controlling the amount of source code parsed
in parser's ParsePkgFile and ParsePackage functions. R=rsc CC=golang-dev, rog https://golang.org/cl/180070
This commit is contained in:
parent
42a2e95989
commit
b6bac1c0a5
@ -135,8 +135,7 @@ func ParseFile(filename string, src interface{}, mode uint) (*ast.File, os.Error
|
|||||||
// ParsePkgFile parses the file specified by filename and returns the
|
// ParsePkgFile parses the file specified by filename and returns the
|
||||||
// corresponding AST. If the file cannot be read, has syntax errors, or
|
// corresponding AST. If the file cannot be read, has syntax errors, or
|
||||||
// does not belong to the package (i.e., pkgname != "" and the package
|
// does not belong to the package (i.e., pkgname != "" and the package
|
||||||
// name in the file doesn't match pkkname), an error is returned. Mode
|
// name in the file doesn't match pkkname), an error is returned.
|
||||||
// flags that control the amount of source text parsed are ignored.
|
|
||||||
//
|
//
|
||||||
func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
||||||
src, err := ioutil.ReadFile(filename)
|
src, err := ioutil.ReadFile(filename)
|
||||||
@ -152,10 +151,12 @@ func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
|||||||
if prog.Name.Value != pkgname {
|
if prog.Name.Value != pkgname {
|
||||||
return nil, os.NewError(fmt.Sprintf("multiple packages found: %s, %s", prog.Name.Value, pkgname))
|
return nil, os.NewError(fmt.Sprintf("multiple packages found: %s, %s", prog.Name.Value, pkgname))
|
||||||
}
|
}
|
||||||
|
if mode == PackageClauseOnly {
|
||||||
|
return prog, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ignore flags that control partial parsing
|
return ParseFile(filename, src, mode)
|
||||||
return ParseFile(filename, src, mode&^(PackageClauseOnly|ImportsOnly))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -164,7 +165,6 @@ func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
|||||||
// restricted by providing a non-nil filter function; only the files with
|
// restricted by providing a non-nil filter function; only the files with
|
||||||
// os.Dir entries passing through the filter are considered.
|
// os.Dir entries passing through the filter are considered.
|
||||||
// If ParsePackage does not find exactly one package, it returns an error.
|
// If ParsePackage does not find exactly one package, it returns an error.
|
||||||
// Mode flags that control the amount of source text parsed are ignored.
|
|
||||||
//
|
//
|
||||||
func ParsePackage(path string, filter func(*os.Dir) bool, mode uint) (*ast.Package, os.Error) {
|
func ParsePackage(path string, filter func(*os.Dir) bool, mode uint) (*ast.Package, os.Error) {
|
||||||
fd, err := os.Open(path, os.O_RDONLY, 0)
|
fd, err := os.Open(path, os.O_RDONLY, 0)
|
||||||
|
@ -135,8 +135,7 @@ func ParseFile(filename string, src interface{}, mode uint) (*ast.File, os.Error
|
|||||||
// ParsePkgFile parses the file specified by filename and returns the
|
// ParsePkgFile parses the file specified by filename and returns the
|
||||||
// corresponding AST. If the file cannot be read, has syntax errors, or
|
// corresponding AST. If the file cannot be read, has syntax errors, or
|
||||||
// does not belong to the package (i.e., pkgname != "" and the package
|
// does not belong to the package (i.e., pkgname != "" and the package
|
||||||
// name in the file doesn't match pkkname), an error is returned. Mode
|
// name in the file doesn't match pkkname), an error is returned.
|
||||||
// flags that control the amount of source text parsed are ignored.
|
|
||||||
//
|
//
|
||||||
func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
||||||
src, err := ioutil.ReadFile(filename)
|
src, err := ioutil.ReadFile(filename)
|
||||||
@ -152,10 +151,12 @@ func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
|||||||
if prog.Name.Value != pkgname {
|
if prog.Name.Value != pkgname {
|
||||||
return nil, os.NewError(fmt.Sprintf("multiple packages found: %s, %s", prog.Name.Value, pkgname))
|
return nil, os.NewError(fmt.Sprintf("multiple packages found: %s, %s", prog.Name.Value, pkgname))
|
||||||
}
|
}
|
||||||
|
if mode == PackageClauseOnly {
|
||||||
|
return prog, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ignore flags that control partial parsing
|
return ParseFile(filename, src, mode)
|
||||||
return ParseFile(filename, src, mode&^(PackageClauseOnly|ImportsOnly))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -164,7 +165,6 @@ func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
|
|||||||
// restricted by providing a non-nil filter function; only the files with
|
// restricted by providing a non-nil filter function; only the files with
|
||||||
// os.Dir entries passing through the filter are considered.
|
// os.Dir entries passing through the filter are considered.
|
||||||
// If ParsePackage does not find exactly one package, it returns an error.
|
// If ParsePackage does not find exactly one package, it returns an error.
|
||||||
// Mode flags that control the amount of source text parsed are ignored.
|
|
||||||
//
|
//
|
||||||
func ParsePackage(path string, filter func(*os.Dir) bool, mode uint) (*ast.Package, os.Error) {
|
func ParsePackage(path string, filter func(*os.Dir) bool, mode uint) (*ast.Package, os.Error) {
|
||||||
fd, err := os.Open(path, os.O_RDONLY, 0)
|
fd, err := os.Open(path, os.O_RDONLY, 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user