(b *scode.Builder, val Value)
| 25 | } |
| 26 | |
| 27 | func buildValue(b *scode.Builder, val Value) error { |
| 28 | switch val := val.(type) { |
| 29 | case *Primitive: |
| 30 | return BuildPrimitive(b, *val) |
| 31 | case *Record: |
| 32 | return buildRecord(b, val) |
| 33 | case *Array: |
| 34 | return buildArray(b, val) |
| 35 | case *Set: |
| 36 | return buildSet(b, val) |
| 37 | case *Union: |
| 38 | return buildUnion(b, val) |
| 39 | case *Map: |
| 40 | return buildMap(b, val) |
| 41 | case *Enum: |
| 42 | return buildEnum(b, val) |
| 43 | case *TypeValue: |
| 44 | return buildTypeValue(b, val) |
| 45 | case *Error: |
| 46 | return buildValue(b, val.Value) |
| 47 | case *Fusion: |
| 48 | return buildFusion(b, val) |
| 49 | case *Null: |
| 50 | b.Append(nil) |
| 51 | return nil |
| 52 | } |
| 53 | return fmt.Errorf("unknown ast type: %T", val) |
| 54 | } |
| 55 | |
| 56 | func BuildPrimitive(b *scode.Builder, val Primitive) error { |
| 57 | switch super.TypeUnder(val.Type).(type) { |
no test coverage detected