diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-03-22 17:03:21 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-03-22 17:03:21 -0300 |
commit | c5ad7e927b7a27f0c38d547fe4d6d66540bc4f75 (patch) | |
tree | b99142bcbf4d6391c901feb7198c36082df4cffb /shibokengenerator.cpp | |
parent | 2d01f9d633e74718669bc40e9789ed513dfc8b59 (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.cpp | 16 |
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; } |