blob: 6480acff92c52ea36ecb5cb54c30f1006f12142a [file] [log] [blame]
Russ Coxd2cc9882012-02-16 23:50:37 -05001// errorcheck
Russ Cox33f3afa2012-01-31 17:29:59 -05002
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
Anthony Martindc387562012-02-24 14:48:36 -05007// Verify that invalid imports are rejected by the compiler.
Rob Pike501f0b52012-02-23 18:47:26 +11008// Does not compile.
Russ Cox33f3afa2012-01-31 17:29:59 -05009
10package main
11
Anthony Martindc387562012-02-24 14:48:36 -050012// Correct import paths.
13import _ "fmt"
14import _ `time`
15import _ "m\x61th"
16import _ "go/parser"
17
18// Correct import paths, but the packages don't exist.
19// Don't test.
20//import "a.b"
21//import "greek/αβ"
22
23// Import paths must be strings.
24import 42 // ERROR "import statement"
25import 'a' // ERROR "import statement"
26import 3.14 // ERROR "import statement"
27import 0.25i // ERROR "import statement"
28
29// Each of these pairs tests both `` vs "" strings
30// and also use of invalid characters spelled out as
31// escape sequences and written directly.
32// For example `"\x00"` tests import "\x00"
33// while "`\x00`" tests import `<actual-NUL-byte>`.
34import "" // ERROR "import path"
35import `` // ERROR "import path"
36import "\x00" // ERROR "import path"
37import `\x00` // ERROR "import path"
38import "\x7f" // ERROR "import path"
39import `\x7f` // ERROR "import path"
40import "a!" // ERROR "import path"
41import `a!` // ERROR "import path"
42import "a b" // ERROR "import path"
43import `a b` // ERROR "import path"
44import "a\\b" // ERROR "import path"
45import `a\\b` // ERROR "import path"
46import "\"`a`\"" // ERROR "import path"
47import `\"a\"` // ERROR "import path"
48import "\x80\x80" // ERROR "import path"
49import `\x80\x80` // ERROR "import path"
50import "\xFFFD" // ERROR "import path"
51import `\xFFFD` // ERROR "import path"
Russ Coxd0d251f2012-02-29 15:28:36 -050052
53// Invalid local imports.
54import "/foo" // ERROR "import path cannot be absolute path"
55import "c:/foo" // ERROR "import path contains invalid character"