]> Cypherpunks repositories - gostls13.git/commitdiff
assorted cleanup
authorRuss Cox <rsc@golang.org>
Mon, 9 Nov 2009 05:08:27 +0000 (21:08 -0800)
committerRuss Cox <rsc@golang.org>
Mon, 9 Nov 2009 05:08:27 +0000 (21:08 -0800)
R=r, iant
CC=go-dev
http://go/go-review/1025024

doc/contribute.html
doc/go_mem.html
lib/codereview/codereview.py
src/cmd/gc/print.c
src/pkg/bufio/bufio.go
src/pkg/compress/flate/inflate.go
src/pkg/crypto/hmac/hmac_test.go
src/pkg/go/doc/comment.go
src/pkg/go/parser/interface.go
src/pkg/os/os_test.go

index 5e40c9e12feffe8fdcf2f9e7fad945f592fb02c8..01a2c41c0306895a373c7e250c7a997f44fb3da5 100644 (file)
@@ -1,10 +1,5 @@
 <!-- Contributing to the Go project -->
 
-<!-- TODO(rsc):
-       Mention community resources like IRC, mailing lists,
-       change list email groups, etc.
--->
-
 <h2>Introduction</h2>
 
 <p>
@@ -26,6 +21,29 @@ enables discussions about design before much code
 has been written.
 </p>
 
+<h2>Community resources</h2>
+
+<p>
+For real-time help, there may be users or developers on the
+<code>#go-nuts</code> on the <a href="http://freenode.net/">Freenode</a> IRC server.
+</p>
+
+<p>
+The official mailing list for discussion of the Go language is
+<a href="http://groups.google.com/group/golang-nuts">Go Nuts</a>.
+</p>
+
+<p>
+Bugs can be reported using the <a href="http://code.google.com/p/go/issues/list">Go issue tracker</a>.
+</p>
+
+<p>
+For those who wish to keep up with development,
+there is another mailing list, <a href="http://groups.google.com/group/golang-checkins">golang-checkins</a>,
+that receives a message summarizing each checkin to the Go repository.
+</p>
+
+
 <h2>Creating a new package</h2>
 
 <p>
@@ -244,7 +262,7 @@ The Mercurial configuration file format does not allow environment variable subs
 <p>
 The code review server uses a Google Account to authenticate.
 (If you can use the account to
-<a href="https://www.google.com/accounts/Login?hl=en&continue=http://www.google.com/">sign in at google.com</a>,
+<a href="https://www.google.com/accounts/Login?hl=en&amp;continue=http://www.google.com/">sign in at google.com</a>,
 you can use it to sign in to the code review server.)
 </p>
 
@@ -425,7 +443,7 @@ warning: conflicts during merge.
 <i>merging src/pkg/flag/flag_test.go failed!</i>
 1 file updated, 0 files merged, 0 files removed, 1 file unresolved
 use 'hg resolve' to retry unresolved file merges
-$ 
+$
 </pre>
 
 <p>
@@ -468,8 +486,8 @@ that you have corrected the file.
 </p>
 
 <p>
-If you had been editing the file, say for debugging, but do not 
-care to preserve your changes, you can run 
+If you had been editing the file, say for debugging, but do not
+care to preserve your changes, you can run
 <code>hg revert flag_test.go</code> to abandon your
 changes.
 </p>
index 1ecddddff0a6b351ff8880e6e1235cac3d28b19c..ede79720a656d3f306c117eefbc711e0bd0fd086 100644 (file)
@@ -233,7 +233,7 @@ The <code>sync</code> package implements two lock data types,
 </p>
 
 <p class="rule">
-For any <code>sync.Mutex</code> variable <code>l</code> and <i>n</i> &lt; <i>m</i>,
+For any <code>sync.Mutex</code> or <code>sync.RWMutex</code> variable <code>l</code> and <i>n</i> &lt; <i>m</i>,
 the <i>n</i>'th call to <code>l.Unlock()</code> happens before the <i>m</i>'th call to <code>l.Lock()</code> returns.
 </p>
 
