7a9389330e
gcc/: * gcc.c (default_compilers): Add entry for ".go". * common.opt: Add -static-libgo as a driver option. * doc/install.texi (Configuration): Mention libgo as an option for --enable-shared. Mention go as an option for --enable-languages. * doc/invoke.texi (Overall Options): Mention .go as a file name suffix. Mention go as a -x option. * doc/frontends.texi (G++ and GCC): Mention Go as a supported language. * doc/sourcebuild.texi (Top Level): Mention libgo. * doc/standards.texi (Standards): Add section on Go language. Move references for other languages into their own section. * doc/contrib.texi (Contributors): Mention that I contributed the Go frontend. gcc/testsuite/: * lib/go.exp: New file. * lib/go-dg.exp: New file. * lib/go-torture.exp: New file. * lib/target-supports.exp (check_compile): Match // Go. From-SVN: r167407
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
// Copyright 2010 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.
|
|
|
|
package try
|
|
|
|
import (
|
|
"bytes"
|
|
"regexp" // Used as the package to try.
|
|
"testing"
|
|
)
|
|
|
|
// The global functions in package regexp at time of writing.
|
|
// Doesn't need to be updated unless the entries in this list become invalid.
|
|
var functions = map[string]interface{}{
|
|
"Compile": regexp.Compile,
|
|
"Match": regexp.Match,
|
|
"MatchString": regexp.MatchString,
|
|
"MustCompile": regexp.MustCompile,
|
|
"QuoteMeta": regexp.QuoteMeta,
|
|
}
|
|
|
|
// A wraps arguments to make the test cases nicer to read.
|
|
func A(args ...interface{}) []interface{} {
|
|
return args
|
|
}
|
|
|
|
type Test struct {
|
|
firstArg string // only needed if there is exactly one argument
|
|
result string // minus final newline; might be just the godoc string
|
|
args []interface{}
|
|
}
|
|
|
|
var testRE = regexp.MustCompile("a(.)(.)d")
|
|
|
|
var tests = []Test{
|
|
// A simple expression. The final value is a slice in case the expression is multivalue.
|
|
{"3+4", "3+4 = 7", A([]interface{}{7})},
|
|
// A search for a function.
|
|
{"", "regexp QuoteMeta", A("([])", `\(\[\]\)`)},
|
|
// A search for a function with multiple return values.
|
|
{"", "regexp MatchString", A("abc", "xabcd", true, nil)},
|
|
// Searches for methods.
|
|
{"", "regexp MatchString", A(testRE, "xabcde", true)},
|
|
{"", "regexp NumSubexp", A(testRE, 2)},
|
|
}
|
|
|
|
func TestAll(t *testing.T) {
|
|
re := regexp.MustCompile(".*// godoc ")
|
|
for _, test := range tests {
|
|
b := new(bytes.Buffer)
|
|
output = b
|
|
Main("regexp", test.firstArg, functions, test.args)
|
|
expect := test.result + "\n"
|
|
got := re.ReplaceAllString(b.String(), "")
|
|
if got != expect {
|
|
t.Errorf("expected %q; got %q", expect, got)
|
|
}
|
|
}
|
|
}
|