diff options
author | Eike Rathke <erack@redhat.com> | 2019-02-22 22:56:53 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-02-27 16:16:26 +0100 |
commit | 5f9104ef6f42d9d42ce3ec564affcba88889e76c (patch) | |
tree | 63dfc378504c58d6b4d72f69587b5c1ffe7037f2 /formula/source | |
parent | 05a5fa6cb71b9482be45e803512e33f977d8af03 (diff) |
Resolves: tdf#123477 let array/matrix formula act as ForceArray on calls
... so the inheritance and checks introduced with
ParamClass::ReferenceOrRefArray work for those as well.
Change-Id: Ieb87f6a3df5a388f859eae4c5558cf282cd0cde3
Reviewed-on: https://gerrit.libreoffice.org/68236
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 1f97ce11178649a8d16aa4a1df277e1a3bd8ef1b)
Reviewed-on: https://gerrit.libreoffice.org/68238
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'formula/source')
-rw-r--r-- | formula/source/core/api/FormulaCompiler.cxx | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx index f15ecbb9ddd5..51849f8caeb0 100644 --- a/formula/source/core/api/FormulaCompiler.cxx +++ b/formula/source/core/api/FormulaCompiler.cxx @@ -2700,11 +2700,20 @@ void FormulaCompiler::ForceArrayOperator( FormulaTokenRef const & rCurr ) // CheckSetForceArrayParameter() and later PutCode(). return; - if (!pCurrentFactorToken || (pCurrentFactorToken.get() == rCurr.get())) + if (!(rCurr->GetOpCode() != ocPush && (rCurr->GetType() == svByte || rCurr->GetType() == svJump))) return; - if (!(rCurr->GetOpCode() != ocPush && (rCurr->GetType() == svByte || rCurr->GetType() == svJump))) + if (!pCurrentFactorToken || (pCurrentFactorToken.get() == rCurr.get())) + { + if (!pCurrentFactorToken && mbMatrixFlag) + { + // An array/matrix formula acts as ForceArray on all top level + // operators and function calls, so that can be inherited properly + // below. + rCurr->SetInForceArray( ParamClass::ForceArray); + } return; + } // Inherited parameter class. const formula::ParamClass eForceType = pCurrentFactorToken->GetInForceArray(); |