@@ -33,40 +33,12 @@ pub fn validate_module_item(
33
33
pub fn validate_body ( db : & dyn HirDatabase , owner : DefWithBodyId , sink : & mut DiagnosticSink < ' _ > ) {
34
34
let _p = profile:: span ( "validate_body" ) ;
35
35
let infer = db. infer ( owner) ;
36
- infer. add_diagnostics ( db, owner, sink) ;
37
36
let mut validator = expr:: ExprValidator :: new ( owner, infer. clone ( ) , sink) ;
38
37
validator. validate_body ( db) ;
39
38
let mut validator = unsafe_check:: UnsafeValidator :: new ( owner, infer, sink) ;
40
39
validator. validate_body ( db) ;
41
40
}
42
41
43
- // Diagnostic: no-such-field
44
- //
45
- // This diagnostic is triggered if created structure does not have field provided in record.
46
- #[ derive( Debug ) ]
47
- pub struct NoSuchField {
48
- pub file : HirFileId ,
49
- pub field : AstPtr < ast:: RecordExprField > ,
50
- }
51
-
52
- impl Diagnostic for NoSuchField {
53
- fn code ( & self ) -> DiagnosticCode {
54
- DiagnosticCode ( "no-such-field" )
55
- }
56
-
57
- fn message ( & self ) -> String {
58
- "no such field" . to_string ( )
59
- }
60
-
61
- fn display_source ( & self ) -> InFile < SyntaxNodePtr > {
62
- InFile :: new ( self . file , self . field . clone ( ) . into ( ) )
63
- }
64
-
65
- fn as_any ( & self ) -> & ( dyn Any + Send + ' static ) {
66
- self
67
- }
68
- }
69
-
70
42
// Diagnostic: missing-structure-fields
71
43
//
72
44
// This diagnostic is triggered if record lacks some fields that exist in the corresponding structure.
@@ -247,30 +219,6 @@ impl Diagnostic for RemoveThisSemicolon {
247
219
}
248
220
}
249
221
250
- // Diagnostic: break-outside-of-loop
251
- //
252
- // This diagnostic is triggered if the `break` keyword is used outside of a loop.
253
- #[ derive( Debug ) ]
254
- pub struct BreakOutsideOfLoop {
255
- pub file : HirFileId ,
256
- pub expr : AstPtr < ast:: Expr > ,
257
- }
258
-
259
- impl Diagnostic for BreakOutsideOfLoop {
260
- fn code ( & self ) -> DiagnosticCode {
261
- DiagnosticCode ( "break-outside-of-loop" )
262
- }
263
- fn message ( & self ) -> String {
264
- "break outside of loop" . to_string ( )
265
- }
266
- fn display_source ( & self ) -> InFile < SyntaxNodePtr > {
267
- InFile { file_id : self . file , value : self . expr . clone ( ) . into ( ) }
268
- }
269
- fn as_any ( & self ) -> & ( dyn Any + Send + ' static ) {
270
- self
271
- }
272
- }
273
-
274
222
// Diagnostic: missing-unsafe
275
223
//
276
224
// This diagnostic is triggered if an operation marked as `unsafe` is used outside of an `unsafe` function or block.
@@ -530,129 +478,6 @@ mod tests {
530
478
assert_eq ! ( annotations, actual) ;
531
479
}
532
480
533
- #[ test]
534
- fn no_such_field_diagnostics ( ) {
535
- check_diagnostics (
536
- r#"
537
- struct S { foo: i32, bar: () }
538
- impl S {
539
- fn new() -> S {
540
- S {
541
- //^ Missing structure fields:
542
- //| - bar
543
- foo: 92,
544
- baz: 62,
545
- //^^^^^^^ no such field
546
- }
547
- }
548
- }
549
- "# ,
550
- ) ;
551
- }
552
- #[ test]
553
- fn no_such_field_with_feature_flag_diagnostics ( ) {
554
- check_diagnostics (
555
- r#"
556
- //- /lib.rs crate:foo cfg:feature=foo
557
- struct MyStruct {
558
- my_val: usize,
559
- #[cfg(feature = "foo")]
560
- bar: bool,
561
- }
562
-
563
- impl MyStruct {
564
- #[cfg(feature = "foo")]
565
- pub(crate) fn new(my_val: usize, bar: bool) -> Self {
566
- Self { my_val, bar }
567
- }
568
- #[cfg(not(feature = "foo"))]
569
- pub(crate) fn new(my_val: usize, _bar: bool) -> Self {
570
- Self { my_val }
571
- }
572
- }
573
- "# ,
574
- ) ;
575
- }
576
-
577
- #[ test]
578
- fn no_such_field_enum_with_feature_flag_diagnostics ( ) {
579
- check_diagnostics (
580
- r#"
581
- //- /lib.rs crate:foo cfg:feature=foo
582
- enum Foo {
583
- #[cfg(not(feature = "foo"))]
584
- Buz,
585
- #[cfg(feature = "foo")]
586
- Bar,
587
- Baz
588
- }
589
-
590
- fn test_fn(f: Foo) {
591
- match f {
592
- Foo::Bar => {},
593
- Foo::Baz => {},
594
- }
595
- }
596
- "# ,
597
- ) ;
598
- }
599
-
600
- #[ test]
601
- fn no_such_field_with_feature_flag_diagnostics_on_struct_lit ( ) {
602
- check_diagnostics (
603
- r#"
604
- //- /lib.rs crate:foo cfg:feature=foo
605
- struct S {
606
- #[cfg(feature = "foo")]
607
- foo: u32,
608
- #[cfg(not(feature = "foo"))]
609
- bar: u32,
610
- }
611
-
612
- impl S {
613
- #[cfg(feature = "foo")]
614
- fn new(foo: u32) -> Self {
615
- Self { foo }
616
- }
617
- #[cfg(not(feature = "foo"))]
618
- fn new(bar: u32) -> Self {
619
- Self { bar }
620
- }
621
- fn new2(bar: u32) -> Self {
622
- #[cfg(feature = "foo")]
623
- { Self { foo: bar } }
624
- #[cfg(not(feature = "foo"))]
625
- { Self { bar } }
626
- }
627
- fn new2(val: u32) -> Self {
628
- Self {
629
- #[cfg(feature = "foo")]
630
- foo: val,
631
- #[cfg(not(feature = "foo"))]
632
- bar: val,
633
- }
634
- }
635
- }
636
- "# ,
637
- ) ;
638
- }
639
-
640
- #[ test]
641
- fn no_such_field_with_type_macro ( ) {
642
- check_diagnostics (
643
- r#"
644
- macro_rules! Type { () => { u32 }; }
645
- struct Foo { bar: Type![] }
646
-
647
- impl Foo {
648
- fn new() -> Self {
649
- Foo { bar: 0 }
650
- }
651
- }
652
- "# ,
653
- ) ;
654
- }
655
-
656
481
#[ test]
657
482
fn missing_record_pat_field_diagnostic ( ) {
658
483
check_diagnostics (
@@ -734,16 +559,6 @@ pub struct Claims {
734
559
) ;
735
560
}
736
561
737
- #[ test]
738
- fn break_outside_of_loop ( ) {
739
- check_diagnostics (
740
- r#"
741
- fn foo() { break; }
742
- //^^^^^ break outside of loop
743
- "# ,
744
- ) ;
745
- }
746
-
747
562
#[ test]
748
563
fn missing_semicolon ( ) {
749
564
check_diagnostics (
0 commit comments