in src/ct/parser/item.go [211:243]
func (is *Items) TrimUnknownItems() {
a := *is
if len(a) < 2 {
return
}
j := 0
for i := 1; i < len(a); i++ {
if a[j].typ == itemUnknown && a[i].typ == itemUnknown {
continue
}
j++
a[j] = a[i]
}
a = a[:j+1]
if len(a) > 0 && a[0].typ == itemUnknown {
a = a[1:]
}
j = 0
for i := 1; i < len(a); i++ {
if (a[j].typ == itemVariable || a[j].typ == itemUnit) && a[i].typ == itemUnknown {
continue
}
if a[j].typ == itemUnknown && (a[i].typ == itemVariable || a[i].typ == itemUnit) {
a[j] = a[i]
continue
}
j++
a[j] = a[i]
}
*is = a[:j+1]
}