]> Cypherpunks repositories - gostls13.git/commitdiff
go/parser: Use explicit parser.Mode type.
authorRobert Griesemer <gri@golang.org>
Wed, 25 Jan 2012 00:36:20 +0000 (16:36 -0800)
committerRobert Griesemer <gri@golang.org>
Wed, 25 Jan 2012 00:36:20 +0000 (16:36 -0800)
R=r, bradfitz
CC=golang-dev
https://golang.org/cl/5574058

src/cmd/cgo/ast.go
src/cmd/godoc/parser.go
src/cmd/gofmt/gofmt.go
src/pkg/go/parser/interface.go
src/pkg/go/parser/parser.go

index fc855dd49746a648bef38705071b19a3cad350b7..da6ae4176dab92389ceed830dffe4ea694bd8d55 100644 (file)
@@ -16,7 +16,7 @@ import (
        "strings"
 )
 
-func parse(name string, flags uint) *ast.File {
+func parse(name string, flags parser.Mode) *ast.File {
        ast1, err := parser.ParseFile(fset, name, nil, flags)
        if err != nil {
                if list, ok := err.(scanner.ErrorList); ok {
index fa303e904e346d77205e640d20572d7613a43a9a..da38c52657256ec190b24e5190300dfa086dfe9f 100644 (file)
@@ -17,7 +17,7 @@ import (
        "path/filepath"
 )
 
-func parseFile(fset *token.FileSet, filename string, mode uint) (*ast.File, error) {
+func parseFile(fset *token.FileSet, filename string, mode parser.Mode) (*ast.File, error) {
        src, err := ReadFile(fs, filename)
        if err != nil {
                return nil, err
index 0023e2f218a75a507f4f9268cffa3f072b92ab22..6d610adc0ee0cd4671e1a35ca42f2479b7885aea 100644 (file)
@@ -44,7 +44,7 @@ var (
        fset        = token.NewFileSet()
        exitCode    = 0
        rewrite     func(*ast.File) *ast.File
-       parserMode  uint
+       parserMode  parser.Mode
        printerMode uint
 )
 
@@ -60,7 +60,7 @@ func usage() {
 }
 
 func initParserMode() {
-       parserMode = uint(0)
+       parserMode = parser.Mode(0)
        if *comments {
                parserMode |= parser.ParseComments
        }
index 4b72f38518eeb8636c9995f3497a20e9d8dda3a7..f1b4ce34d1a04fc33a4c37f735d7b023497c3c06 100644 (file)
@@ -45,12 +45,14 @@ func readSource(filename string, src interface{}) ([]byte, error) {
        return ioutil.ReadFile(filename)
 }
 
-// The mode parameter to the Parse* functions is a set of flags (or 0).
+// A Mode value is a set of flags (or 0).
 // They control the amount of source code parsed and other optional
 // parser functionality.
 //
+type Mode uint
+
 const (
-       PackageClauseOnly uint = 1 << iota // parsing stops after package clause
+       PackageClauseOnly Mode = 1 << iota // parsing stops after package clause
        ImportsOnly                        // parsing stops after import declarations
        ParseComments                      // parse comments and add them to AST
        Trace                              // print a trace of parsed productions
@@ -77,7 +79,7 @@ const (
 // representing the fragments of erroneous source code). Multiple errors
 // are returned via a scanner.ErrorList which is sorted by file position.
 //
-func ParseFile(fset *token.FileSet, filename string, src interface{}, mode uint) (*ast.File, error) {
+func ParseFile(fset *token.FileSet, filename string, src interface{}, mode Mode) (*ast.File, error) {
        text, err := readSource(filename, src)
        if err != nil {
                return nil, err
@@ -97,7 +99,7 @@ func ParseFile(fset *token.FileSet, filename string, src interface{}, mode uint)
 // returned. If a parse error occurred, a non-nil but incomplete map and the
 // first error encountered are returned.
 //
-func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, mode uint) (pkgs map[string]*ast.Package, first error) {
+func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, mode Mode) (pkgs map[string]*ast.Package, first error) {
        fd, err := os.Open(path)
        if err != nil {
                return nil, err
@@ -117,7 +119,10 @@ func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, m
                                name := src.Name.Name
                                pkg, found := pkgs[name]
                                if !found {
-                                       pkg = &ast.Package{name, nil, nil, make(map[string]*ast.File)}
+                                       pkg = &ast.Package{
+                                               Name:  name,
+                                               Files: make(map[string]*ast.File),
+                                       }
                                        pkgs[name] = pkg
                                }
                                pkg.Files[filename] = src
index d90f5775df45eff5c6b51c10bffdb62a8e583f5d..ab8953f4fbf60fe98374c84a3accf5bc6076d87c 100644 (file)
@@ -23,7 +23,7 @@ type parser struct {
        scanner scanner.Scanner
 
        // Tracing/debugging
-       mode   uint // parsing mode
+       mode   Mode // parsing mode
        trace  bool // == (mode & Trace != 0)
        indent uint // indentation used for tracing output
 
@@ -52,7 +52,7 @@ type parser struct {
        targetStack [][]*ast.Ident // stack of unresolved labels
 }
 
-func (p *parser) init(fset *token.FileSet, filename string, src []byte, mode uint) {
+func (p *parser) init(fset *token.FileSet, filename string, src []byte, mode Mode) {
        p.file = fset.AddFile(filename, fset.Base(), len(src))
        var m uint
        if mode&ParseComments != 0 {