diff options
author | Josh Micich <josh@apache.org> | 2009-05-17 02:02:48 +0000 |
---|---|---|
committer | Josh Micich <josh@apache.org> | 2009-05-17 02:02:48 +0000 |
commit | f5b208565286dcea2cfb782fed4ee50231fa8271 (patch) | |
tree | cd0869af474dcd4ef9ca4a3c32f457f41427180d /src/java/org/apache/poi/ss | |
parent | 2c2948ca6571e7be1e0757b490cc66966859398a (diff) | |
download | poi-f5b208565286dcea2cfb782fed4ee50231fa8271.tar.gz poi-f5b208565286dcea2cfb782fed4ee50231fa8271.zip |
encapsulated hasUnlimitedVarags() logic into FunctionMetadata
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@775575 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/poi/ss')
-rw-r--r-- | src/java/org/apache/poi/ss/formula/FormulaParser.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/java/org/apache/poi/ss/formula/FormulaParser.java b/src/java/org/apache/poi/ss/formula/FormulaParser.java index d36793be93..7cd7e73941 100644 --- a/src/java/org/apache/poi/ss/formula/FormulaParser.java +++ b/src/java/org/apache/poi/ss/formula/FormulaParser.java @@ -31,7 +31,6 @@ import org.apache.poi.hssf.usermodel.HSSFErrorConstants; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.CellReference.NameType; -import org.apache.poi.ss.SpreadsheetVersion; /** * This class parses a formula string into a List of tokens in RPN order. @@ -984,14 +983,20 @@ public final class FormulaParser { msg += " but got " + numArgs + "."; throw new FormulaParseException(msg); } - //the maximum number of arguments depends on the Excel version - int maxArgs = fm.getMaxParams(); - if( maxArgs == FunctionMetadataRegistry.FUNCTION_MAX_PARAMS) { - //_book can be omitted by test cases - if(_book != null) maxArgs = _book.getSpreadsheetVersion().getMaxFunctionArgs(); - } + //the maximum number of arguments depends on the Excel version + int maxArgs; + if (fm.hasUnlimitedVarags()) { + if(_book != null) { + maxArgs = _book.getSpreadsheetVersion().getMaxFunctionArgs(); + } else { + //_book can be omitted by test cases + maxArgs = fm.getMaxParams(); // just use BIFF8 + } + } else { + maxArgs = fm.getMaxParams(); + } - if(numArgs > maxArgs) { + if(numArgs > maxArgs) { String msg = "Too many arguments to function '" + fm.getName() + "'. "; if(fm.hasFixedArgsLength()) { msg += "Expected " + maxArgs; |