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 */
|
||||
str_assert = NewString(Getattr(n, "feature:preassert"));
|
||||
if (Len(str_assert)) {
|
||||
Setattr(n, "feature:preassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||
|
||||
/*
|
||||
tag = NewString(" SWIG_preassert(");
|
||||
Append(tag, str_assert);
|
||||
Append(tag, ");\n");
|
||||
Setattr(n, "feature:preassert", tag);
|
||||
Setattr(n, "feature:inherit_preassert", tag);
|
||||
Delete(tag);
|
||||
*/
|
||||
}
|
||||
Delete(str_assert);
|
||||
|
||||
/* inherit_preassert */
|
||||
str_assert = NewString(Getattr(n, "feature:inherit_preassert"));
|
||||
if (Len(str_assert)) {
|
||||
Setattr(n, "feature:inherit_preassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||
/*
|
||||
tag = NewString(" SWIG_inherit_preassert((");
|
||||
Append(tag, str_assert);
|
||||
Append(tag, "));\n");
|
||||
Setattr(n, "feature:inherit_preassert", tag);
|
||||
Delete(tag);
|
||||
*/
|
||||
}
|
||||
Delete(str_assert);
|
||||
|
||||
/* postassert */
|
||||
str_assert = NewString(Getattr(n, "feature:postassert"));
|
||||
if (Len(str_assert)) {
|
||||
Setattr(n, "feature:postassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||
/*
|
||||
tag = NewString(" SWIG_postassert(");
|
||||
Append(tag, str_assert);
|
||||
Append(tag, ");\n");
|
||||
Setattr(n, "feature:postassert", tag);
|
||||
Delete(tag);
|
||||
Delete(tag);
|
||||
*/
|
||||
}
|
||||
Delete(str_assert);
|
||||
|
||||
/* inherit_postassert */
|
||||
str_assert = NewString(Getattr(n, "feature:inherit_postassert"));
|
||||
if (Len(str_assert)) {
|
||||
Setattr(n, "feature:inherit_postassert", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||
/*
|
||||
tag = NewString(" SWIG_inherit_postassert((");
|
||||
Append(tag, str_assert);
|
||||
Append(tag, "));\n");
|
||||
Setattr(n, "feature:inherit_postassert", tag);
|
||||
Delete(tag);
|
||||
*/
|
||||
}
|
||||
Delete(str_assert);
|
||||
|
||||
/* invariant */
|
||||
str_assert = NewString(Getattr(n, "feature:invariant"));
|
||||
if (Len(str_assert)) {
|
||||
Setattr(n, "feature:invariant", NewStringf("SWIG_contract_assert(%s);\n", str_assert));
|
||||
/*
|
||||
tag = NewString(" SWIG_invariant(");
|
||||
Append(tag, str_assert);
|
||||
Append(tag, ");\n");
|
||||
Setattr(n, "feature:invariant", tag);
|
||||
Delete(tag);
|
||||
Delete(tag);
|
||||
*/
|
||||
}
|
||||
Delete(str_assert);
|
||||
return SWIG_OK;
|
||||
|
|
@ -444,7 +460,7 @@ int Contracts::AssertAddErrorMsg(Node *n) {
|
|||
str_assert = NewString(Getattr(n, "feature:inherit_preassert"));
|
||||
Replaceall(str_assert, ");\n", "");
|
||||
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(str_assert, ", \"%s\");\n", error_msg);
|
||||
Setattr(n, "feature:inherit_preassert", str_assert);
|
||||
|
|
@ -468,7 +484,7 @@ int Contracts::AssertAddErrorMsg(Node *n) {
|
|||
str_assert = NewString(Getattr(n, "feature:inherit_postassert"));
|
||||
Replaceall(str_assert, ");\n", "");
|
||||
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(str_assert, ", \"%s\");\n", error_msg);
|
||||
Setattr(n, "feature:inherit_postassert", str_assert);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue