$(L) -o pretty pretty.6
test: pretty
- pretty -s *.go
- pretty -s ../gosrc/*.go
- #pretty -s $(GOROOT)/test/*.go # contains incorrect programs
- pretty -s $(GOROOT)/test/235.go
- pretty -s $(GOROOT)/test/args.go
- pretty -s $(GOROOT)/test/bufiolib.go
- pretty -s $(GOROOT)/test/char_lit.go
- pretty -s $(GOROOT)/test/complit.go
- pretty -s $(GOROOT)/test/const.go
- pretty -s $(GOROOT)/test/dialgoogle.go
- pretty -s $(GOROOT)/test/empty.go
- pretty -s $(GOROOT)/test/env.go
- pretty -s $(GOROOT)/test/float_lit.go
- pretty -s $(GOROOT)/test/fmt_test.go
- pretty -s $(GOROOT)/test/for.go
- pretty -s $(GOROOT)/test/func.go
- pretty -s $(GOROOT)/test/func1.go
- pretty -s $(GOROOT)/test/func2.go
- pretty -s $(GOROOT)/src/pkg/*.go
- pretty -s $(GOROOT)/src/lib/*.go
- pretty -s $(GOROOT)/src/lib/*/*.go
- pretty -s $(GOROOT)/usr/r/*/*.go
- echo "DONE"
-
-testnoisy: pretty
- pretty *.go
- pretty ../gosrc/*.go
- #pretty $(GOROOT)/test/*.go # contains incorrect programs
- pretty $(GOROOT)/test/235.go
- pretty $(GOROOT)/test/args.go
- pretty $(GOROOT)/test/bufiolib.go
- pretty $(GOROOT)/test/char_lit.go
- pretty $(GOROOT)/test/complit.go
- pretty $(GOROOT)/test/const.go
- pretty $(GOROOT)/test/dialgoogle.go
- pretty $(GOROOT)/test/empty.go
- pretty $(GOROOT)/test/env.go
- pretty $(GOROOT)/test/float_lit.go
- pretty $(GOROOT)/test/fmt_test.go
- pretty $(GOROOT)/test/for.go
- pretty $(GOROOT)/test/func.go
- pretty $(GOROOT)/test/func1.go
- pretty $(GOROOT)/test/func2.go
- pretty $(GOROOT)/src/pkg/*.go
- pretty $(GOROOT)/src/lib/*.go
- pretty $(GOROOT)/src/lib/*/*.go
- pretty $(GOROOT)/usr/r/*/*.go
- echo "DONE"
+ test.sh
install: pretty
cp pretty $(HOME)/bin/pretty
}
-func (P *Parser) ParseExportDecl() {
+func (P *Parser) ParseExportDecl() *Node.Decl {
P.Trace("ExportDecl");
// TODO This is deprecated syntax and should go away eventually.
// (Also at the moment the syntax is everything goes...)
//P.Expect(Scanner.EXPORT);
+ d := Node.NewDecl(P.pos, Scanner.EXPORT, false);
+
has_paren := false;
if P.tok == Scanner.LPAREN {
P.Next();
has_paren = true;
}
+ d.ident = P.ParseIdentList();
+ /*
for P.tok == Scanner.IDENT {
P.ParseIdent();
if P.tok == Scanner.COMMA {
P.Next(); // TODO this seems wrong
}
}
+ */
if has_paren {
P.Expect(Scanner.RPAREN)
}
P.Ecart();
+ return d;
}
P.Error(P.pos, "cannot mark export declaration for export");
}
P.Next();
- P.ParseExportDecl();
+ d = P.ParseExportDecl();
default:
if exported && (P.tok == Scanner.IDENT || P.tok == Scanner.LPAREN) {
- P.ParseExportDecl();
+ d = P.ParseExportDecl();
} else {
P.Error(P.pos, "declaration expected");
P.Next(); // make progress
func (P *Printer) OpenScope(paren string) {
- P.semi, P.newl = false, 0;
+ //P.semi, P.newl = false, 0;
P.String(0, paren);
P.level++;
P.indent++;
}
case Scanner.MAP:
- P.String(t.pos, "[");
+ P.String(t.pos, "map [");
P.Type(t.key);
P.String(0, "]");
P.Type(t.elt);
if s.expr != nil {
P.Expr(s.expr);
}
- if has_post {
+ if s.tok == Scanner.FOR {
P.semi = true;
- P.Blank();
- P.Stat(s.post);
- P.semi = false
+ if has_post {
+ P.Blank();
+ P.Stat(s.post);
+ P.semi = false
+ }
}
}
P.Blank();
P.Blank();
}
- if d.ident == nil {
+ if d.tok != Scanner.FUNC && d.list != nil {
P.OpenScope("(");
for i := 0; i < d.list.len(); i++ {
P.Declaration(d.list.at(i).(*Node.Decl), true);
--- /dev/null
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+#!/bin/bash
+
+TMP1=test_tmp1.go
+TMP2=test_tmp2.go
+COUNT=0
+
+apply1() {
+ #echo $1 $2
+ $1 $2
+ let COUNT=$COUNT+1
+}
+
+apply() {
+ for F in \
+ $GOROOT/usr/gri/pretty/*.go \
+ $GOROOT/usr/gri/gosrc/*.go \
+ $GOROOT/test/235.go \
+ $GOROOT/test/args.go \
+ $GOROOT/test/bufiolib.go \
+ $GOROOT/test/char_lit.go \
+ $GOROOT/test/complit.go \
+ $GOROOT/test/const.go \
+ $GOROOT/test/dialgoogle.go \
+ $GOROOT/test/empty.go \
+ $GOROOT/test/env.go \
+ $GOROOT/test/float_lit.go \
+ $GOROOT/test/fmt_test.go \
+ $GOROOT/test/for.go \
+ $GOROOT/test/func.go \
+ $GOROOT/test/func1.go \
+ $GOROOT/test/func2.go \
+ $GOROOT/src/pkg/*.go \
+ $GOROOT/src/lib/*.go \
+ $GOROOT/src/lib/*/*.go \
+ $GOROOT/usr/r/*/*.go
+ do
+ apply1 $1 $F
+ done
+}
+
+cleanup() {
+ rm -f $TMP1 $TMP2
+}
+
+silent() {
+ cleanup
+ pretty -s $1 > $TMP1
+ if [ $? != 0 ]; then
+ cat $TMP1
+ echo "Error (silent mode test): test.sh $1"
+ exit 1
+ fi
+}
+
+idempotent() {
+ cleanup
+ pretty $1 > $TMP1
+ pretty $TMP1 > $TMP2
+ cmp -s $TMP1 $TMP2
+ if [ $? != 0 ]; then
+ diff $TMP1 $TMP2
+ echo "Error (idempotency test): test.sh $1"
+ exit 1
+ fi
+}
+
+runtest() {
+ #echo "Testing silent mode"
+ cleanup
+ $1 silent $2
+
+ #echo "Testing idempotency"
+ cleanup
+ $1 idempotent $2
+}
+
+runtests() {
+ if [ $# == 0 ]; then
+ runtest apply
+ else
+ for F in $*; do
+ runtest apply1 $F
+ done
+ fi
+}
+
+runtests $*
+cleanup
+let COUNT=$COUNT/2 # divide by number of tests in runtest
+echo "PASSED ($COUNT files)"
+