@@ -747,97 +747,70 @@ NOTE(discard_nontrivial_implicit_storage_note,none,
747
747
" type %0 implicitly contains %1 which cannot be trivially destroyed" ,
748
748
(Type, Type))
749
749
750
- // move only checker diagnostics
751
- ERROR(sil_moveonlychecker_owned_value_consumed_more_than_once, none,
750
+
751
+ // / Move Checking / Noncopyable types diagnostics
752
+
753
+ ERROR(sil_movechecking_owned_value_consumed_more_than_once, none,
752
754
" '%0' consumed more than once" , (StringRef))
753
- ERROR(sil_moveonlychecker_owned_value_consumed_and_used_at_same_time , none,
755
+ ERROR(sil_movechecking_owned_value_consumed_and_used_at_same_time , none,
754
756
" '%0' consumed and used at the same time" , (StringRef))
755
- ERROR(sil_moveonlychecker_value_used_after_consume , none,
757
+ ERROR(sil_movechecking_value_used_after_consume , none,
756
758
" '%0' used after consume" , (StringRef))
757
- ERROR(sil_moveonlychecker_guaranteed_value_consumed, none,
758
- " '%0' has guaranteed ownership but was consumed" , (StringRef))
759
- ERROR(sil_moveonlychecker_guaranteed_value_captured_by_closure, none,
760
- " '%0' has guaranteed ownership but was consumed due to being captured by a closure" , (StringRef))
761
- ERROR(sil_moveonlychecker_let_value_consumed_in_closure, none,
762
- " '%0' consumed in closure. This is illegal since if the closure is invoked more than once the binding will be uninitialized on later invocations" , (StringRef))
763
- ERROR(sil_moveonlychecker_inout_not_reinitialized_before_end_of_function, none,
764
- " '%0' consumed but not reinitialized before end of function" , (StringRef))
765
- ERROR(sil_moveonlychecker_inout_not_reinitialized_before_end_of_closure, none,
766
- " '%0' consumed in closure but not reinitialized before end of closure" , (StringRef))
767
- ERROR(sil_moveonlychecker_value_consumed_in_a_loop, none,
768
- " '%0' consumed by a use in a loop" , (StringRef))
769
- ERROR(sil_moveonlychecker_exclusivity_violation, none,
770
- " '%0' has consuming use that cannot be eliminated due to a tight exclusivity scope" , (StringRef))
771
- ERROR(sil_moveonlychecker_moveonly_field_consumed, none,
772
- " '%0' has a move only field that was consumed before later uses" , (StringRef))
773
-
774
- ERROR(sil_moveonlychecker_notconsumable_but_assignable_was_consumed_classfield_let, none,
775
- " '%0' was consumed but it is illegal to consume a noncopyable class let field. One can only read from it" ,
776
- (StringRef))
777
- ERROR(sil_moveonlychecker_notconsumable_but_assignable_was_consumed_classfield_var, none,
778
- " '%0' was consumed but it is illegal to consume a noncopyable class var field. One can only read from it or assign to it" ,
779
- (StringRef))
780
- ERROR(sil_moveonlychecker_notconsumable_but_assignable_was_consumed_global_var, none,
781
- " '%0' was consumed but it is illegal to consume a noncopyable global var. One can only read from it or assign to it" ,
782
- (StringRef))
783
- ERROR(sil_moveonlychecker_notconsumable_but_assignable_was_consumed_global_let, none,
784
- " '%0' was consumed but it is illegal to consume a noncopyable global let. One can only read from it" ,
785
- (StringRef))
786
- ERROR(sil_moveonlychecker_notconsumable_but_assignable_was_consumed_escaping_var, none,
787
- " '%0' was consumed but it is illegal to consume a noncopyable mutable capture of an escaping closure. One can only read from it or assign over it" ,
788
- (StringRef))
789
- ERROR(sil_moveonlychecker_let_capture_consumed, none,
790
- " '%0' was consumed but it is illegal to consume a noncopyable immutable capture of an escaping closure. One can only read from it" , (StringRef))
791
- ERROR(sil_moveonlychecker_cannot_destructure_deinit_nominal_type_self, none,
792
- " Cannot partially consume '%0' since it has a user defined deinit" ,
759
+ ERROR(sil_movechecking_guaranteed_value_consumed, none,
760
+ " '%0' is borrowed and cannot be consumed" , (StringRef))
761
+
762
+ // FIXME: this diagnostic shouldn't ever be emitted now. rdar://109742587 (closures may still try to consume captures, e.g., borrowed parameters)
763
+ ERROR(sil_movechecking_guaranteed_value_captured_by_closure, none,
764
+ " '%0' is borrowed and cannot be consumed by closure capture" , (StringRef))
765
+
766
+ ERROR(sil_movechecking_capture_consumed, none,
767
+ " noncopyable '%0' cannot be consumed when captured by a closure" , (StringRef))
768
+ ERROR(sil_movechecking_inout_not_reinitialized_before_end_of_function, none,
769
+ " missing reinitialization of inout parameter '%0' after consume" , (StringRef))
770
+ ERROR(sil_movechecking_value_consumed_in_a_loop, none,
771
+ " '%0' consumed in a loop" , (StringRef))
772
+ ERROR(sil_movechecking_use_after_partial_consume, none,
773
+ " cannot use '%0' after partial consume" , (StringRef))
774
+ ERROR(sil_movechecking_notconsumable_but_assignable_was_consumed, none,
775
+ " cannot consume noncopyable stored property '%0' %select{of a class|that is global}1" ,
776
+ (StringRef, bool ))
777
+ ERROR(sil_movechecking_cannot_destructure_has_deinit, none,
778
+ " cannot partially consume '%0' when it has a deinitializer" ,
793
779
(StringRef))
794
- ERROR(sil_moveonlychecker_cannot_destructure_deinit_nominal_type_field, none,
795
- " Cannot partially consume '%0' since it contains field '%1.%2' whose type %3 has a user defined deinit" ,
796
- (StringRef, StringRef, StringRef, DeclBaseName))
797
-
798
- NOTE(sil_moveonlychecker_moveonly_field_consumed_here, none,
799
- " move only field consumed here" , ())
800
- NOTE(sil_moveonlychecker_boundary_use, none,
801
- " boundary use here" , ())
802
- NOTE(sil_moveonlychecker_consuming_use_here, none,
803
- " consuming use here" , ())
804
- NOTE(sil_moveonlychecker_other_consuming_use_here, none,
805
- " other consuming use here" , ())
806
- NOTE(sil_moveonlychecker_two_consuming_uses_here, none,
807
- " two consuming uses here" , ())
808
- NOTE(sil_moveonlychecker_consuming_and_non_consuming_uses_here, none,
809
- " consuming and non-consuming uses here" , ())
810
- NOTE(sil_moveonlychecker_consuming_closure_use_here, none,
811
- " closure capture here" , ())
812
- NOTE(sil_moveonlychecker_nonconsuming_use_here, none,
813
- " non-consuming use here" , ())
814
- NOTE(sil_movekillscopyablevalue_value_cyclic_consumed_in_loop_here, none,
815
- " consuming in loop use here" , ())
816
- NOTE(sil_moveonlychecker_deinit_here, none,
817
- " deinit declared here" , ())
818
-
819
- ERROR(sil_moveonlychecker_not_understand_consumable_and_assignable, none,
820
- " Usage of @noImplicitCopy that the move checker does not know how to "
821
- " check!" , ())
822
- ERROR(sil_moveonlychecker_not_understand_moveonly, none,
823
- " Usage of a move only type that the move checker does not know how to "
824
- " check!" , ())
825
- ERROR(sil_moveonlychecker_missed_copy, none,
826
- " copy of noncopyable typed value. This is a compiler bug. Please file a bug with a small example of the bug" , ())
827
780
828
- // move kills copyable values checker diagnostics
829
- ERROR(sil_movekillscopyablevalue_value_consumed_more_than_once, none,
830
- " '%0' used after being consumed" , (StringRef))
831
- NOTE(sil_movekillscopyablevalue_move_here, none,
832
- " consume here" , ())
833
- NOTE(sil_movekillscopyablevalue_use_here, none,
834
- " use here" , ())
835
- NOTE(sil_movekillscopyablevalue_value_consumed_in_loop, none,
836
- " consume here would occur multiple times in loop" , ())
781
+ NOTE(sil_movechecking_partial_consume_here, none,
782
+ " partially consumed here" , ())
783
+ NOTE(sil_movechecking_consuming_use_here, none,
784
+ " consumed here" , ())
785
+ NOTE(sil_movechecking_consumed_again_here, none,
786
+ " consumed again here" , ())
787
+ NOTE(sil_movechecking_two_consuming_uses_here, none,
788
+ " multiple consumes here" , ())
789
+ NOTE(sil_movechecking_consuming_and_non_consuming_uses_here, none,
790
+ " consumed and used here" , ())
791
+ NOTE(sil_movechecking_consuming_closure_use_here, none,
792
+ " closure capturing '%0' here" , (StringRef))
793
+ NOTE(sil_movechecking_nonconsuming_use_here, none,
794
+ " used here" , ())
795
+ NOTE(sil_movechecking_consumed_in_loop_here, none,
796
+ " consumed in loop here" , ())
797
+ NOTE(sil_movechecking_deinit_here, none,
798
+ " deinitializer declared here" , ())
799
+
800
+ // errors involving noncopyables that are considered to be bugs in the compiler
801
+ ERROR(sil_movechecking_not_understand_consumable_and_assignable, none,
802
+ " usage of no-implicit-copy value that the compiler can't verify. This is a compiler bug. Please file a bug with a small example of the bug" , ())
803
+ ERROR(sil_movechecking_not_understand_moveonly, none,
804
+ " usage of a noncopyable type that compiler can't verify. This is a compiler bug. Please file a bug with a small example of the bug" , ())
805
+ ERROR(sil_movechecking_bug_missed_copy, none,
806
+ " copy of noncopyable typed value. This is a compiler bug. Please file a bug with a small example of the bug" , ())
807
+ ERROR(sil_movechecking_bug_exclusivity_violation, none,
808
+ " '%0' has an unexpected exclusivity violation. This is a compiler bug. Please file a bug with a small example of the bug" , (StringRef))
837
809
ERROR(sil_movekillscopyablevalue_move_applied_to_unsupported_move, none,
838
- " 'consume' applied to value that the compiler does not support checking " ,
810
+ " 'consume' applied to value that the compiler does not support. This is a compiler bug. Please file a bug with a small example of the bug " ,
839
811
())
840
812
813
+
841
814
// Implicit inout-to-UnsafeRawPointer conversions
842
815
WARNING(nontrivial_to_rawpointer_conversion,none,
843
816
" forming %1 to a variable of type %0; this is likely incorrect because %2 may contain "
0 commit comments