(ctx *compileContext, field *Opcode, valueCodes Opcodes)
| 669 | } |
| 670 | |
| 671 | func (c *StructFieldCode) fieldOpcodes(ctx *compileContext, field *Opcode, valueCodes Opcodes) Opcodes { |
| 672 | value := valueCodes.First() |
| 673 | op := optimizeStructField(value, c.tag) |
| 674 | field.Op = op |
| 675 | if value.Flags&MarshalerContextFlags != 0 { |
| 676 | field.Flags |= MarshalerContextFlags |
| 677 | } |
| 678 | field.NumBitSize = value.NumBitSize |
| 679 | field.PtrNum = value.PtrNum |
| 680 | field.FieldQuery = value.FieldQuery |
| 681 | |
| 682 | fieldCodes := Opcodes{field} |
| 683 | if op.IsMultipleOpField() { |
| 684 | field.Next = value |
| 685 | fieldCodes = fieldCodes.Add(valueCodes...) |
| 686 | } else { |
| 687 | ctx.decIndex() |
| 688 | } |
| 689 | return fieldCodes |
| 690 | } |
| 691 | |
| 692 | func (c *StructFieldCode) addStructEndCode(ctx *compileContext, codes Opcodes) Opcodes { |
| 693 | end := &Opcode{ |
no test coverage detected