Skip to content

Commit

Permalink
fix to varargs resolution
Browse files Browse the repository at this point in the history
  • Loading branch information
mikebrock committed Apr 17, 2011
1 parent 9265476 commit 1cf6e9b
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 105 deletions.
15 changes: 4 additions & 11 deletions .classpath
Original file line number Diff line number Diff line change
@@ -1,15 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="lib" path="lib/asm.jar"/>
<classpathentry kind="lib" path="lib/commons-el-1.0.jar"/>
<classpathentry kind="lib" path="lib/jsp-api-2.1.jar"/>
<classpathentry kind="lib" path="lib/junit-3.8.2.jar"/>
<classpathentry kind="lib" path="lib/ognl-2.6.7.jar"/>
<classpathentry kind="lib" path="lib/servlet-api-2.5.jar"/>
<classpathentry kind="lib" path="lib/xstream-1.3.1.jar"/>
<classpathentry kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
34 changes: 22 additions & 12 deletions .project
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>mvel</name>
<comment/>
<projects/>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
<name>mvel</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.maven.ide.eclipse.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.maven.ide.eclipse.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
154 changes: 77 additions & 77 deletions META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -1,77 +1,77 @@
Manifest-Version: 1.0
Export-Package: org.mvel2;uses:="org.mvel2.util,org.mvel2.conversion,o
rg.mvel2.integration.impl,org.mvel2.optimizers.impl.refl.nodes,org.mv
el2.integration,org.mvel2.compiler,org.mvel2.ast,org.mvel2.debug";ver
sion="2.1.0.SNAPSHOT",org.mvel2.asm;version="2.1.0.SNAPSHOT",org.mvel
2.asm.signature;version="2.1.0.SNAPSHOT",org.mvel2.asm.util;uses:="or
g.mvel2.asm,org.mvel2.asm.signature";version="2.1.0.SNAPSHOT",org.mve
l2.ast;uses:="org.mvel2.integration,org.mvel2.optimizers,org.mvel2,or
g.mvel2.debug,org.mvel2.compiler,org.mvel2.util,org.mvel2.math,org.mv
el2.integration.impl";version="2.1.0.SNAPSHOT",org.mvel2.compiler;use
s:="org.mvel2.integration,org.mvel2,org.mvel2.util,org.mvel2.ast,org.
mvel2.optimizers,org.mvel2.integration.impl,org.mvel2.optimizers.impl
.refl.nodes";version="2.1.0.SNAPSHOT",org.mvel2.conversion;uses:="org
.mvel2,org.mvel2.compiler";version="2.1.0.SNAPSHOT",org.mvel2.debug;u
ses:="org.mvel2.integration,org.mvel2.util,org.mvel2.ast,org.mvel2.co
mpiler,org.mvel2";version="2.1.0.SNAPSHOT",org.mvel2.integration;uses
:="org.mvel2.ast";version="2.1.0.SNAPSHOT",org.mvel2.integration.impl
;uses:="org.mvel2.integration,org.mvel2,org.mvel2.ast,org.mvel2.util"
;version="2.1.0.SNAPSHOT",org.mvel2.math;uses:="org.mvel2,org.mvel2.d
ebug,org.mvel2.util";version="2.1.0.SNAPSHOT",org.mvel2.optimizers;us
es:="org.mvel2,org.mvel2.util,org.mvel2.compiler,org.mvel2.integratio
n,org.mvel2.optimizers.dynamic,org.mvel2.optimizers.impl.asm,org.mvel
2.optimizers.impl.refl";version="2.1.0.SNAPSHOT",org.mvel2.optimizers
.dynamic;uses:="org.mvel2.compiler,org.mvel2.util,org.mvel2.integrati
on,org.mvel2.optimizers,org.mvel2,org.mvel2.optimizers.impl.asm";vers
ion="2.1.0.SNAPSHOT",org.mvel2.optimizers.impl.asm;uses:="org.mvel2.i
ntegration,org.mvel2.optimizers.impl.refl.nodes,org.mvel2.util,org.mv
el2.asm,org.mvel2.optimizers,org.mvel2,org.mvel2.compiler,org.mvel2.a
st";version="2.1.0.SNAPSHOT",org.mvel2.optimizers.impl.refl;uses:="or
g.mvel2.optimizers.impl.refl.nodes,org.mvel2.integration,org.mvel2.ut
il,org.mvel2.optimizers.impl.refl.collection,org.mvel2.optimizers,org
.mvel2,org.mvel2.compiler,org.mvel2.ast";version="2.1.0.SNAPSHOT",org
.mvel2.optimizers.impl.refl.collection;uses:="org.mvel2.integration,o
rg.mvel2.compiler,org.mvel2,org.mvel2.util";version="2.1.0.SNAPSHOT",
org.mvel2.optimizers.impl.refl.nodes;uses:="org.mvel2.integration,org
.mvel2.compiler,org.mvel2,org.mvel2.util,org.mvel2.ast,org.mvel2.opti
mizers";version="2.1.0.SNAPSHOT",org.mvel2.sh;uses:="org.mvel2,org.mv
el2.templates,org.mvel2.integration.impl,org.mvel2.integration,org.mv
el2.util,org.mvel2.sh.command.basic,org.mvel2.sh.command.file";versio
n="2.1.0.SNAPSHOT",org.mvel2.sh.command.basic;uses:="org.mvel2.sh,org
.mvel2.sh.text,org.mvel2.util,org.mvel2";version="2.1.0.SNAPSHOT",org
.mvel2.sh.command.file;uses:="org.mvel2.sh";version="2.1.0.SNAPSHOT",
org.mvel2.sh.text;version="2.1.0.SNAPSHOT",org.mvel2.templates;uses:=
"org.mvel2.templates.res,org.mvel2.templates.util,org.mvel2,org.mvel2
.util,org.mvel2.integration.impl,org.mvel2.integration,org.mvel2.temp
lates.util.io";version="2.1.0.SNAPSHOT",org.mvel2.templates.res;uses:
="org.mvel2.templates,org.mvel2.integration,org.mvel2.templates.util,
org.mvel2,org.mvel2.integration.impl,org.mvel2.util";version="2.1.0.S
NAPSHOT",org.mvel2.templates.util;uses:="org.mvel2.templates.res,org.
mvel2.templates,org.mvel2.util";version="2.1.0.SNAPSHOT",org.mvel2.te
mplates.util.io;uses:="org.mvel2.templates.util,org.mvel2.util";versi
on="2.1.0.SNAPSHOT",org.mvel2.util;uses:="org.mvel2.ast,org.mvel2.int
egration,org.mvel2,org.mvel2.compiler,org.mvel2.integration.impl,org.
mvel2.math,sun.misc";version="2.1.0.SNAPSHOT"
Bundle-Version: 2.1.0.SNAPSHOT
Tool: Bnd-0.0.357
Bundle-Name: mvel2
Bnd-LastModified: 1301345255629
Created-By: 1.6.0_21 (Apple Inc.)
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.mvel2
Import-Package: org.mvel2;version="2.1",org.mvel2.asm;version="2.1",or
g.mvel2.asm.signature;version="2.1",org.mvel2.asm.util;version="2.1",
org.mvel2.ast;version="2.1",org.mvel2.compiler;version="2.1",org.mvel
2.conversion;version="2.1",org.mvel2.debug;version="2.1",org.mvel2.in
tegration;version="2.1",org.mvel2.integration.impl;version="2.1",org.
mvel2.math;version="2.1",org.mvel2.optimizers;version="2.1",org.mvel2
.optimizers.dynamic;version="2.1",org.mvel2.optimizers.impl.asm;versi
on="2.1",org.mvel2.optimizers.impl.refl;version="2.1",org.mvel2.optim
izers.impl.refl.collection;version="2.1",org.mvel2.optimizers.impl.re
fl.nodes;version="2.1",org.mvel2.sh;version="2.1",org.mvel2.sh.comman
d.basic;version="2.1",org.mvel2.sh.command.file;version="2.1",org.mve
l2.sh.text;version="2.1",org.mvel2.templates;version="2.1",org.mvel2.
templates.res;version="2.1",org.mvel2.templates.util;version="2.1",or
g.mvel2.templates.util.io;version="2.1",org.mvel2.util;version="2.1",
sun.misc;resolution:=optional

