Result of call to [myFunction] is unused

This is behaviour that has been introduced in Swift 3. Instead of having to explicitly annotate functions with @warn_unused_result in order to tell the compiler that the result should be used by the caller, this is now the default behaviour.

You can use the @discardableResult attribute on your function in order to inform the compiler that the return value doesn’t have to be ‘consumed’ by the caller.

@discardableResult
func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint {

   ... // do things that have side effects

   return NSLayoutConstraint()
}

view1.makeConstraint(view2) // No warning

let constraint = view1.makeConstraint(view2) // Works as expected

You can read about this change in more detail on the evolution proposal.

Leave a Comment