That makes me wonder though – shouldn’t the byte code depend only on the AST, and not on the raw source code? If not, what’s the rationale behind this?
The core developers regarded a hash of the source code as more useful.
But why? It seems not very helpful to me not to be able to verify a contract just because some white space or formatting differences in the source that I have. If white space matters, you can’t even verify cross-platform when you’ve got different eol delimiters eg in Windows vs Linux.
Also note that my question is regarding the byte code not a hash.
The byte code contains a hash of the source code. It’s just intended to demonstrate that a particular source code file made a certain contract.