diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs index f1188dce74142d9120374a9a515c924736191987..0ee7e7ef370028376051c1efb0fd4aa77aeb19a0 100644 --- a/src/librustc/middle/lint.rs +++ b/src/librustc/middle/lint.rs @@ -786,6 +786,18 @@ fn check_type(cx: ty::ctxt, _ => () } + // If it's a struct, we also have to check the fields' types + match it.node { + ast::item_struct(struct_def, _) => { + for struct_def.fields.each |struct_field| { + check_type(cx, struct_field.node.id, it.id, + struct_field.span, + ty::node_id_to_type(cx, struct_field.node.id)); + } + } + _ => () + } + let visit = item_stopping_visitor( visit::mk_simple_visitor(@visit::SimpleVisitor { visit_expr: |e: @ast::expr| {