// run -gcflags=-G=3

// Copyright 2021 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.

// Test cases where a main dictionary is needed inside a generic function/method, because
// we are calling a method on a fully-instantiated type or a fully-instantiated function.
// (probably not common situations, of course)

package main

import (
	"fmt"
)

type value[T comparable] struct {
	val T
}

func (v *value[T]) test(def T) bool {
	return (v.val == def)
}

func (v *value[T]) get(def T) T {
	var c value[int]
	if c.test(32) {
		return def
	} else if v.test(def) {
		return def
	} else {
		return v.val
	}
}

func main() {
	var s value[string]
	if got, want := s.get("ab"), ""; got != want {
		panic(fmt.Sprintf("get() == %d, want %d", got, want))
	}
}
