[Issue 14721] New: Contracts should not be able to modify function arguments
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Tue Jun 23 01:46:04 PDT 2015
https://issues.dlang.org/show_bug.cgi?id=14721
Issue ID: 14721
Summary: Contracts should not be able to modify function
arguments
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Keywords: accepts-invalid
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: verylonglogin.reg at gmail.com
This code compiles but shouldn't:
---
void f(int[] arr)
in { arr[0] = 5; } // compiles, should be an error
body { }
class C
{
int i;
void f()
in { i = 5; } // compiles, should be an error
body { }
}
---
Notes:
`invariant` doesn't allow modification of class fields as `this` is `const` and
function result passed to `out` contract is `const` too. For `in`/`out`
contracts only direct assignment to parameter is rejected (Issue 9413 & Issue
9414).
--
More information about the Digitalmars-d-bugs
mailing list