dagger/dagger · error

failed to create field %s: %w

Error message

failed to create field %s: %w

What it means

Wraps a failure from dangTypeToTypeDef when converting a non-function public slot of a Dang class into a TypeDef field during createObjectTypeDef. Fires when the slot's monomorphic type cannot be represented as a core TypeDef (unknown or unsupported type).

Source

Thrown at core/sdk/dang/v1/helpers.go:732

		switch x := slotType.(type) {
		case *hm.FunctionType:
			fnDef, err := createFunction(ctx, srv, classMod, bindingName, x, module.Closure, localTypes)
			if err != nil {
				return res, fmt.Errorf("failed to create method %s for %s: %w", bindingName, name, err)
			}
			fnDefID, err := fnDef.ID()
			if err != nil {
				return res, fmt.Errorf("failed to get function ID for %s: %w", bindingName, err)
			}

			sels = append(sels, dagql.Selector{
				Field: "withFunction",
				Args:  []dagql.NamedInput{{Name: "function", Value: dagql.NewID[*core.Function](fnDefID)}},
			})
		default:
			fieldDef, err := dangTypeToTypeDef(ctx, srv, slotType, localTypes)
			if err != nil {
				return res, fmt.Errorf("failed to create field %s: %w", bindingName, err)
			}
			fieldDefID, err := fieldDef.ID()
			if err != nil {
				return res, fmt.Errorf("failed to get field type ID for %s: %w", bindingName, err)
			}

			fieldArgs := []dagql.NamedInput{
				{Name: "name", Value: dagql.String(bindingName)},
				{Name: "typeDef", Value: dagql.NewID[*core.TypeDef](fieldDefID)},
			}

			if desc, ok := classMod.GetDocString(bindingName); ok {
				fieldArgs = append(fieldArgs, dagql.NamedInput{Name: "description", Value: dagql.String(desc)})
			}

			sels = append(sels, dagql.Selector{
				Field: "withField",
				Args:  fieldArgs,

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Check the wrapped cause to see which slot type failed conversion.
  2. Use a supported Dang field type (primitives, known object/enum/list types).
  3. Make the slot private if it should not appear in the schema.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at core/sdk/dang/v1/helpers.go:732 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/bf40a09252dccaa6. Report an issue: GitHub.