This libgo patch compiles examples in _test packages.  Previously if
the only names defined by _test packages were examples, the gotest
script would emit an incorrect _testmain.go file.  I worked around
that by marking the example_test.go files +build ignored.  This CL
changes the gotest script to handle this case correctly, and removes
the now-unnecessary build tags.  Bootstrapped and ran Go testsuite on
x86_64-pc-linux-gnu.  Committed to mainline.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 280057)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-f9d1bfb3eec2d388c5f239779fd25a580064dd9d
+92ee4c2e295fc760105f187f6ea6dc65c81fa892
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: libgo/go/compress/flate/example_test.go
===================================================================
--- libgo/go/compress/flate/example_test.go     (revision 279815)
+++ libgo/go/compress/flate/example_test.go     (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package flate_test
 
 import (
Index: libgo/go/compress/gzip/example_test.go
===================================================================
--- libgo/go/compress/gzip/example_test.go      (revision 279815)
+++ libgo/go/compress/gzip/example_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package gzip_test
 
 import (
Index: libgo/go/container/ring/example_test.go
===================================================================
--- libgo/go/container/ring/example_test.go     (revision 279815)
+++ libgo/go/container/ring/example_test.go     (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package ring_test
 
 import (
Index: libgo/go/crypto/sha256/example_test.go
===================================================================
--- libgo/go/crypto/sha256/example_test.go      (revision 279815)
+++ libgo/go/crypto/sha256/example_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package sha256_test
 
 import (
Index: libgo/go/database/sql/example_cli_test.go
===================================================================
--- libgo/go/database/sql/example_cli_test.go   (revision 279815)
+++ libgo/go/database/sql/example_cli_test.go   (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package sql_test
 
 import (
Index: libgo/go/database/sql/example_service_test.go
===================================================================
--- libgo/go/database/sql/example_service_test.go       (revision 279815)
+++ libgo/go/database/sql/example_service_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package sql_test
 
 import (
Index: libgo/go/encoding/csv/example_test.go
===================================================================
--- libgo/go/encoding/csv/example_test.go       (revision 279815)
+++ libgo/go/encoding/csv/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package csv_test
 
 import (
Index: libgo/go/encoding/hex/example_test.go
===================================================================
--- libgo/go/encoding/hex/example_test.go       (revision 279815)
+++ libgo/go/encoding/hex/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package hex_test
 
 import (
Index: libgo/go/encoding/json/example_marshaling_test.go
===================================================================
--- libgo/go/encoding/json/example_marshaling_test.go   (revision 279815)
+++ libgo/go/encoding/json/example_marshaling_test.go   (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package json_test
 
 import (
Index: libgo/go/encoding/json/example_text_marshaling_test.go
===================================================================
--- libgo/go/encoding/json/example_text_marshaling_test.go      (revision 
279815)
+++ libgo/go/encoding/json/example_text_marshaling_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package json_test
 
 import (
Index: libgo/go/encoding/pem/example_test.go
===================================================================
--- libgo/go/encoding/pem/example_test.go       (revision 279815)
+++ libgo/go/encoding/pem/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package pem_test
 
 import (
Index: libgo/go/encoding/xml/example_marshaling_test.go
===================================================================
--- libgo/go/encoding/xml/example_marshaling_test.go    (revision 279815)
+++ libgo/go/encoding/xml/example_marshaling_test.go    (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package xml_test
 
 import (
Index: libgo/go/encoding/xml/example_text_marshaling_test.go
===================================================================
--- libgo/go/encoding/xml/example_text_marshaling_test.go       (revision 
279815)
+++ libgo/go/encoding/xml/example_text_marshaling_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package xml_test
 
 import (
Index: libgo/go/fmt/example_test.go
===================================================================
--- libgo/go/fmt/example_test.go        (revision 279815)
+++ libgo/go/fmt/example_test.go        (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package fmt_test
 
 import (
Index: libgo/go/fmt/gostringer_example_test.go
===================================================================
--- libgo/go/fmt/gostringer_example_test.go     (revision 279815)
+++ libgo/go/fmt/gostringer_example_test.go     (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package fmt_test
 
 import (
Index: libgo/go/fmt/stringer_example_test.go
===================================================================
--- libgo/go/fmt/stringer_example_test.go       (revision 279815)
+++ libgo/go/fmt/stringer_example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package fmt_test
 
 import (
Index: libgo/go/go/types/example_test.go
===================================================================
--- libgo/go/go/types/example_test.go   (revision 279815)
+++ libgo/go/go/types/example_test.go   (working copy)
@@ -5,7 +5,7 @@
 // Only run where builders (build.golang.org) have
 // access to compiled packages for import.
 //
-// +build ignore,!arm,!arm64,!nacl
+// +build !arm,!arm64,!nacl
 
 package types_test
 
@@ -77,7 +77,7 @@ func Unused() { {}; {{ var x int; _ = x
        rx := regexp.MustCompile(` 0x[a-fA-F0-9]*`)
        fmt.Println(rx.ReplaceAllString(buf.String(), ""))
 
-       // Output:
+       // no output for gccgo--can't import "fmt"
        // package "temperature" scope {
        // .  const temperature.Boiling temperature.Celsius
        // .  type temperature.Celsius float64
@@ -147,7 +147,7 @@ func (c *Celsius) SetF(f float64) { *c =
                fmt.Println()
        }
 
-       // Output:
+       // no output for gccgo--can't import "fmt"
        // Method set of temperature.Celsius:
        // method (temperature.Celsius) String() string
        //
Index: libgo/go/hash/crc32/example_test.go
===================================================================
--- libgo/go/hash/crc32/example_test.go (revision 279815)
+++ libgo/go/hash/crc32/example_test.go (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package crc32_test
 
 import (
Index: libgo/go/hash/example_test.go
===================================================================
--- libgo/go/hash/example_test.go       (revision 279815)
+++ libgo/go/hash/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package hash_test
 
 import (
Index: libgo/go/html/example_test.go
===================================================================
--- libgo/go/html/example_test.go       (revision 279815)
+++ libgo/go/html/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package html_test
 
 import (
Index: libgo/go/html/template/example_test.go
===================================================================
--- libgo/go/html/template/example_test.go      (revision 279815)
+++ libgo/go/html/template/example_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package template_test
 
 import (
Index: libgo/go/html/template/examplefiles_test.go
===================================================================
--- libgo/go/html/template/examplefiles_test.go (revision 279815)
+++ libgo/go/html/template/examplefiles_test.go (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package template_test
 
 import (
Index: libgo/go/image/draw/example_test.go
===================================================================
--- libgo/go/image/draw/example_test.go (revision 279815)
+++ libgo/go/image/draw/example_test.go (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package draw_test
 
 import (
Index: libgo/go/image/png/example_test.go
===================================================================
--- libgo/go/image/png/example_test.go  (revision 279815)
+++ libgo/go/image/png/example_test.go  (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package png_test
 
 import (
Index: libgo/go/index/suffixarray/example_test.go
===================================================================
--- libgo/go/index/suffixarray/example_test.go  (revision 279815)
+++ libgo/go/index/suffixarray/example_test.go  (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package suffixarray_test
 
 import (
Index: libgo/go/io/ioutil/example_test.go
===================================================================
--- libgo/go/io/ioutil/example_test.go  (revision 279815)
+++ libgo/go/io/ioutil/example_test.go  (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package ioutil_test
 
 import (
Index: libgo/go/io/ioutil/testdata/hello
===================================================================
--- libgo/go/io/ioutil/testdata/hello   (nonexistent)
+++ libgo/go/io/ioutil/testdata/hello   (working copy)
@@ -0,0 +1 @@
+Hello, Gophers!
Index: libgo/go/log/syslog/example_test.go
===================================================================
--- libgo/go/log/syslog/example_test.go (revision 279815)
+++ libgo/go/log/syslog/example_test.go (working copy)
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
 // +build !windows,!nacl,!plan9
 
 package syslog_test
Index: libgo/go/math/big/example_rat_test.go
===================================================================
--- libgo/go/math/big/example_rat_test.go       (revision 279815)
+++ libgo/go/math/big/example_rat_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package big_test
 
 import (
Index: libgo/go/math/big/floatexample_test.go
===================================================================
--- libgo/go/math/big/floatexample_test.go      (revision 279815)
+++ libgo/go/math/big/floatexample_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package big_test
 
 import (
Index: libgo/go/math/bits/example_test.go
===================================================================
--- libgo/go/math/bits/example_test.go  (revision 279815)
+++ libgo/go/math/bits/example_test.go  (working copy)
@@ -4,8 +4,6 @@
 
 // Code generated by go run make_examples.go. DO NOT EDIT.
 
-// +build ignore
-
 package bits_test
 
 import (
Index: libgo/go/math/cmplx/example_test.go
===================================================================
--- libgo/go/math/cmplx/example_test.go (revision 279815)
+++ libgo/go/math/cmplx/example_test.go (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package cmplx_test
 
 import (
Index: libgo/go/mime/example_test.go
===================================================================
--- libgo/go/mime/example_test.go       (revision 279815)
+++ libgo/go/mime/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package mime_test
 
 import (
Index: libgo/go/mime/quotedprintable/example_test.go
===================================================================
--- libgo/go/mime/quotedprintable/example_test.go       (revision 279815)
+++ libgo/go/mime/quotedprintable/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package quotedprintable_test
 
 import (
Index: libgo/go/net/http/cookiejar/dummy_publicsuffix_test.go
===================================================================
--- libgo/go/net/http/cookiejar/dummy_publicsuffix_test.go      (revision 
279815)
+++ libgo/go/net/http/cookiejar/dummy_publicsuffix_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package cookiejar_test
 
 import "net/http/cookiejar"
Index: libgo/go/net/http/cookiejar/example_test.go
===================================================================
--- libgo/go/net/http/cookiejar/example_test.go (revision 279815)
+++ libgo/go/net/http/cookiejar/example_test.go (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package cookiejar_test
 
 import (
Index: libgo/go/net/http/httptrace/example_test.go
===================================================================
--- libgo/go/net/http/httptrace/example_test.go (revision 279815)
+++ libgo/go/net/http/httptrace/example_test.go (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package httptrace_test
 
 import (
Index: libgo/go/net/http/httputil/example_test.go
===================================================================
--- libgo/go/net/http/httputil/example_test.go  (revision 279815)
+++ libgo/go/net/http/httputil/example_test.go  (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package httputil_test
 
 import (
Index: libgo/go/net/mail/example_test.go
===================================================================
--- libgo/go/net/mail/example_test.go   (revision 279815)
+++ libgo/go/net/mail/example_test.go   (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package mail_test
 
 import (
Index: libgo/go/path/filepath/example_test.go
===================================================================
--- libgo/go/path/filepath/example_test.go      (revision 279815)
+++ libgo/go/path/filepath/example_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package filepath_test
 
 import (
Index: libgo/go/runtime/trace/example_test.go
===================================================================
--- libgo/go/runtime/trace/example_test.go      (revision 279815)
+++ libgo/go/runtime/trace/example_test.go      (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package trace_test
 
 import (
Index: libgo/go/text/scanner/example_test.go
===================================================================
--- libgo/go/text/scanner/example_test.go       (revision 279815)
+++ libgo/go/text/scanner/example_test.go       (working copy)
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ignore
-
 package scanner_test
 
 import (
Index: libgo/testsuite/gotest
===================================================================
--- libgo/testsuite/gotest      (revision 279815)
+++ libgo/testsuite/gotest      (working copy)
@@ -475,7 +475,7 @@ if $havex; then
        cp _gotest_.o `dirname $package`/lib`basename $package`.a
 
        # Force the test version of the package to be imported first,
-       # so that it's type definitions will be used, in case any new
+       # so that its type definitions will be used, in case any new
        # methods appear in export_test.go files.
        echo "package $xpackage" > _first_test.go
        echo 'import _ "'$package'"' >> _first_test.go
@@ -535,6 +535,28 @@ symtogo() {
   done
 }
 
+# Takes an example name and puts any output into the file example.txt.
+# It strips comment markers but does not otherwise change the output.
+exampleoutput() {
+    local n=$(testname $1)
+    local f
+    for f in $gofiles $xgofiles; do
+       if ! grep "^func $n(" $f >/dev/null 2>&1; then
+           continue
+       fi
+       # Copy the output comment, if any, into example.txt.
+       # Remove the comment markers.
+       sed -n "/^func $n(/,/^}$/ p" $f |
+           sed -n '\|// \([Uu]nordered \)\?[Oo]utput:|,$ p' |
+           sed -n '\|//| s|[   ]*// \?||p' > example.txt
+       # Check whether we found an output comment.
+       if ! sed -n '1p' < example.txt | grep '[Oo]utput:' >/dev/null 2>&1; then
+           rm -f example.txt
+       fi
+       return
+    done
+}
+
 {
        # On systems using PPC64 ELF ABI v1 function symbols show up
        # as descriptors in the data section.
@@ -546,7 +568,12 @@ symtogo() {
        pattern='Test([^a-z].*)?'
        # The -p option tells GNU nm not to sort.
        # The -v option tells Solaris nm to sort by value.
-        testsyms=$($NM -p -v _gotest_.o $xofile | egrep " $text 
.*\."$pattern'$' | fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+        testsyms=$($NM -p -v _gotest_.o | egrep " $text .*\."$pattern'$' | 
fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+       testxsyms=
+       if $havex; then
+           testxsyms=$($NM -p -v $xofile | egrep " $text .*\."$pattern'$' | 
fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+           testsyms="$testsyms $testxsyms"
+       fi
         tests=$(symtogo "$testsyms")
        if [ "x$tests" = x ]; then
                echo 'gotest: warning: no tests matching '$pattern in 
_gotest_.o $xofile 1>&2
@@ -554,12 +581,20 @@ symtogo() {
        fi
        # benchmarks are named BenchmarkFoo.
        pattern='Benchmark([^a-z].*)?'
-       benchmarksyms=$($NM -p -v _gotest_.o $xofile | egrep " $text 
.*\."$pattern'$' | fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+       benchmarksyms=$($NM -p -v _gotest_.o | egrep " $text .*\."$pattern'$' | 
fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+       if $havex; then
+           benchmarkxsyms=$($NM -p -v $xofile | egrep " $text .*\."$pattern'$' 
| fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+           benchmarksyms="$benchmarksyms $benchmarkxsyms"
+       fi
         benchmarks=$(symtogo "$benchmarksyms")
 
        # examples are named ExampleFoo
        pattern='Example([^a-z].*)?'
-       examplesyms=$($NM -p -v _gotest_.o $xofile | egrep " $text 
.*\."$pattern'$' | fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+       examplesyms=$($NM -p -v _gotest_.o | egrep " $text .*\."$pattern'$' | 
fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+       if $havex; then
+           examplexsyms=$($NM -p -v $xofile | egrep " $text .*\."$pattern'$' | 
fgrep -v ' __go_' | egrep -v '\.\.\w+$' | sed 's/.* //')
+           examplesyms="$examplesyms $examplexsyms"
+       fi
        examples=$(symtogo "$examplesyms")
 
        # package spec
@@ -570,7 +605,25 @@ symtogo() {
                echo 'import "./_gotest_"'
        fi
        if $havex; then
+           needxtest=false
+           if test -n "$testxsyms" -o -n "$benchmarkxsyms"; then
+               needxtest=true
+           else
+               # Check whether any example has output.
+               for i in $(symtogo "$examplexsyms"); do
+                   exampleoutput $i
+                   if test -f example.txt; then
+                       rm -f example.txt
+                       needxtest=true
+                       break
+                   fi
+               done
+           fi
+           if test x$needxtest = xtrue; then
                echo 'import "./_xtest_"'
+           else
+               echo 'import _ "./_xtest_"'
+           fi
        fi
        echo 'import "testing"'
        echo 'import "testing/internal/testdeps"'
@@ -590,7 +643,7 @@ symtogo() {
        # benchmark array
        # The comment makes the multiline declaration
        # gofmt-safe even when there are no benchmarks.
-       echo 'var benchmarks = []testing.InternalBenchmark{ //'
+       echo 'var benchmarks = []testing.InternalBenchmark{'
        for i in $benchmarks; do
                n=$(testname $i)
                j=$(localname $i)
@@ -599,7 +652,7 @@ symtogo() {
        echo '}'
 
        # examples array
-       echo 'var examples = []testing.InternalExample{ //'
+       echo 'var examples = []testing.InternalExample{'
        for i in $examples; do
                n=$(testname $i)
                j=$(localname $i)
@@ -607,54 +660,37 @@ symtogo() {
                hasoutput=false
                unordered=false
                output=
-               for f in $gofiles $xgofiles; do
-                   if ! grep "^func $n(" $f >/dev/null 2>&1; then
-                       continue
-                   fi
-                   # Copy the output comment, if any, into example.txt.
-                   # Remove the comment markers.
-                   sed -n "/^func $n(/,/^}$/ p" $f |
-                       sed -n '\|// \([Uu]nordered \)\?[Oo]utput:|,$ p' |
-                       sed -n '\|//| s|[       ]*// \?||p' > example.txt
-                   # Check whether we found an output comment.
-                   if ! sed -n '1p' < example.txt | grep '[Oo]utput:' 
>/dev/null 2>&1; then
-                       # An example with no output is only compiled, not run,
-                       # so don't add it to the examples slice.
-                       rm -f example.txt
-                       break
-                   fi
-                   # Check whether the output can be unordered.
-                   unordered=false
-                   if sed -n '1p' < example.txt | grep -i unordered; then
-                       unordered=true
-                   fi
-                   # Remove the output header.
-                   # Quote backslashes.
-                   # Quote quotation characters.
-                   # Turn tab into \t.
-                   # Turn pairs of spaces into " \x20", because $() will
-                   # drop duplicate spaces.
-                   # Drop trailing spaces, and turn newlines into \n.
-                   # Remove leading and trailing \n.
-                   sed '1 s/\([Uu]nordered \)\?[Oo]utput:[     ]*//' < 
example.txt |
-                                sed -e 's/\\/\\\\/g' \
-                                    -e 's/"/\\"/g' \
-                                    -e 's/     /\\t/g' \
-                                    -e 's/  / \\x20/g' \
-                                    -e 's/[    ]*$/\\n/g' |
-                                tr -d '\n' |
-                                sed -e 's/^\(\\n\)*//' \
-                                    -e 's/\(\\n\)*$//' > example2.txt
-                   hasoutput=true
-                   rm -f example.txt
-                   break
-               done
-               if test x$hasoutput = xtrue; then
-                   echo '      {"'$n'", '$j','
-                   sed -e 's/^/                "/' -e 's/$/", /' < example2.txt
-                   echo $unordered'},'
-                   rm -f example2.txt
+               exampleoutput $i
+               if ! test -f example.txt; then
+                   continue
+               fi
+               # Check whether the output can be unordered.
+               unordered=false
+               if sed -n '1p' < example.txt | grep -i unordered >/dev/null 
2>&1; then
+                   unordered=true
                fi
+               # Remove the output header.
+               # Quote backslashes.
+               # Quote quotation characters.
+               # Turn tab into \t.
+               # Turn pairs of spaces into " \x20", because $() will
+               # drop duplicate spaces.
+               # Drop trailing spaces, and turn newlines into \n.
+               # Remove leading and trailing \n.
+               sed '1 s/\([Uu]nordered \)\?[Oo]utput:[         ]*//' < 
example.txt |
+                            sed -e 's/\\/\\\\/g' \
+                                -e 's/"/\\"/g' \
+                                -e 's/ /\\t/g' \
+                                -e 's/  / \\x20/g' \
+                                -e 's/[        ]*$/\\n/g' |
+                            tr -d '\n' |
+                            sed -e 's/^\(\\n\)*//' \
+                                -e 's/\(\\n\)*$//' > example2.txt
+               hasoutput=true
+               echo '  {"'$n'", '$j','
+               sed -e 's/^/            "/' -e 's/$/", /' < example2.txt
+               echo $unordered'},'
+               rm -f example.txt example2.txt
        done
        echo '}'
 

Reply via email to