@@ -265,8 +265,11 @@ before the second call to <code>l.Lock()</code> (in <code>main</code>) returns,
 which happens before the <code>print</code>.
 </p>
 
-<p>
-TODO(rsc): <code>sync.RWMutex</code>.
+<p class="rule">
+For any call to <code>l.RLock</code> on a <code>sync.RWMutex</code> variable <code>l</code>,
+there is an <i>n</i> such that the <code>l.RLock</code> happens (returns) after the <i>n</i>'th call to
+<code>l.Unlock</code> and the matching <code>l.RUnlock</code> happens
+before the <i>n</i>+1'th call to <code>l.Lock</code>.
 </p>
 
 <h3>Once</h3>
index a8ba54025ab2d89ba897897985a226593acb62d1..e5878e296d06c8cb65faee57a700b304c3888bc3 100644 (file)
@@ -1078,7 +1078,15 @@ def sync(ui, repo, **opts):
        sync_changes(ui, repo)
 
 def sync_note(msg):
-       if msg == 'resolving manifests\n' or msg == 'searching for changes\n':
+       # we run sync (pull -u) in verbose mode to get the
+       # list of files being updated, but that drags along
+       # a bunch of messages we don't care about.
+       # omit them.
+       if msg == 'resolving manifests\n':
+               return
+       if msg == 'searching for changes\n':
+               return
+       if msg == "couldn't find merge tool hgmerge\n":
                return
        sys.stdout.write(msg)
 
index 2960f2a11e366fb5e8761695773745e479dc7df6..14dd57fa175f5e19e58437a98363db0d53d6091a 100644 (file)
@@ -293,7 +293,7 @@ exprfmt(Fmt *f, Node *n, int prec)
        case OCONVIFACE:
        case OARRAYBYTESTR:
        case ORUNESTR:
-               if(n->type->sym == S)
+               if(n->type == T || n->type->sym == S)
                        fmtprint(f, "(%T)(", n->type);
                else
                        fmtprint(f, "%T(", n->type);
index e66d72a353b29a8ea375bcd1d770dd4b5f52091e..c529f7d94d8c91ced955a5b9596e2b901c845ea9 100644 (file)
@@ -15,12 +15,6 @@ import (
 )
 
 
-// TODO:
-//     - maybe define an interface
-//     - Reader: ReadRune, UnreadRune ?
-//             could make ReadRune generic if we dropped UnreadRune
-//     - buffered output
-
 const (
        defaultBufSize = 4096;
 )
index 2fe494f7bcef885e191a3951044bd478bf74a3d8..a39166d961ead597ec12d37e34056d38f50c08f9 100644 (file)
@@ -197,7 +197,6 @@ type Reader interface {
 }
 
 // Inflate state.
