@@ -309,6 +309,71 @@ struct PreconcurrencyAppliesToParentToo : @preconcurrency Child {
309309// CHECK: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
310310// CHECK-NEXT: {{.*}} = apply [[CHECK_EXEC_REF]]({{.*}}, [[EXEC]])
311311
312+ @available ( * , unavailable)
313+ extension NotSendable : Sendable { }
314+
315+ struct NotSendable : Equatable , Hashable {
316+ }
317+
318+ @MainActor
319+ struct TestDerivedEquatable : @preconcurrency Equatable {
320+ var x : NotSendable
321+ }
322+
323+ // protocol witness for static Equatable.== infix(_:_:) in conformance TestDerivedEquatable
324+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances20TestDerivedEquatableVSQAASQ2eeoiySbx_xtFZTW
325+ // CHECK: [[MAIN_ACTOR:%.*]] = begin_borrow {{.*}} : $MainActor
326+ // CHECK-NEXT: [[EXEC:%.*]] = extract_executor [[MAIN_ACTOR]] : $MainActor
327+ // CHECK: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
328+ // CHECK-NEXT: {{.*}} = apply [[CHECK_EXEC_REF]]({{.*}}, [[EXEC]])
329+
330+ @MainActor
331+ struct TestDerivedHashable : @preconcurrency Hashable {
332+ var x : NotSendable
333+ }
334+
335+ // protocol witness for Hashable.hashValue.getter in conformance TestDerivedHashable
336+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances19TestDerivedHashableVSHAASH9hashValueSivgTW
337+ // CHECK: [[MAIN_ACTOR:%.*]] = begin_borrow {{.*}} : $MainActor
338+ // CHECK-NEXT: [[EXEC:%.*]] = extract_executor [[MAIN_ACTOR]] : $MainActor
339+ // CHECK: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
340+ // CHECK-NEXT: {{.*}} = apply [[CHECK_EXEC_REF]]({{.*}}, [[EXEC]])
341+
342+ // protocol witness for Hashable.hash(into:) in conformance TestDerivedHashable
343+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances19TestDerivedHashableVSHAASH4hash4intoys6HasherVz_tFTW
344+ // CHECK: [[MAIN_ACTOR:%.*]] = begin_borrow {{.*}} : $MainActor
345+ // CHECK-NEXT: [[EXEC:%.*]] = extract_executor [[MAIN_ACTOR]] : $MainActor
346+ // CHECK: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
347+ // CHECK-NEXT: {{.*}} = apply [[CHECK_EXEC_REF]]({{.*}}, [[EXEC]])
348+
349+ // protocol witness for static Equatable.== infix(_:_:) in conformance TestDerivedHashable
350+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances19TestDerivedHashableVSQAASQ2eeoiySbx_xtFZTW
351+ // CHECK: [[MAIN_ACTOR:%.*]] = begin_borrow {{.*}} : $MainActor
352+ // CHECK-NEXT: [[EXEC:%.*]] = extract_executor [[MAIN_ACTOR]] : $MainActor
353+ // CHECK: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
354+ // CHECK-NEXT: {{.*}} = apply [[CHECK_EXEC_REF]]({{.*}}, [[EXEC]])
355+
356+ extension NotSendable : Codable { }
357+
358+ @MainActor
359+ struct TestDerivedCodable : @preconcurrency Codable {
360+ var x : NotSendable
361+ }
362+
363+ // protocol witness for Decodable.init(from:) in conformance TestDerivedCodable
364+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances18TestDerivedCodableVSeAASe4fromxs7Decoder_p_tKcfCTW
365+ // CHECK: [[MAIN_ACTOR:%.*]] = begin_borrow {{.*}} : $MainActor
366+ // CHECK-NEXT: [[EXEC:%.*]] = extract_executor [[MAIN_ACTOR]] : $MainActor
367+ // CHECK: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
368+ // CHECK-NEXT: {{.*}} = apply [[CHECK_EXEC_REF]]({{.*}}, [[EXEC]])
369+
370+ // protocol witness for Encodable.encode(to:) in conformance TestDerivedCodable
371+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances18TestDerivedCodableVSEAASE6encode2toys7Encoder_p_tKFTW
372+ // CHECK: [[MAIN_ACTOR:%.*]] = begin_borrow {{.*}} : $MainActor
373+ // CHECK-NEXT: [[EXEC:%.*]] = extract_executor [[MAIN_ACTOR]] : $MainActor
374+ // CHECK: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
375+ // CHECK-NEXT: {{.*}} = apply [[CHECK_EXEC_REF]]({{.*}}, [[EXEC]])
376+
312377//--- checks_disabled.swift
313378protocol P {
314379 associatedtype T
@@ -498,3 +563,50 @@ struct PreconcurrencyAppliesToParentToo : @preconcurrency Child {
498563// protocol witness for Parent.a() in conformance PreconcurrencyAppliesToParentToo
499564// CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances32PreconcurrencyAppliesToParentTooVAA0F0A2aDP1ayyFTW : $@convention(witness_method: Parent) (@in_guaranteed PreconcurrencyAppliesToParentToo) -> ()
500565// CHECK-NOT: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
566+
567+ @available ( * , unavailable)
568+ extension NotSendable : Sendable { }
569+
570+ struct NotSendable : Equatable , Hashable {
571+ }
572+
573+ @MainActor
574+ struct TestDerivedEquatable : @preconcurrency Equatable {
575+ var x : NotSendable
576+ }
577+
578+ // protocol witness for static Equatable.== infix(_:_:) in conformance TestDerivedEquatable
579+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances20TestDerivedEquatableVSQAASQ2eeoiySbx_xtFZTW
580+ // CHECK-NOT: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
581+
582+ @MainActor
583+ struct TestDerivedHashable : @preconcurrency Hashable {
584+ var x : NotSendable
585+ }
586+
587+ // protocol witness for Hashable.hashValue.getter in conformance TestDerivedHashable
588+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances19TestDerivedHashableVSHAASH9hashValueSivgTW
589+ // CHECK-NOT: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
590+
591+ // protocol witness for Hashable.hash(into:) in conformance TestDerivedHashable
592+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances19TestDerivedHashableVSHAASH4hash4intoys6HasherVz_tFTW
593+ // CHECK-NOT: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
594+
595+ // protocol witness for static Equatable.== infix(_:_:) in conformance TestDerivedHashable
596+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances19TestDerivedHashableVSQAASQ2eeoiySbx_xtFZTW
597+ // CHECK-NOT: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
598+
599+ extension NotSendable : Codable { }
600+
601+ @MainActor
602+ struct TestDerivedCodable : @preconcurrency Codable {
603+ var x : NotSendable
604+ }
605+
606+ // protocol witness for Decodable.init(from:) in conformance TestDerivedCodable
607+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances18TestDerivedCodableVSeAASe4fromxs7Decoder_p_tKcfCTW
608+ // CHECK-NOT: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
609+
610+ // protocol witness for Encodable.encode(to:) in conformance TestDerivedCodable
611+ // CHECK-LABEL: sil private [transparent] [thunk] [ossa] @$s27preconcurrency_conformances18TestDerivedCodableVSEAASE6encode2toys7Encoder_p_tKFTW
612+ // CHECK-NOT: [[CHECK_EXEC_REF:%.*]] = function_ref @$ss22_checkExpectedExecutor14_filenameStart01_D6Length01_D7IsASCII5_line9_executoryBp_BwBi1_BwBetF
0 commit comments