Simplified contract runtime API. Use SWIG_contract_assert() for all errors.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5317 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
7a652825fb
commit
cac9367daf
1 changed files with 21 additions and 5 deletions
|
|
@ -371,55 +371,71 @@ int Contracts::AssertAddTag(Node *n) {
|
||||||
/* preassert */
|
/* preassert */
|
||||||
str_assert = NewString(Getattr(n, "feature:preassert"));
|
str_assert = NewString(Getattr(n, "feature:preassert"));
|
||||||
if (Len(str_assert)) {
|
if (Len(str_assert)) {
|
||||||
|
Setattr(n, "feature:preassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||||
|
|
||||||
|
/*
|
||||||
tag = NewString(" SWIG_preassert(");
|
tag = NewString(" SWIG_preassert(");
|
||||||
Append(tag, str_assert);
|
Append(tag, str_assert);
|
||||||
Append(tag, ");\n");
|
Append(tag, ");\n");
|
||||||
Setattr(n, "feature:preassert", tag);
|
Setattr(n, "feature:inherit_preassert", tag);
|
||||||
Delete(tag);
|
Delete(tag);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
Delete(str_assert);
|
Delete(str_assert);
|
||||||
|
|
||||||
/* inherit_preassert */
|
/* inherit_preassert */
|
||||||
str_assert = NewString(Getattr(n, "feature:inherit_preassert"));
|
str_assert = NewString(Getattr(n, "feature:inherit_preassert"));
|
||||||
if (Len(str_assert)) {
|
if (Len(str_assert)) {
|
||||||
|
Setattr(n, "feature:inherit_preassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||||
|
/*
|
||||||
tag = NewString(" SWIG_inherit_preassert((");
|
tag = NewString(" SWIG_inherit_preassert((");
|
||||||
Append(tag, str_assert);
|
Append(tag, str_assert);
|
||||||
Append(tag, "));\n");
|
Append(tag, "));\n");
|
||||||
Setattr(n, "feature:inherit_preassert", tag);
|
Setattr(n, "feature:inherit_preassert", tag);
|
||||||
Delete(tag);
|
Delete(tag);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
Delete(str_assert);
|
Delete(str_assert);
|
||||||
|
|
||||||
/* postassert */
|
/* postassert */
|
||||||
str_assert = NewString(Getattr(n, "feature:postassert"));
|
str_assert = NewString(Getattr(n, "feature:postassert"));
|
||||||
if (Len(str_assert)) {
|
if (Len(str_assert)) {
|
||||||
|
Setattr(n, "feature:postassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||||
|
/*
|
||||||
tag = NewString(" SWIG_postassert(");
|
tag = NewString(" SWIG_postassert(");
|
||||||
Append(tag, str_assert);
|
Append(tag, str_assert);
|
||||||
Append(tag, ");\n");
|
Append(tag, ");\n");
|
||||||
Setattr(n, "feature:postassert", tag);
|
Setattr(n, "feature:postassert", tag);
|
||||||
Delete(tag);
|
Delete(tag);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
Delete(str_assert);
|
Delete(str_assert);
|
||||||
|
|
||||||
/* inherit_postassert */
|
/* inherit_postassert */
|
||||||
str_assert = NewString(Getattr(n, "feature:inherit_postassert"));
|
str_assert = NewString(Getattr(n, "feature:inherit_postassert"));
|
||||||
if (Len(str_assert)) {
|
if (Len(str_assert)) {
|
||||||
|
Setattr(n, "feature:inherit_postassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||||
|
/*
|
||||||
tag = NewString(" SWIG_inherit_postassert((");
|
tag = NewString(" SWIG_inherit_postassert((");
|
||||||
Append(tag, str_assert);
|
Append(tag, str_assert);
|
||||||
Append(tag, "));\n");
|
Append(tag, "));\n");
|
||||||
Setattr(n, "feature:inherit_postassert", tag);
|
Setattr(n, "feature:inherit_postassert", tag);
|
||||||
Delete(tag);
|
Delete(tag);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
Delete(str_assert);
|
Delete(str_assert);
|
||||||
|
|
||||||
/* invariant */
|
/* invariant */
|
||||||
str_assert = NewString(Getattr(n, "feature:invariant"));
|
str_assert = NewString(Getattr(n, "feature:invariant"));
|
||||||
if (Len(str_assert)) {
|
if (Len(str_assert)) {
|
||||||
|
Setattr(n, "feature:invariant", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||||
|
/*
|
||||||
tag = NewString(" SWIG_invariant(");
|
tag = NewString(" SWIG_invariant(");
|
||||||
Append(tag, str_assert);
|
Append(tag, str_assert);
|
||||||
Append(tag, ");\n");
|
Append(tag, ");\n");
|
||||||
Setattr(n, "feature:invariant", tag);
|
Setattr(n, "feature:invariant", tag);
|
||||||
Delete(tag);
|
Delete(tag);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
Delete(str_assert);
|
Delete(str_assert);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
|
|
@ -444,7 +460,7 @@ int Contracts::AssertAddErrorMsg(Node *n) {
|
||||||
str_assert = NewString(Getattr(n, "feature:inherit_preassert"));
|
str_assert = NewString(Getattr(n, "feature:inherit_preassert"));
|
||||||
Replaceall(str_assert, ");\n", "");
|
Replaceall(str_assert, ");\n", "");
|
||||||
if (Len(str_assert)) {
|
if (Len(str_assert)) {
|
||||||
error_msg = NewString("Inherited require assertion violation, ");
|
error_msg = NewString("Require assertion violation (via inheritance), ");
|
||||||
Printf(error_msg, "in function %s", Getattr(n, "name"));
|
Printf(error_msg, "in function %s", Getattr(n, "name"));
|
||||||
Printf(str_assert, ", \"%s\");\n", error_msg);
|
Printf(str_assert, ", \"%s\");\n", error_msg);
|
||||||
Setattr(n, "feature:inherit_preassert", str_assert);
|
Setattr(n, "feature:inherit_preassert", str_assert);
|
||||||
|
|
@ -468,7 +484,7 @@ int Contracts::AssertAddErrorMsg(Node *n) {
|
||||||
str_assert = NewString(Getattr(n, "feature:inherit_postassert"));
|
str_assert = NewString(Getattr(n, "feature:inherit_postassert"));
|
||||||
Replaceall(str_assert, ");\n", "");
|
Replaceall(str_assert, ");\n", "");
|
||||||
if (Len(str_assert)) {
|
if (Len(str_assert)) {
|
||||||
error_msg = NewString("Inherited ensure assertion violation, ");
|
error_msg = NewString("Ensure assertion violation (via inheritance), ");
|
||||||
Printf(error_msg, "in function of %s", Getattr(n, "name"));
|
Printf(error_msg, "in function of %s", Getattr(n, "name"));
|
||||||
Printf(str_assert, ", \"%s\");\n", error_msg);
|
Printf(str_assert, ", \"%s\");\n", error_msg);
|
||||||
Setattr(n, "feature:inherit_postassert", str_assert);
|
Setattr(n, "feature:inherit_postassert", str_assert);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue