1. 08 Apr, 2011 13 commits
    • Russ Cox's avatar
      gofix: reflect changes · fb94eb19
      Russ Cox authored
      R=gri
      CC=golang-dev
      https://golang.org/cl/4343047
      fb94eb19
    • Russ Cox's avatar
      gofix: add -diff, various fixes and helpers · 877c1892
      Russ Cox authored
        * add -diff command line option
        * use scoping information in refersTo, isPkgDot, isPtrPkgDot.
        * add new scoping-based helpers countUses, rewriteUses, assignsTo, isTopName.
        * rename rewrite to walk, add walkBeforeAfter.
        * add toy typechecker, a placeholder for go/types
      
      R=gri
      CC=golang-dev
      https://golang.org/cl/4285053
      877c1892
    • Russ Cox's avatar
      reflect: new Type and Value definitions · fb175cf7
      Russ Cox authored
      Type is now an interface that implements all the possible type methods.
      Instead of a type switch on a reflect.Type t, switch on t.Kind().
      If a method is invoked on the wrong kind of type (for example,
      calling t.Field(0) when t.Kind() != Struct), the call panics.
      
      There is one method renaming: t.(*ChanType).Dir() is now t.ChanDir().
      
      Value is now a struct value that implements all the possible value methods.
      Instead of a type switch on a reflect.Value v, switch on v.Kind().
      If a method is invoked on the wrong kind of value (for example,
      calling t.Recv() when t.Kind() != Chan), the call panics.
      
      Since Value is now a struct, not an interface, its zero value
      cannot be compared to nil.  Instead of v != nil, use v.IsValid().
      Instead of other uses of nil as a Value, use Value{}, the zero value.
      
      Many methods have been renamed, most due to signature conflicts:
      
                 OLD                          NEW
      
          v.(*ArrayValue).Elem             v.Index
          v.(*BoolValue).Get               v.Bool
          v.(*BoolValue).Set               v.SetBool
          v.(*ChanType).Dir                v.ChanDir
          v.(*ChanValue).Get               v.Pointer
          v.(*ComplexValue).Get            v.Complex
          v.(*ComplexValue).Overflow       v.OverflowComplex
          v.(*ComplexValue).Set            v.SetComplex
          v.(*FloatValue).Get              v.Float
          v.(*FloatValue).Overflow         v.OverflowFloat
          v.(*FloatValue).Set              v.SetFloat
          v.(*FuncValue).Get               v.Pointer
          v.(*InterfaceValue).Get          v.InterfaceData
          v.(*IntValue).Get                v.Int
          v.(*IntValue).Overflow           v.OverflowInt
          v.(*IntValue).Set                v.SetInt
          v.(*MapValue).Elem               v.MapIndex
          v.(*MapValue).Get                v.Pointer
          v.(*MapValue).Keys               v.MapKeys
          v.(*MapValue).SetElem            v.SetMapIndex
          v.(*PtrValue).Get                v.Pointer
          v.(*SliceValue).Elem             v.Index
          v.(*SliceValue).Get              v.Pointer
          v.(*StringValue).Get             v.String
          v.(*StringValue).Set             v.SetString
          v.(*UintValue).Get               v.Uint
          v.(*UintValue).Overflow          v.OverflowUint
          v.(*UintValue).Set               v.SetUint
          v.(*UnsafePointerValue).Get      v.Pointer
          v.(*UnsafePointerValue).Set      v.SetPointer
      
      Part of the motivation for this change is to enable a more
      efficient implementation of Value, one that does not allocate
      memory during most operations.  To reduce the size of the CL,
      this CL's implementation is a wrapper around the old API.
      Later CLs will make the implementation more efficient without
      changing the API.
      
      Other CLs to be submitted at the same time as this one
      add support for this change to gofix (4343047) and update
      the Go source tree (4353043).
      
      R=gri, iant, niemeyer, r, rog, gustavo, r2
      CC=golang-dev
      https://golang.org/cl/4281055
      fb175cf7
    • Russ Cox's avatar
      gofix: be more conservative about rewrite to os.Create · 846a368b
      Russ Cox authored
      Rewrite only if we understood all the flags we saw.
      
      R=r
      CC=golang-dev
      https://golang.org/cl/4376046
      846a368b
    • Alex Brainman's avatar
      gotest: handle \r\n returned by gomake on Windows (fixes build) · d9763147
      Alex Brainman authored
      R=golang-dev, peterGo, rsc1
      CC=Joe Poirier, golang-dev
      https://golang.org/cl/4370048
      d9763147
    • Robert Griesemer's avatar
    • Robert Griesemer's avatar
      gotype: use go/types GcImporter · 1baffa7d
      Robert Griesemer authored
      R=rsc
      CC=golang-dev
      https://golang.org/cl/4358043
      1baffa7d
    • Robert Griesemer's avatar
      go/types: New Go type hierarchy implementation for AST. · a87382e7
      Robert Griesemer authored
      This CL defines a new, more Go-like representation of
      Go types (different structs for different types as
      opposed to a single Type node). It also implements
      an ast.Importer for object/archive files generated
      by the gc compiler tool chain. Besides the individual
      type structs, the main difference is the handling of
      named types: In the old world, a named type had a
      non-nil *Object pointer but otherwise looked no
      different from other types. In this new model, named
      types have their own representation types.Name. As
      a result, resolving cycles is a bit simpler during
      construction, at the cost of having to deal with
      types.Name nodes explicitly later. It remains to be
      seen if this is a good approach. Nevertheless, code
      involving types reads more nicely and benefits from
      full type checking. Also, the representation seems
      to more closely match the spec wording.
      
      Credits: The original version of the gc importer was
      written by Evan Shaw (chickencha@gmail.com). The new
      version in this CL is based largely on Evan's original
      code but contains bug fixes, a few simplifications,
      some restructuring, and was adjusted to use the
      new type hierarchy. I have added a comprehensive test
      that imports all packages found under $GOROOT/pkg (with
      a 3s time-out to limit the run-time of the test). Run
      gotest -v for details.
      
      The original version of ExportData (exportdata.go) was
      written by Russ Cox (rsc@golang.org). The current version
      is returning the internal buffer positioned at the beginning
      of the export data instead of printing the export data to
      stdout.
      
      With the new types package, the existing in-progress
      typechecker package is deprecated. I will delete it
      once all functionality has been brought over.
      
      R=eds, rog, rsc
      CC=golang-dev
      https://golang.org/cl/4314054
      a87382e7
    • Robert Griesemer's avatar
      scanner: better TokenString output · 70bf4215
      Robert Griesemer authored
      R=rsc
      CC=golang-dev
      https://golang.org/cl/4373048
      70bf4215
    • John DeNero's avatar
      A codewalk through a simple program that illustrates several aspects of Go… · 4ffee801
      John DeNero authored
      A codewalk through a simple program that illustrates several aspects of Go functions: function objects, higher-order functions, variadic functions, tail recursion, etc.  The example program simulates the game of Pig, a dice game with simple rules but a nontrivial solution.
      
      R=adg, rsc, iant2, r
      CC=golang-dev
      https://golang.org/cl/4306045
      4ffee801
    • Alex Brainman's avatar
      test/bench: enable build and test on Windows · 776fd725
      Alex Brainman authored
      R=golang-dev, rsc1
      CC=golang-dev
      https://golang.org/cl/4366043
      776fd725
    • Alex Brainman's avatar
      misc/cgo/life: enable build and test on Windows · 2683c76d
      Alex Brainman authored
      R=golang-dev, rsc1
      CC=golang-dev, vcc
      https://golang.org/cl/4374044
      2683c76d
    • Alex Brainman's avatar
      syscall: fix Windows Signalled · d3cd0c07
      Alex Brainman authored
      Thanks to fhs.
      
      R=golang-dev, r2
      CC=ality, fhs, golang-dev
      https://golang.org/cl/4375044
      d3cd0c07
  2. 07 Apr, 2011 10 commits
  3. 06 Apr, 2011 11 commits
  4. 05 Apr, 2011 6 commits