aboutsummaryrefslogtreecommitdiff
path: root/test/import6.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2017-02-09 16:00:23 -0800
committerRobert Griesemer <gri@golang.org>2017-02-10 01:22:30 +0000
commit3fd3171c2c2b3f55cb9692b45f2ebb842e9b0b42 (patch)
treefbac555b7d7bd8e55bb3b6bdb43554ba74823d33 /test/import6.go
parent09762ccff79ebf08839f8954ab99c17d41f071e2 (diff)
downloadgo-3fd3171c2c2b3f55cb9692b45f2ebb842e9b0b42.tar.gz
go-3fd3171c2c2b3f55cb9692b45f2ebb842e9b0b42.zip
cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests
The gcCompat mode was introduced to match the new parser's node position setup exactly with the positions used by the original parser. Some of the gcCompat adjustments were required to satisfy syntax error test cases, and the rest were required to make toolstash cmp pass. This change removes the former gcCompat adjustments and instead adjusts the respective test cases as necessary. In some cases this makes the error lines consistent with the ones reported by gccgo. Where it has changed, the position associated with a given syntactic construct is the position (line/col number) of the left-most token belonging to the construct. Change-Id: I5b60c00c5999a895c4d6d6e9b383c6405ccf725c Reviewed-on: https://go-review.googlesource.com/36695 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'test/import6.go')
-rw-r--r--test/import6.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/import6.go b/test/import6.go
new file mode 100644
index 0000000000..c19280f0e0
--- /dev/null
+++ b/test/import6.go
@@ -0,0 +1,38 @@
+// errorcheck
+
+// Copyright 2017 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.
+
+// Verify that invalid imports are rejected by the compiler.
+// Does not compile.
+
+package main
+
+// Each of these pairs tests both `` vs "" strings
+// and also use of invalid characters spelled out as
+// escape sequences and written directly.
+// For example `"\x00"` tests import "\x00"
+// while "`\x00`" tests import `<actual-NUL-byte>`.
+import "" // ERROR "import path"
+import `` // ERROR "import path"
+import "\x00" // ERROR "import path"
+import `\x00` // ERROR "import path"
+import "\x7f" // ERROR "import path"
+import `\x7f` // ERROR "import path"
+import "a!" // ERROR "import path"
+import `a!` // ERROR "import path"
+import "a b" // ERROR "import path"
+import `a b` // ERROR "import path"
+import "a\\b" // ERROR "import path"
+import `a\\b` // ERROR "import path"
+import "\"`a`\"" // ERROR "import path"
+import `\"a\"` // ERROR "import path"
+import "\x80\x80" // ERROR "import path"
+import `\x80\x80` // ERROR "import path"
+import "\xFFFD" // ERROR "import path"
+import `\xFFFD` // ERROR "import path"
+
+// Invalid local imports.
+import "/foo" // ERROR "import path cannot be absolute path"
+import "c:/foo" // ERROR "import path contains invalid character"