-
Bug
-
Resolution: Fixed
-
Minor
-
None
It appears that varargs constructors don't work for enums. The following SandboxInterceptorTest test case demonstrates this:
@Test public void enumWithVarargs() throws Exception { String script = "enum Thing {\n" + " FIRST(\"The first thing\"),\n" + " String[] descriptions;\n" + " public Thing(String... descriptions) {\n" + " this.descriptions = descriptions;\n" + " }\n" + "}\n" + "Thing.values()[0].descriptions[0]\n"; String expected = "The first thing"; assertEvaluate(new GenericWhitelist(), expected, script); }
The result is:
org.junit.ComparisonFailure: Expected :The first thing Actual :T
It appears that something goes wrong when building the argument array, as the following testcase triggers an ArrayIndexOutOfBoundsException:
@Test public void enumWithStringAndVarargs() throws Exception { String script = "enum Thing {\n" + " FIRST(\"The first thing\"),\n" + " String description;\n" + " public Thing(String description, int... unused) {\n" + " this.description = description;\n" + " }\n" + "}\n" + "Thing.values()[0].description\n"; String expected = "The first thing"; assertEvaluate(new GenericWhitelist(), expected, script); }
- duplicates
-
JENKINS-33023 Enums are not supported in sandbox
- Reopened
- links to