Initial commit: Go 1.23 release state
This commit is contained in:
41
test/fixedbugs/issue43112.go
Normal file
41
test/fixedbugs/issue43112.go
Normal file
@@ -0,0 +1,41 @@
|
||||
// compile
|
||||
|
||||
// Copyright 2020 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 p
|
||||
|
||||
type Symbol interface{}
|
||||
|
||||
type Value interface {
|
||||
String() string
|
||||
}
|
||||
|
||||
type Object interface {
|
||||
String() string
|
||||
}
|
||||
|
||||
type Scope struct {
|
||||
outer *Scope
|
||||
elems map[string]Object
|
||||
}
|
||||
|
||||
func (s *Scope) findouter(name string) (*Scope, Object) {
|
||||
return s.outer.findouter(name)
|
||||
}
|
||||
|
||||
func (s *Scope) Resolve(name string) (sym Symbol) {
|
||||
if _, obj := s.findouter(name); obj != nil {
|
||||
sym = obj.(Symbol)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type ScopeName struct {
|
||||
scope *Scope
|
||||
}
|
||||
|
||||
func (n *ScopeName) Get(name string) (Value, error) {
|
||||
return n.scope.Resolve(name).(Value), nil
|
||||
}
|
||||
Reference in New Issue
Block a user