Attribute contracts apply when the type checker fails to coerce and validate a function call, that has function or delegate pointer arguments.
An attribute contract does not change how a function's body and in contract gets typed checked. These get typed checked with the assumption that the stated attributes were valid during the call.