Manifest-Version: 1.0
Export-Package: org.mvel2;uses:="org.mvel2.util,org.mvel2.conversion,o
rg.mvel2.integration.impl,org.mvel2.optimizers.impl.refl.nodes,org.mv
el2.integration,org.mvel2.compiler,org.mvel2.ast,org.mvel2.debug";ver
sion="2.1.0.SNAPSHOT",org.mvel2.asm;version="2.1.0.SNAPSHOT",org.mvel
2.asm.signature;version="2.1.0.SNAPSHOT",org.mvel2.asm.util;uses:="or
g.mvel2.asm,org.mvel2.asm.signature";version="2.1.0.SNAPSHOT",org.mve
l2.ast;uses:="org.mvel2.integration,org.mvel2.optimizers,org.mvel2,or
g.mvel2.debug,org.mvel2.compiler,org.mvel2.util,org.mvel2.math,org.mv
el2.integration.impl";version="2.1.0.SNAPSHOT",org.mvel2.compiler;use
s:="org.mvel2.integration,org.mvel2,org.mvel2.util,org.mvel2.ast,org.
mvel2.optimizers,org.mvel2.integration.impl,org.mvel2.optimizers.impl
.refl.nodes";version="2.1.0.SNAPSHOT",org.mvel2.conversion;uses:="org
.mvel2,org.mvel2.compiler";version="2.1.0.SNAPSHOT",org.mvel2.debug;u
ses:="org.mvel2.integration,org.mvel2.compiler,org.mvel2.ast,org.mvel
2.util,org.mvel2";version="2.1.0.SNAPSHOT",org.mvel2.integration;uses
:="org.mvel2.ast";version="2.1.0.SNAPSHOT",org.mvel2.integration.impl
;uses:="org.mvel2.integration,org.mvel2,org.mvel2.ast,org.mvel2.util"
;version="2.1.0.SNAPSHOT",org.mvel2.math;uses:="org.mvel2,org.mvel2.d
ebug,org.mvel2.util";version="2.1.0.SNAPSHOT",org.mvel2.optimizers;us
es:="org.mvel2,org.mvel2.util,org.mvel2.compiler,org.mvel2.integratio
n,org.mvel2.optimizers.dynamic,org.mvel2.optimizers.impl.asm,org.mvel
2.optimizers.impl.refl";version="2.1.0.SNAPSHOT",org.mvel2.optimizers
.dynamic;uses:="org.mvel2.compiler,org.mvel2.util,org.mvel2.integrati
on,org.mvel2.optimizers,org.mvel2,org.mvel2.optimizers.impl.asm";vers
ion="2.1.0.SNAPSHOT",org.mvel2.optimizers.impl.asm;uses:="org.mvel2.i
ntegration,org.mvel2.optimizers.impl.refl.nodes,org.mvel2.util,org.mv
el2.asm,org.mvel2.optimizers,org.mvel2,org.mvel2.compiler,org.mvel2.a
st";version="2.1.0.SNAPSHOT",org.mvel2.optimizers.impl.refl;uses:="or
g.mvel2.optimizers.impl.refl.nodes,org.mvel2.integration,org.mvel2.ut
il,org.mvel2.optimizers.impl.refl.collection,org.mvel2.optimizers,org
.mvel2,org.mvel2.compiler,org.mvel2.ast";version="2.1.0.SNAPSHOT",org
.mvel2.optimizers.impl.refl.collection;uses:="org.mvel2.integration,o
rg.mvel2.compiler,org.mvel2,org.mvel2.util";version="2.1.0.SNAPSHOT",
org.mvel2.optimizers.impl.refl.nodes;uses:="org.mvel2.integration,org
.mvel2.compiler,org.mvel2,org.mvel2.util,org.mvel2.ast,org.mvel2.opti
mizers";version="2.1.0.SNAPSHOT",org.mvel2.sh;uses:="org.mvel2,org.mv
el2.templates,org.mvel2.integration.impl,org.mvel2.integration,org.mv
el2.util,org.mvel2.sh.command.basic,org.mvel2.sh.command.file";versio
n="2.1.0.SNAPSHOT",org.mvel2.sh.command.basic;uses:="org.mvel2.sh,org
.mvel2.sh.text,org.mvel2.util,org.mvel2";version="2.1.0.SNAPSHOT",org
.mvel2.sh.command.file;uses:="org.mvel2.sh";version="2.1.0.SNAPSHOT",
org.mvel2.sh.text;version="2.1.0.SNAPSHOT",org.mvel2.templates;uses:=
"org.mvel2.templates.res,org.mvel2.templates.util,org.mvel2,org.mvel2
.util,org.mvel2.integration.impl,org.mvel2.integration,org.mvel2.temp
lates.util.io";version="2.1.0.SNAPSHOT",org.mvel2.templates.res;uses:
="org.mvel2.templates,org.mvel2.integration,org.mvel2.templates.util,
org.mvel2,org.mvel2.integration.impl,org.mvel2.util";version="2.1.0.S
NAPSHOT",org.mvel2.templates.util;uses:="org.mvel2.templates.res,org.
mvel2.templates,org.mvel2.util";version="2.1.0.SNAPSHOT",org.mvel2.te
mplates.util.io;uses:="org.mvel2.templates.util,org.mvel2.util";versi
on="2.1.0.SNAPSHOT",org.mvel2.util;uses:="org.mvel2.ast,org.mvel2.int
egration,org.mvel2,org.mvel2.compiler,org.mvel2.integration.impl,org.
mvel2.math,sun.misc";version="2.1.0.SNAPSHOT"
Bundle-Version: 2.1.0.SNAPSHOT
Tool: Bnd-0.0.357
Bundle-Name: mvel2
Bnd-LastModified: 1303065575631
Created-By: 1.6.0_24 (Apple Inc.)
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.mvel2
Import-Package: org.mvel2;version="2.1",org.mvel2.asm;version="2.1",or
g.mvel2.asm.signature;version="2.1",org.mvel2.asm.util;version="2.1",
org.mvel2.ast;version="2.1",org.mvel2.compiler;version="2.1",org.mvel
2.conversion;version="2.1",org.mvel2.debug;version="2.1",org.mvel2.in
tegration;version="2.1",org.mvel2.integration.impl;version="2.1",org.
mvel2.math;version="2.1",org.mvel2.optimizers;version="2.1",org.mvel2
.optimizers.dynamic;version="2.1",org.mvel2.optimizers.impl.asm;versi
on="2.1",org.mvel2.optimizers.impl.refl;version="2.1",org.mvel2.optim
izers.impl.refl.collection;version="2.1",org.mvel2.optimizers.impl.re
fl.nodes;version="2.1",org.mvel2.sh;version="2.1",org.mvel2.sh.comman
d.basic;version="2.1",org.mvel2.sh.command.file;version="2.1",org.mve
l2.sh.text;version="2.1",org.mvel2.templates;version="2.1",org.mvel2.
templates.res;version="2.1",org.mvel2.templates.util;version="2.1",or
g.mvel2.templates.util.io;version="2.1",org.mvel2.util;version="2.1",
sun.misc;resolution:=optional

