1// Copyright 2018 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build gccgo
6
7package goroot
8
9import (
10	"os"
11	"path/filepath"
12	"strings"
13)
14
15// IsStandardPackage reports whether path is a standard package,
16// given goroot and compiler.
17func IsStandardPackage(goroot, compiler, path string) bool {
18	switch compiler {
19	case "gc":
20		dir := filepath.Join(goroot, "src", path)
21		dirents, err := os.ReadDir(dir)
22		if err != nil {
23			return false
24		}
25		for _, dirent := range dirents {
26			if strings.HasSuffix(dirent.Name(), ".go") {
27				return true
28			}
29		}
30		return false
31	case "gccgo":
32		return stdpkg[path]
33	default:
34		panic("unknown compiler " + compiler)
35	}
36}
37