Reports redundant property setters.

Setter is considered to be redundant in one of the following cases:

  1. Setter has no body. Accessor visibility isn't changed, declaration isn't external and has no annotations.
    
      var myPropWithRedundantSetter: Int = 0
          set // redundant
    
      var myPropA: Int = 0
          private set // OK - property visibility is changed to private
    
      var myPropB: Int = 0
          external set // OK - implemented not in Kotlin (external)
    
      var myPropC: Int = 0
          @Inject set // OK - accessor is annotated
            
  2. Setter body is a block with a single statement assigning the parameter to the backing field.
    
      var prop: Int = 0
          set(value) { // redundant
              field = value
          }