/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue54542.go
67 строк
1 KB
Cuong Manh Le
cmd/compile: emit error message on mismatch import path
03 июл 2024, 16:03
03 июл 2024, 16:03
71f9dbb
Код
Авторство
О чём код?
// run //go:build !js && !wasip1 // Copyright 2024 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 main import ( "bytes" "fmt" "os" "os/exec" "path/filepath" ) const aSrc = `package a func A() { println("a") } ` const mainSrc = `package main import "a" func main() { a.A() } ` var srcs = map[string]string{ "a.go": aSrc, "main.go": mainSrc, } func main() { dir, err := os.MkdirTemp("", "issue54542") if err != nil { panic(err) } defer os.RemoveAll(dir) for fn, src := range srcs { if err := os.WriteFile(filepath.Join(dir, fn), []byte(src), 0644); err != nil { panic(err) } } if _, err := runInDir(dir, "tool", "compile", "-p=lie", "a.go"); err != nil { panic(err) } out, err := runInDir(dir, "tool", "compile", "-I=.", "-p=main", "main.go") if err == nil { panic("compiling succeed unexpectedly") } if bytes.Contains(out, []byte("internal compiler error:")) { panic(fmt.Sprintf("unexpected ICE:\n%s", string(out))) } } func runInDir(dir string, args ...string) ([]byte, error) { cmd := exec.Command("go", args...) cmd.Dir = dir return cmd.CombinedOutput() }