dagger/dagger · error

expected %s to be %T, but got %T (%s)

Error message

expected %s to be %T, but got %T (%s)

What it means

Validation in checkDaggerObjectIface: the named DaggerObject type's underlying type is not a *types.Interface. Fires when DaggerObject is declared as a struct or other non-interface named type, so it cannot serve as the required embeddable interface.

Source

Thrown at cmd/codegen/generator/go/templates/modules.go:514

	}

	ps.constructor = fn
	return true
}

func (ps *parseState) checkDaggerObjectIface(obj types.Object) (bool, error) {
	if obj.Name() != daggerObjectIfaceName {
		return false, nil
	}

	objType := dealias(obj.Type())
	named, isNamed := objType.(*types.Named)
	if !isNamed {
		return false, fmt.Errorf("expected %s to be a named interface, but got %T (%s)", daggerObjectIfaceName, obj.Type(), obj.Type().String())
	}
	iface, isIface := named.Underlying().(*types.Interface)
	if !isIface {
		return false, fmt.Errorf("expected %s to be %T, but got %T (%s)", daggerObjectIfaceName, &types.Interface{}, named.Underlying(), named.Underlying().String())
	}

	ps.daggerObjectIfaceType = iface
	return true, nil
}

// fillObjectFunctionCases recursively fills out the `cases` map with entries for object name -> `case` statement blocks
// for each function in that object
func (ps *parseState) fillObjectFunctionCases(type_ types.Type, cases map[string][]Code) error {
	var objName string
	switch x := type_.(type) {
	case *types.Pointer:
		return ps.fillObjectFunctionCases(x.Elem(), cases)
	case *types.Named:
		objName = x.Obj().Name()
	default:
		return nil
	}

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Ensure DaggerObject is used as an interface, not a struct
  2. Remove/fix custom redefinitions of DaggerObject in module code
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/codegen/generator/go/templates/modules.go:514 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05). Data as JSON: /api/errors/2fbc66ac2992e98c. Report an issue: GitHub.