www.digitalmars.com         C & C++   DMDScript  

D - code prover interface (new type of static assert?)

Apologies for having not carefully read the august const flamewars

It appears that the people who like const, want the compiler to prove 
that their own code does not modify certain numbers of their own variables.
And the people who don't like const say that it mucks up the interface 
and other libs may violate their const contracts, so it's useless.

All I want the compiler to do is to traverse MY code seeing if the 
variable in question is modified, and let me know of potentially 
offending lib calls that it cannot verify.

Perhaps this harkens back to the static_assert feature...
if I could just ASSERT that this data was not modified as far as the 
compiler knows (perhaps warnings if it can't get the source of a lib 
that may modify it)then I would be happy.
it would be something like

x = new MyClass;
y = new MyClass;
const_assert(x.memberVar,y) {
	int z= myFunc(x,y); // <-- some benign function
	x.memberVar+=5; // compiler asserts here.
}

this probably opens up a new can of worms, but my idea is that it would 
apply to very small code-snippits like code that is currently 
destructive and needs to be upgraded to non-destructive.
And it would warn in the absence of source code.

Since D is a CFG someone could probably write some bison or yacc script 
to do this, yes?
And could call it D++? :-P
in C++ you could accomplish this feature by shadowing the variable in 
question with const &thatVariable=thatVariable instead

--Daniel
Apr 27 2004