> variable renaming definitely conveys a semantic change
I didn't say it doesn't. Renaming is a change and you see it but you don't need to see it in every place that refers to that variable. For them there is simply no semantic change they still reference the same variable.
> At least to me whitespace does convey meaning
Can you give an example? If two programs behave exactly the same how whitespace convey a semantic change?
> order of functions
You can see order changes in a structured diff as well if you want but you don't need to hundreds of line of removal and addition like text diff. You would see only the relevant thing which is reordering.
In C, I use FOO() for a macro, foo() for a function like macro and foo () for a function.
Also:
statement1;
statement2;
statement3;
statement4;
is different from:
statement1;
statement2;
statement3;
statement4;
Can you still see those changes in a structured diff?
> You can see order changes in a structured diff as well if you want but you don't need to hundreds of line of removal and addition like text diff. You would see only the relevant thing which is reordering.
That is nice then, I thought diffing an AST would lose that ability.
I didn't say it doesn't. Renaming is a change and you see it but you don't need to see it in every place that refers to that variable. For them there is simply no semantic change they still reference the same variable.
> At least to me whitespace does convey meaning
Can you give an example? If two programs behave exactly the same how whitespace convey a semantic change?
> order of functions
You can see order changes in a structured diff as well if you want but you don't need to hundreds of line of removal and addition like text diff. You would see only the relevant thing which is reordering.