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/45425 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org>
This commit is contained in:
parent
2849775c79
commit
af8431d8db
1 changed files with 14 additions and 2 deletions
|
@ -769,11 +769,23 @@ SbxVariable* SbiStdObject::Find( const OUString& rName, SbxClassType t )
|
|||
&& ( p->nHash == nHash_ )
|
||||
&& ( rName.equalsIgnoreAsciiCaseAscii( p->pName ) ) )
|
||||
{
|
||||
SbiInstance* pInst = GetSbData()->pInst;
|
||||
bFound = true;
|
||||
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;
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue