@damianh: Having FXCop stuff "up front", i.e. in the IDE, would be handy indeed, but I still want to be able to enforce the rules at build time. So, I can't get behind that. Code Contracts have three parts: the physical representation of the contracts in the code/IL, runtime checking of the contracts and static analysis of the code. What you just said sounds like integration of the static analysis inside the IDE is the main goal. Details about IL Rewriting are not really that relevant here... the "just in time compilation" could still run through an IL rewriter. I get that they probably want to do away with IL rewriting, but that doesn't address the things that could truly be addressed if Code Contracts were made part of the language. And, I would also like to enforce the static analysis of contracts at build time, just like the FXCop analysis.
@exoteric: Having types default to non-nullable would be nice, but that doesn't remove the usefulness of the ?. operator. After all, F# has a maybe monad for a reason.