Diagnose private field accesses

This commit is contained in:
Lukas Wirth 2022-12-31 14:20:59 +01:00
parent ec125fe46a
commit e3d144d17f
6 changed files with 86 additions and 11 deletions

View file

@ -85,7 +85,7 @@ pub use crate::{
diagnostics::{
AnyDiagnostic, BreakOutsideOfLoop, InactiveCode, IncorrectCase, InvalidDeriveTarget,
MacroError, MalformedDerive, MismatchedArgCount, MissingFields, MissingMatchArms,
MissingUnsafe, NoSuchField, ReplaceFilterMapNextWithFindMap, TypeMismatch,
MissingUnsafe, NoSuchField, PrivateField, ReplaceFilterMapNextWithFindMap, TypeMismatch,
UnimplementedBuiltinMacro, UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall,
UnresolvedModule, UnresolvedProcMacro,
},
@ -1353,6 +1353,11 @@ impl DefWithBody {
Err(SyntheticSyntax) => (),
}
}
&hir_ty::InferenceDiagnostic::PrivateField { expr, field } => {
let expr = source_map.expr_syntax(expr).expect("unexpected synthetic");
let field = field.into();
acc.push(PrivateField { expr, field }.into())
}
}
}
for (expr, mismatch) in infer.expr_type_mismatches() {