-// TODO(rsc): Expose this or not?
 type inflater struct {
        // Input/output sources.
        r       Reader;
index 82ed3ab821ed0187205a4d11caf3f2f65dcc0a7b..6df64841342e4c251eb01d689221e1445fd7d0bf 100644 (file)
@@ -4,8 +4,6 @@
 
 package hmac
 
-// TODO(rsc): better test
-
 import (
        "hash";
        "fmt";
index 75eb7064bff986850795b8705adc64dfb40a4288..3d04c349c436f9e630c2daa5aa72e8616705e964 100644 (file)
@@ -133,7 +133,7 @@ func commentEscape(w io.Writer, s []byte) {
        last := 0;
        for i := 0; i < len(s)-1; i++ {
                if s[i] == s[i+1] && (s[i] == '`' || s[i] == '\'') {
-                       template.HtmlEscape(w, s[last:i]);
+                       template.HTMLEscape(w, s[last:i]);
                        last = i+2;
                        switch s[i] {
                        case '`':
@@ -144,7 +144,7 @@ func commentEscape(w io.Writer, s []byte) {
                        i++;    // loop will add one more
                }
        }
-       template.HtmlEscape(w, s[last:len(s)]);
+       template.HTMLEscape(w, s[last:len(s)]);
 }
 
 
@@ -211,10 +211,9 @@ func unindent(block [][]byte) {
 //
 // TODO(rsc): I'd like to pass in an array of variable names []string
 // and then italicize those strings when they appear as words.
-func ToHtml(w io.Writer, s []byte) {
+func ToHTML(w io.Writer, s []byte) {
        inpara := false;
 
-       /* TODO(rsc): 6g cant generate code for these
        close := func() {
                if inpara {
                        w.Write(html_endp);
@@ -227,7 +226,6 @@ func ToHtml(w io.Writer, s []byte) {
                        inpara = true;
                }
        };
-       */
 
        lines := split(s);
        unindent(lines);
@@ -235,19 +233,13 @@ func ToHtml(w io.Writer, s []byte) {
                line := lines[i];
                if isBlank(line) {
                        // close paragraph
-                       if inpara {
-                               w.Write(html_endp);
-                               inpara = false;
-                       }
+                       close();
                        i++;
                        continue;
                }
                if indentLen(line) > 0 {
                        // close paragraph
-                       if inpara {
-                               w.Write(html_endp);
-                               inpara = false;
-                       }
+                       close();
 
                        // count indented or blank lines
                        j := i+1;
@@ -268,21 +260,15 @@ func ToHtml(w io.Writer, s []byte) {
                        // just html escaping
                        w.Write(html_pre);
                        for _, line := range block {
-                               template.HtmlEscape(w, line);
+                               template.HTMLEscape(w, line);
                        }
                        w.Write(html_endpre);
                        continue;
                }
                // open paragraph
-               if !inpara {
-                       w.Write(html_p);
-                       inpara = true;
-               }
+               open();
                commentEscape(w, lines[i]);
                i++;
        }
-       if inpara {
-               w.Write(html_endp);
-               inpara = false;
-       }
+       close();
 }
index 714add4331af5ae969824f9d00ae22e87f7d59eb..3c9be7532c255ec792a6964244227026db397f13 100644 (file)
@@ -63,8 +63,7 @@ func ParseExpr(filename string, src interface{}) (ast.Expr, os.Error) {
 
        var p parser;
        p.init(filename, data, 0);
-       x := p.parseExpr();     // TODO 6g bug - function call order in expr lists
-       return x, p.GetError(scanner.Sorted);
+       return p.parseExpr(), p.GetError(scanner.Sorted);
 }
 
 
@@ -81,8 +80,7 @@ func ParseStmtList(filename string, src interface{}) ([]ast.Stmt, os.Error) {
 
        var p parser;
        p.init(filename, data, 0);
-       list := p.parseStmtList();      // TODO 6g bug - function call order in expr lists
-       return list, p.GetError(scanner.Sorted);
+       return p.parseStmtList(), p.GetError(scanner.Sorted);
 }
 
 
@@ -99,8 +97,7 @@ func ParseDeclList(filename string, src interface{}) ([]ast.Decl, os.Error) {
 
        var p parser;
        p.init(filename, data, 0);
-       list := p.parseDeclList();      // TODO 6g bug - function call order in expr lists
-       return list, p.GetError(scanner.Sorted);
+       return p.parseDeclList(), p.GetError(scanner.Sorted);
 }
 
 
@@ -130,8 +127,7 @@ func ParseFile(filename string, src interface{}, mode uint) (*ast.File, os.Error
 
        var p parser;
        p.init(filename, data, mode);
-       prog := p.parseFile();  // TODO 6g bug - function call order in expr lists
-       return prog, p.GetError(scanner.NoMultiples);
+       return p.parseFile(), p.GetError(scanner.NoMultiples);
 }
 
 
index 4601c45b9e32be21f5d728a7d7619df50aa486a6..832ce608332112dff116f7b0097e131fd2a13d73 100644 (file)
@@ -511,7 +511,7 @@ func TestTime(t *testing.T) {
        // A common failure mode on Darwin is to get 0, 0,
        // because it returns the time in registers instead of
        // filling in the structure passed to the system call.
-       // TODO(rsc): Too bad the compiler doesn't know that
+       // Too bad the compiler doesn't know that
        // 365.24*86400 is an integer.
        sec, nsec, err := Time();
        if sec < (2009-1970)*36524*864 {