@@ -745,27 +745,6 @@ final class RetentionTest: SourceGraphTestCase {
745745 }
746746 }
747747
748- func testRetainsAssignOnlyPropertyTypes( ) {
749- configuration. retainAssignOnlyProperties = false
750- configuration. retainAssignOnlyPropertyTypes = [ " CustomType " , " (CustomType, String) " , " Swift.Double " ]
751-
752- analyze ( retainPublic: true ) {
753- assertReferenced ( . class( " FixtureClass123 " ) ) {
754- self . assertReferenced ( . varInstance( " retainedSimpleProperty " ) )
755- self . assertReferenced ( . varInstance( " retainedModulePrefixedProperty " ) )
756- self . assertReferenced ( . varInstance( " retainedTupleProperty " ) )
757- self . assertReferenced ( . varInstance( " retainedDestructuredPropertyA " ) )
758- self . assertReferenced ( . varInstance( " retainedMultipleBindingPropertyA " ) )
759-
760- self . assertNotReferenced ( . varInstance( " notRetainedSimpleProperty " ) )
761- self . assertNotReferenced ( . varInstance( " notRetainedModulePrefixedProperty " ) )
762- self . assertNotReferenced ( . varInstance( " notRetainedTupleProperty " ) )
763- self . assertNotReferenced ( . varInstance( " notRetainedDestructuredPropertyB " ) )
764- self . assertNotReferenced ( . varInstance( " notRetainedMultipleBindingPropertyB " ) )
765- }
766- }
767- }
768-
769748 func testNestedDeclarations( ) {
770749 analyze ( retainPublic: true ) {
771750 assertReferenced ( . class( " FixtureClass102 " ) ) {
@@ -903,32 +882,6 @@ final class RetentionTest: SourceGraphTestCase {
903882 }
904883 }
905884
906- func testSimplePropertyAssignedButNeverRead( ) {
907- analyze ( retainPublic: true ) {
908- assertReferenced ( . class( " FixtureClass70 " ) ) {
909- self . assertNotReferenced ( . varInstance( " simpleUnreadVar " ) )
910- self . assertNotReferenced ( . varInstance( " simpleUnreadShadowedVar " ) )
911- self . assertNotReferenced ( . varStatic( " simpleStaticUnreadVar " ) )
912- self . assertReferenced ( . varInstance( " complexUnreadVar1 " ) )
913- self . assertReferenced ( . varInstance( " complexUnreadVar2 " ) )
914- self . assertReferenced ( . varInstance( " readVar " ) )
915- }
916- }
917-
918- configuration. retainAssignOnlyProperties = true
919-
920- analyze ( retainPublic: true ) {
921- assertReferenced ( . class( " FixtureClass70 " ) ) {
922- self . assertReferenced ( . varInstance( " simpleUnreadVar " ) )
923- self . assertReferenced ( . varInstance( " simpleUnreadShadowedVar " ) )
924- self . assertReferenced ( . varStatic( " simpleStaticUnreadVar " ) )
925- self . assertReferenced ( . varInstance( " complexUnreadVar1 " ) )
926- self . assertReferenced ( . varInstance( " complexUnreadVar2 " ) )
927- self . assertReferenced ( . varInstance( " readVar " ) )
928- }
929- }
930- }
931-
932885 func testRetainsProtocolsViaCompositeTypealias( ) {
933886 analyze ( retainPublic: true ) {
934887 assertReferenced ( . protocol( " Fixture200 " ) )
@@ -1013,6 +966,66 @@ final class RetentionTest: SourceGraphTestCase {
1013966 }
1014967 #endif
1015968
969+ // MARK: - Assign-only properties
970+
971+ func testSimplePropertyAssignedButNeverRead( ) {
972+ analyze ( retainPublic: true ) {
973+ assertReferenced ( . class( " FixtureClass70 " ) ) {
974+ self . assertNotReferenced ( . varInstance( " simpleUnreadVar " ) )
975+ self . assertNotReferenced ( . varInstance( " simpleUnreadShadowedVar " ) )
976+ self . assertNotReferenced ( . varInstance( " simpleUnreadVarAssignedMultiple " ) )
977+ self . assertNotReferenced ( . varStatic( " simpleStaticUnreadVar " ) )
978+ self . assertReferenced ( . varInstance( " complexUnreadVar1 " ) )
979+ self . assertReferenced ( . varInstance( " complexUnreadVar2 " ) )
980+ self . assertReferenced ( . varInstance( " readVar " ) )
981+ }
982+ }
983+
984+ configuration. retainAssignOnlyProperties = true
985+
986+ analyze ( retainPublic: true ) {
987+ assertReferenced ( . class( " FixtureClass70 " ) ) {
988+ self . assertReferenced ( . varInstance( " simpleUnreadVar " ) )
989+ self . assertReferenced ( . varInstance( " simpleUnreadShadowedVar " ) )
990+ self . assertReferenced ( . varInstance( " simpleUnreadVarAssignedMultiple " ) )
991+ self . assertReferenced ( . varStatic( " simpleStaticUnreadVar " ) )
992+ self . assertReferenced ( . varInstance( " complexUnreadVar1 " ) )
993+ self . assertReferenced ( . varInstance( " complexUnreadVar2 " ) )
994+ self . assertReferenced ( . varInstance( " readVar " ) )
995+ }
996+ }
997+ }
998+
999+ func testSimpleAssignOnlyPropertyNameConflict( ) {
1000+ analyze ( retainPublic: true ) {
1001+ assertReferenced ( . class( " FixtureClass131 " ) ) {
1002+ self . assertNotReferenced ( . varInstance( " someProperty " ) )
1003+ self . assertReferenced ( . varStatic( " someProperty " ) )
1004+ }
1005+ }
1006+ }
1007+
1008+ func testRetainsAssignOnlyPropertyTypes( ) {
1009+ configuration. retainAssignOnlyProperties = false
1010+ configuration. retainAssignOnlyPropertyTypes = [ " CustomType " , " (CustomType, String) " , " Swift.Double " ]
1011+
1012+ analyze ( retainPublic: true ) {
1013+ assertReferenced ( . class( " FixtureClass123 " ) ) {
1014+ self . assertReferenced ( . varInstance( " retainedSimpleProperty " ) )
1015+ self . assertReferenced ( . varInstance( " retainedModulePrefixedProperty " ) )
1016+ self . assertReferenced ( . varInstance( " retainedTupleProperty " ) )
1017+ self . assertReferenced ( . varInstance( " retainedDestructuredPropertyA " ) )
1018+ self . assertReferenced ( . varInstance( " retainedMultipleBindingPropertyA " ) )
1019+
1020+ self . assertNotReferenced ( . varInstance( " notRetainedSimpleProperty " ) )
1021+ self . assertNotReferenced ( . varInstance( " notRetainedModulePrefixedProperty " ) )
1022+ self . assertNotReferenced ( . varInstance( " notRetainedTupleProperty " ) )
1023+ self . assertNotReferenced ( . varInstance( " notRetainedDestructuredPropertyB " ) )
1024+ self . assertNotReferenced ( . varInstance( " notRetainedMultipleBindingPropertyB " ) )
1025+ }
1026+ }
1027+ }
1028+
10161029 // MARK: - Unused Parameters
10171030
10181031 func testRetainsParamUsedInOverriddenMethod( ) {
0 commit comments