(typeDef *modTypeDef)
| 621 | } |
| 622 | |
| 623 | func (m *moduleDef) loadTypeDef(typeDef *modTypeDef) error { |
| 624 | if typeDef.TypeName == "" { |
| 625 | return fmt.Errorf("typedef ref missing canonical name") |
| 626 | } |
| 627 | canonical := m.typeDefsByName[typeDef.TypeName] |
| 628 | if canonical == nil { |
| 629 | return fmt.Errorf("typedef %q not found in currentTypeDefs(returnAllTypes: true)", typeDef.TypeName) |
| 630 | } |
| 631 | |
| 632 | optional := typeDef.Optional |
| 633 | typeDef.TypeName = canonical.TypeName |
| 634 | typeDef.Kind = canonical.Kind |
| 635 | typeDef.Optional = optional |
| 636 | typeDef.AsObject = canonical.AsObject |
| 637 | typeDef.AsInterface = canonical.AsInterface |
| 638 | typeDef.AsInput = canonical.AsInput |
| 639 | typeDef.AsList = canonical.AsList |
| 640 | typeDef.AsScalar = canonical.AsScalar |
| 641 | typeDef.AsEnum = canonical.AsEnum |
| 642 | |
| 643 | switch typeDef.Kind { |
| 644 | case dagger.TypeDefKindStringKind, |
| 645 | dagger.TypeDefKindIntegerKind, |
| 646 | dagger.TypeDefKindFloatKind, |
| 647 | dagger.TypeDefKindBooleanKind, |
| 648 | dagger.TypeDefKindVoidKind, |
| 649 | dagger.TypeDefKindInputKind, |
| 650 | dagger.TypeDefKindEnumKind, |
| 651 | dagger.TypeDefKindScalarKind: |
| 652 | return nil |
| 653 | case dagger.TypeDefKindListKind: |
| 654 | if typeDef.AsList == nil || typeDef.AsList.ElementTypeDef == nil { |
| 655 | return fmt.Errorf("list typedef %q missing element type", typeDef.TypeName) |
| 656 | } |
| 657 | return m.LoadTypeDef(typeDef.AsList.ElementTypeDef) |
| 658 | case dagger.TypeDefKindObjectKind: |
| 659 | if typeDef.AsObject == nil { |
| 660 | return fmt.Errorf("object typedef %q missing object payload", typeDef.TypeName) |
| 661 | } |
| 662 | typeDef.AsObject.owner = m |
| 663 | typeDef.AsObject.typeDef = typeDef |
| 664 | return nil |
| 665 | case dagger.TypeDefKindInterfaceKind: |
| 666 | if typeDef.AsInterface == nil { |
| 667 | return fmt.Errorf("interface typedef %q missing interface payload", typeDef.TypeName) |
| 668 | } |
| 669 | typeDef.AsInterface.owner = m |
| 670 | typeDef.AsInterface.typeDef = typeDef |
| 671 | return nil |
| 672 | default: |
| 673 | return fmt.Errorf("unsupported typedef kind %s", typeDef.Kind) |
| 674 | } |
| 675 | } |
| 676 | |
| 677 | func (m *moduleDef) LoadFunctionTypeDefs(fn *modFunction) error { |
| 678 | if fn == nil { |
no test coverage detected