| // compile | |
| // Copyright 2025 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package reorder | |
| type Element struct { | |
| A string | |
| B string | |
| C string | |
| D string | |
| E string | |
| Text []string | |
| List []string | |
| Child Elements | |
| F string | |
| G bool | |
| H bool | |
| I string | |
| } | |
| type Elements []Element | |
| func DoesNotCompile(ve Elements) Elements { | |
| aa := Elements{} | |
| bb := Elements{} | |
| cc := Elements{} | |
| dd := Elements{} | |
| ee := Elements{} | |
| ff := Elements{} | |
| gg := Elements{} | |
| hh := Elements{} | |
| ii := Elements{} | |
| if len(ve) != 1 { | |
| return ve | |
| } | |
| for _, e := range ve[0].Child { | |
| if len(e.Text) == 1 && (e.Text[0] == "xx") { | |
| ee = append(ee, e) | |
| } else if len(e.Text) == 1 && e.Text[0] == "yy" { | |
| for _, c := range e.Child { | |
| if len(c.Text) == 1 && c.Text[0] == "zz" { | |
| ii = append(ii, c) | |
| } else { | |
| hh = append(hh, c) | |
| } | |
| } | |
| ii = append(ii, hh...) | |
| e.Child = ii | |
| gg = append(gg, e) | |
| } else if len(e.Text) == 1 && e.Text[0] == "tt" { | |
| for _, entry := range e.Child { | |
| for _, c := range entry.Child { | |
| if len(c.Text) == 1 && c.Text[0] == "ee" { | |
| cc = append(cc, c) | |
| } else { | |
| dd = append(dd, c) | |
| } | |
| } | |
| cc = append(cc, dd...) | |
| entry.Child = cc | |
| bb = append(bb, entry) | |
| cc, dd = Elements{}, Elements{} | |
| } | |
| e.Child = bb | |
| aa = append(aa, e) | |
| } else { | |
| ff = append(ff, e) | |
| } | |
| } | |
| return ve | |
| } |