go.tool/go/types: ignore invalid anonymous fields
Fixes go tool vet breakage when applied to files with incomplete type information for anonymous fields. R=adonovan CC=golang-dev https://golang.org/cl/11773043
This commit is contained in:
parent
407e159412
commit
c5b1cc4227
|
@ -480,6 +480,9 @@ func (check *checker) collectFields(list *ast.FieldList, cycleOk bool) (fields [
|
||||||
t, isPtr := deref(typ)
|
t, isPtr := deref(typ)
|
||||||
switch t := t.(type) {
|
switch t := t.(type) {
|
||||||
case *Basic:
|
case *Basic:
|
||||||
|
if t == Typ[Invalid] {
|
||||||
|
continue // ignore this field - error was reported before
|
||||||
|
}
|
||||||
add(f, nil, t.name, true, pos)
|
add(f, nil, t.name, true, pos)
|
||||||
case *Named:
|
case *Named:
|
||||||
// spec: "An embedded type must be specified as a type name
|
// spec: "An embedded type must be specified as a type name
|
||||||
|
@ -497,12 +500,10 @@ func (check *checker) collectFields(list *ast.FieldList, cycleOk bool) (fields [
|
||||||
}
|
}
|
||||||
add(f, nil, t.obj.name, true, pos)
|
add(f, nil, t.obj.name, true, pos)
|
||||||
default:
|
default:
|
||||||
if typ != Typ[Invalid] {
|
|
||||||
check.invalidAST(pos, "anonymous field type %s must be named", typ)
|
check.invalidAST(pos, "anonymous field type %s must be named", typ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue