@@ -634,10 +634,45 @@ impl<'a> DiagnosticWrapper<'a> {
634
634
}
635
635
}
636
636
637
+ /// Emit a basic lint message with a `msg` and a `span`.
638
+ ///
639
+ /// This is the most primitive of our lint emission methods and can
640
+ /// be a good way to get a new lint started.
641
+ ///
642
+ /// Usually it's nicer to provide more context for lint messages.
643
+ /// Be sure the output is understandable when you use this method.
644
+ ///
645
+ /// # Example
646
+ ///
647
+ /// ```ignore
648
+ /// error: usage of mem::forget on Drop type
649
+ /// --> $DIR/mem_forget.rs:17:5
650
+ /// |
651
+ /// 17 | std::mem::forget(seven);
652
+ /// | ^^^^^^^^^^^^^^^^^^^^^^^
653
+ /// ```
637
654
pub fn span_lint < ' a , T : LintContext < ' a > > ( cx : & T , lint : & ' static Lint , sp : Span , msg : & str ) {
638
655
DiagnosticWrapper ( cx. struct_span_lint ( lint, sp, msg) ) . docs_link ( lint) ;
639
656
}
640
657
658
+ /// Same as `span_lint` but with an extra `help` message.
659
+ ///
660
+ /// Use this if you want to provide some general help but
661
+ /// can't provide a specific machine applicable suggestion.
662
+ ///
663
+ /// The `help` message is not attached to any `Span`.
664
+ ///
665
+ /// # Example
666
+ ///
667
+ /// ```ignore
668
+ /// error: constant division of 0.0 with 0.0 will always result in NaN
669
+ /// --> $DIR/zero_div_zero.rs:6:25
670
+ /// |
671
+ /// 6 | let other_f64_nan = 0.0f64 / 0.0;
672
+ /// | ^^^^^^^^^^^^
673
+ /// |
674
+ /// = help: Consider using `std::f64::NAN` if you would like a constant representing NaN
675
+ /// ```
641
676
pub fn span_help_and_lint < ' a , ' tcx : ' a , T : LintContext < ' tcx > > (
642
677
cx : & ' a T ,
643
678
lint : & ' static Lint ,
@@ -650,6 +685,27 @@ pub fn span_help_and_lint<'a, 'tcx: 'a, T: LintContext<'tcx>>(
650
685
db. docs_link ( lint) ;
651
686
}
652
687
688
+ /// Like `span_lint` but with a `note` section instead of a `help` message.
689
+ ///
690
+ /// The `note` message is presented separately from the main lint message
691
+ /// and is attached to a specific span:
692
+ ///
693
+ /// # Example
694
+ ///
695
+ /// ```ignore
696
+ /// error: calls to `std::mem::forget` with a reference instead of an owned value. Forgetting a reference does nothing.
697
+ /// --> $DIR/drop_forget_ref.rs:10:5
698
+ /// |
699
+ /// 10 | forget(&SomeStruct);
700
+ /// | ^^^^^^^^^^^^^^^^^^^
701
+ /// |
702
+ /// = note: `-D clippy::forget-ref` implied by `-D warnings`
703
+ /// note: argument has type &SomeStruct
704
+ /// --> $DIR/drop_forget_ref.rs:10:12
705
+ /// |
706
+ /// 10 | forget(&SomeStruct);
707
+ /// | ^^^^^^^^^^^
708
+ /// ```
653
709
pub fn span_note_and_lint < ' a , ' tcx : ' a , T : LintContext < ' tcx > > (
654
710
cx : & ' a T ,
655
711
lint : & ' static Lint ,
0 commit comments