| 501 | } |
| 502 | |
| 503 | func checkSet(body scode.Bytes) error { |
| 504 | it := body.Iter() |
| 505 | var prev scode.Bytes |
| 506 | for !it.Done() { |
| 507 | tagAndBody := it.NextTagAndBody() |
| 508 | if prev != nil { |
| 509 | switch bytes.Compare(prev, tagAndBody) { |
| 510 | case 0: |
| 511 | return errors.New("invalid BSUP: duplicate set element") |
| 512 | case 1: |
| 513 | return errors.New("invalid BSUP: set elements not sorted") |
| 514 | } |
| 515 | } |
| 516 | prev = tagAndBody |
| 517 | } |
| 518 | return nil |
| 519 | } |
| 520 | |
| 521 | func checkEnum(typ *TypeEnum, body scode.Bytes) error { |
| 522 | if selector := DecodeUint(body); int(selector) >= len(typ.Symbols) { |