2 changes: 1 addition & 1 deletion src/main/java/org/mvel2/MVEL.java
Original file line number Diff line number Diff line change
Expand Up @@ -951,7 +951,7 @@ public static Object executeExpression(final Object compiledExpression, final Ob
}

public static Object executeExpression(final Object compiledExpression, final Object ctx, final VariableResolverFactory resolverFactory) {
return ((ExecutableStatement) compiledExpression).getValue(ctx, resolverFactory);
return ((ExecutableStatement) compiledExpression).getValue(ctx, resolverFactory);
}

/**
Expand Down
1 change: 1 addition & 0 deletions src/main/java/org/mvel2/compiler/AbstractParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,7 @@ else if (cursor >= end) {
}
}


cursor = balancedCaptureWithLineAccounting(expr, st, end, expr[cursor], pCtx) + 1;
if (tokenContinues()) {
lastNode = new InlineCollectionNode(expr, st, cursor - st, fields,
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/mvel2/util/ParseTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ public static Method getBestCandidate(Class[] arguments, String method, Class de
if (classTarget && (meth.getModifiers() & Modifier.STATIC) == 0) continue;

if (method.equals(meth.getName())) {
if ((parmTypes = meth.getParameterTypes()).length != arguments.length) {
if ((parmTypes = meth.getParameterTypes()).length != arguments.length && !meth.isVarArgs()) {
continue;
}
else if (arguments.length == 0 && parmTypes.length == 0) {
Expand Down Expand Up @@ -444,7 +444,7 @@ public static Constructor getBestConstructorCandidate(Class[] arguments, Class c
}

for (Constructor construct : getConstructors(cls)) {
if ((parmTypes = getConstructors(construct)).length != arguments.length) {
if ((parmTypes = getConstructors(construct)).length != arguments.length && !construct.isVarArgs()) {
continue;
}
else if (arguments.length == 0 && parmTypes.length == 0) {
Expand Down
6 changes: 4 additions & 2 deletions src/test/java/org/mvel2/tests/core/SamplesTests.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package org.mvel2.tests.core;

import org.mvel2.MVEL;

import static org.mvel2.MVEL.compileExpression;
import static org.mvel2.MVEL.executeExpression;
import static org.mvel2.util.ParseTools.containsCheck;
import static org.mvel2.util.ParseTools.loadFromFile;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

Expand All @@ -21,7 +24,7 @@ public void testQuickSortScript1() throws IOException {
}

public void testQuickSortScriptFunctional() throws IOException {
MVEL.evalFile(new File("samples/scripts/fquicksort.mvel"));
MVEL.evalFile(new File("samples/scripts/fquicksort.mvel"));
}


Expand Down Expand Up @@ -84,5 +87,4 @@ public void testQuickSortScript5() throws IOException {
public void testMultiLineString() throws IOException {
MVEL.evalFile(new File("samples/scripts/multilinestring.mvel"));
}

}

0 comments on commit 1cf6e9b

Please sign in to comment.