aboutsummaryrefslogtreecommitdiffstats
path: root/abstractmetalang.cpp
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2010-09-01 13:35:40 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-09 19:10:09 -0300
commit2d170a0b8b1519befc4cdad57a0a46ccf8d16e0a (patch)
treebd7b63fd5bc1385412f4dea1f3a10cd5a17f599a /abstractmetalang.cpp
parent869b35c10ef573771532c6f2cb017dbfab315e61 (diff)
Fixed function modification propagation.
Now all modifications on base function will be propagate until a new modification was found. Reviewer: Hugo Parente Lima <hugo.pl@gmail.com> Lauro Moura <lauro.neto@openbossa.org>
Diffstat (limited to 'abstractmetalang.cpp')
-rw-r--r--abstractmetalang.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/abstractmetalang.cpp b/abstractmetalang.cpp
index fe6c6b37..da48a315 100644
--- a/abstractmetalang.cpp
+++ b/abstractmetalang.cpp
@@ -690,8 +690,9 @@ FunctionModificationList AbstractMetaFunction::modifications(const AbstractMetaC
FunctionModificationList mods;
while (implementor) {
mods += implementor->typeEntry()->functionModifications(minimalSignature());
- if (implementor == implementor->baseClass() || implementor == implementingClass())
- break;
+ if ((implementor == implementor->baseClass()) ||
+ (implementor == implementingClass() && (mods.size() > 0)))
+ break;
implementor = implementor->baseClass();
}
return mods;