Just because a package (e.g. log) is imported by the caller,
and the name log is in scope, doesn't mean the name in scope
refers to the package: it could be locally shadowed.

In all three scenarios in this file and import-shadow-2.txtar, a renaming
import with a fresh name is added because the usual name is locally
shadowed: in cases 1, 2 an existing import is shadowed by (respectively)
a local constant, parameter; in case 3 there is no existing import.

-- go.mod --
module testdata
go 1.12

-- a/a.go --
package a

import (
	"testdata/b"
	"log"
)

func A() {
	const log = "shadow"
	b.B() //@ inline(re"B", bresult)
}

var _ log.Logger

-- b/b.go --
package b

import "log"

func B() {
	log.Printf("")
}

-- bresult --
package a

import (
	"log"
	log0 "log"
)

func A() {
	const log = "shadow"
	log0.Printf("") //@ inline(re"B", bresult)
}

var _ log.Logger
