Kaydet (Commit) af8431d8 authored tarafından Eike Rathke's avatar Eike Rathke

Find VBA-only functions when compiling first on module level

This likely never worked as there is no SbiInstance in that step,
but worked by chance when running a module's code that was
compiled with VBA support where the VBA-only function was added as
a symbol to be resolved later during runtime and then the
SbiInstance exists and the symbol was magically resolved.

Found when trying to correct vba_tests to actually fail if all
subtests fail that then started to fail in Atn.vb because of the
Round() function being VBA-only.

Change-Id: I7d9f6e2640a73388a2a58c3d180820c6ef85abe3
Reviewed-on: https://gerrit.libreoffice.org/45425Reviewed-by: 's avatarEike Rathke <erack@redhat.com>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst 2849775c
...@@ -769,11 +769,23 @@ SbxVariable* SbiStdObject::Find( const OUString& rName, SbxClassType t ) ...@@ -769,11 +769,23 @@ SbxVariable* SbiStdObject::Find( const OUString& rName, SbxClassType t )
&& ( p->nHash == nHash_ ) && ( p->nHash == nHash_ )
&& ( rName.equalsIgnoreAsciiCaseAscii( p->pName ) ) ) && ( rName.equalsIgnoreAsciiCaseAscii( p->pName ) ) )
{ {
SbiInstance* pInst = GetSbData()->pInst;
bFound = true; bFound = true;
if( p->nArgs & COMPTMASK_ ) if( p->nArgs & COMPTMASK_ )
{ {
if ( !pInst || ( pInst->IsCompatibility() && ( NORMONLY_ & p->nArgs ) ) || ( !pInst->IsCompatibility() && ( COMPATONLY_ & p->nArgs ) ) ) bool bCompatibility = false;
SbiInstance* pInst = GetSbData()->pInst;
if (pInst)
{
bCompatibility = pInst->IsCompatibility();
}
else
{
// No instance running => compiling a source on module level.
const SbModule* pModule = GetSbData()->pCompMod;
if (pModule)
bCompatibility = pModule->IsVBACompat();
}
if ((bCompatibility && (NORMONLY_ & p->nArgs)) || (!bCompatibility && (COMPATONLY_ & p->nArgs)))
bFound = false; bFound = false;
} }
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment