From 8c6a3673c6243b729066f39c61d95237d44f6a42 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sat, 23 Jul 2022 20:28:06 +0800 Subject: [PATCH] initDepPkgs fix: allow pubName not found --- cl/multifiles.go | 7 ++++--- testdata/libc/src/foo.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cl/multifiles.go b/cl/multifiles.go index 0342bab..93bcad0 100644 --- a/cl/multifiles.go +++ b/cl/multifiles.go @@ -196,9 +196,10 @@ func initDepPkgs(pkg *gox.Package, deps *depPkgs) { for _, dep := range deps.pkgs { depPkg := pkg.Import(dep.path) for _, pub := range dep.pubs { - obj := depPkg.Ref(pub.goName) - if old := scope.Insert(gox.NewSubst(token.NoPos, pkg.Types, pub.name, obj)); old != nil { - log.Panicf("conflicted name `%v` in %v, previous definition is %v\n", pub.name, dep.path, old) + if obj := depPkg.TryRef(pub.goName); obj != nil { + if old := scope.Insert(gox.NewSubst(token.NoPos, pkg.Types, pub.name, obj)); old != nil { + log.Panicf("conflicted name `%v` in %v, previous definition is %v\n", pub.name, dep.path, old) + } } } } diff --git a/testdata/libc/src/foo.h b/testdata/libc/src/foo.h index 22e032c..6f9d440 100644 --- a/testdata/libc/src/foo.h +++ b/testdata/libc/src/foo.h @@ -10,3 +10,4 @@ typedef struct { typedef size_t foo_t; foo_t foo(); +void unknown();