mirror of
https://github.com/golang/go
synced 2024-11-22 05:04:40 -07:00
d0d251f858
They are broken and hard to make work. They have never worked: if you import "/tmp/x" from "/home/rsc/p.c" then the compiler rewrites this into import "/home/rsc/tmp/x", which is clearly wrong. Also we just disallowed the : character in import paths, so import "c:/foo" is already not allowed. Finally, in order to support absolute paths well in a build tool we'd have to provide a mechanism to instruct the compiler to resolve absolute imports by looking in some other tree (where the binaries live) and provide a mapping from absolute path to location in that tree. This CL avoids adding that complexity. This is not part of the language spec (and should not be), so no spec change is needed. If we need to make them work later, we can. R=ken2 CC=golang-dev https://golang.org/cl/5712043
56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
// errorcheck
|
|
|
|
// 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.
|
|
|
|
// Verify that invalid imports are rejected by the compiler.
|
|
// Does not compile.
|
|
|
|
package main
|
|
|
|
// Correct import paths.
|
|
import _ "fmt"
|
|
import _ `time`
|
|
import _ "m\x61th"
|
|
import _ "go/parser"
|
|
|
|
// Correct import paths, but the packages don't exist.
|
|
// Don't test.
|
|
//import "a.b"
|
|
//import "greek/αβ"
|
|
|
|
// Import paths must be strings.
|
|
import 42 // ERROR "import statement"
|
|
import 'a' // ERROR "import statement"
|
|
import 3.14 // ERROR "import statement"
|
|
import 0.25i // ERROR "import statement"
|
|
|
|
// 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"
|