aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/poi/ss
diff options
context:
space:
mode:
authorJosh Micich <josh@apache.org>2009-05-17 02:02:48 +0000
committerJosh Micich <josh@apache.org>2009-05-17 02:02:48 +0000
commitf5b208565286dcea2cfb782fed4ee50231fa8271 (patch)
treecd0869af474dcd4ef9ca4a3c32f457f41427180d /src/java/org/apache/poi/ss
parent2c2948ca6571e7be1e0757b490cc66966859398a (diff)
downloadpoi-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.java21
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;