aboutsummaryrefslogtreecommitdiffstats
path: root/shibokengenerator.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-03-22 17:03:21 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2010-03-22 17:03:21 -0300
commitc5ad7e927b7a27f0c38d547fe4d6d66540bc4f75 (patch)
treeb99142bcbf4d6391c901feb7198c36082df4cffb /shibokengenerator.cpp
parent2d01f9d633e74718669bc40e9789ed513dfc8b59 (diff)
Updated ShibokenGenerator::injectedCodeHasReturnValueAttribution.
The method now checks native code injections instead of only target language code.
Diffstat (limited to 'shibokengenerator.cpp')
-rw-r--r--shibokengenerator.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp
index d20268184..ebfe58e5e 100644
--- a/shibokengenerator.cpp
+++ b/shibokengenerator.cpp
@@ -1142,13 +1142,19 @@ bool ShibokenGenerator::injectedCodeCallsPythonOverride(const AbstractMetaFuncti
return false;
}
-bool ShibokenGenerator::injectedCodeHasReturnValueAttribution(const AbstractMetaFunction* func)
+bool ShibokenGenerator::injectedCodeHasReturnValueAttribution(const AbstractMetaFunction* func, TypeSystem::Language language)
{
- static QRegExp retValAttributionRegexCheck("%PYARG_0\\s*=[^=]\\s*.+");
- CodeSnipList snips = func->injectedCodeSnips(CodeSnip::Any, TypeSystem::TargetLangCode);
+ static QRegExp retValAttributionRegexCheck_native("%0\\s*=[^=]\\s*.+");
+ static QRegExp retValAttributionRegexCheck_target("%PYARG_0\\s*=[^=]\\s*.+");
+ CodeSnipList snips = func->injectedCodeSnips(CodeSnip::Any, language);
foreach (CodeSnip snip, snips) {
- if (retValAttributionRegexCheck.indexIn(snip.code()) != -1)
- return true;
+ if (language == TypeSystem::TargetLangCode) {
+ if (retValAttributionRegexCheck_target.indexIn(snip.code()) != -1)
+ return true;
+ } else {
+ if (retValAttributionRegexCheck_native.indexIn(snip.code()) != -1)
+ return true;
+ }
}
return false;
}