| 395 | } |
| 396 | |
| 397 | func (c *StructCode) lastAnonymousFieldCode(firstField *Opcode) *Opcode { |
| 398 | // firstField is special StructHead operation for anonymous structure. |
| 399 | // So, StructHead's next operation is truly struct head operation. |
| 400 | for firstField.Op == OpStructHead || firstField.Op == OpStructField { |
| 401 | firstField = firstField.Next |
| 402 | } |
| 403 | lastField := firstField |
| 404 | for lastField.NextField != nil { |
| 405 | lastField = lastField.NextField |
| 406 | } |
| 407 | return lastField |
| 408 | } |
| 409 | |
| 410 | func (c *StructCode) ToOpcode(ctx *compileContext) Opcodes { |
| 411 | // header => code => structField => code => end |