m = convertUsingDictionary(info, info.dictParam, m.Pos(), mce.X, m, m.Type(), false)
}
case ir.ODOTTYPE, ir.ODOTTYPE2:
- dt := m.(*ir.TypeAssertExpr)
- if !dt.Type().HasShape() && !dt.X.Type().HasShape() {
+ if !m.Type().HasShape() {
break
}
+ dt := m.(*ir.TypeAssertExpr)
var rt ir.Node
if dt.Type().IsInterface() || dt.X.Type().IsEmptyInterface() {
ix := findDictType(info, m.Type())
+++ /dev/null
-// run -gcflags=-G=3
-
-// Copyright 2022 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 main
-
-type TaskInput interface {
- deps() []*taskDefinition
-}
-
-type Value[T any] interface {
- metaValue
-}
-
-type metaValue interface {
- TaskInput
-}
-
-type taskDefinition struct {
-}
-
-type taskResult struct {
- task *taskDefinition
-}
-
-func (tr *taskResult) deps() []*taskDefinition {
- return nil
-}
-
-func use[T any](v Value[T]) {
- _, ok := v.(*taskResult)
- if !ok {
- panic("output must be *taskResult")
- }
-}
-
-func main() {
- tr := &taskResult{&taskDefinition{}}
- use(Value[string](tr))
-}