Document that SpEL expressions using array construction cannot be compiled

Closes gh-32401
This commit is contained in:
Sam Brannen 2024-03-08 15:47:10 +01:00
parent fea1464562
commit 528029a0ba
2 changed files with 13 additions and 4 deletions

View File

@ -518,6 +518,7 @@ following kinds of expressions cannot be compiled.
* Expressions relying on the conversion service * Expressions relying on the conversion service
* Expressions using custom resolvers or accessors * Expressions using custom resolvers or accessors
* Expressions using overloaded operators * Expressions using overloaded operators
* Expressions using array construction syntax
* Expressions using selection or projection * Expressions using selection or projection
Compilation of additional kinds of expressions may be supported in the future. Compilation of additional kinds of expressions may be supported in the future.

View File

@ -13,7 +13,7 @@ Java::
int[] numbers1 = (int[]) parser.parseExpression("new int[4]").getValue(context); int[] numbers1 = (int[]) parser.parseExpression("new int[4]").getValue(context);
// Array with initializer // Array with initializer
int[] numbers2 = (int[]) parser.parseExpression("new int[]{1,2,3}").getValue(context); int[] numbers2 = (int[]) parser.parseExpression("new int[] {1, 2, 3}").getValue(context);
// Multi dimensional array // Multi dimensional array
int[][] numbers3 = (int[][]) parser.parseExpression("new int[4][5]").getValue(context); int[][] numbers3 = (int[][]) parser.parseExpression("new int[4][5]").getValue(context);
@ -26,14 +26,22 @@ Kotlin::
val numbers1 = parser.parseExpression("new int[4]").getValue(context) as IntArray val numbers1 = parser.parseExpression("new int[4]").getValue(context) as IntArray
// Array with initializer // Array with initializer
val numbers2 = parser.parseExpression("new int[]{1,2,3}").getValue(context) as IntArray val numbers2 = parser.parseExpression("new int[] {1, 2, 3}").getValue(context) as IntArray
// Multi dimensional array // Multi dimensional array
val numbers3 = parser.parseExpression("new int[4][5]").getValue(context) as Array<IntArray> val numbers3 = parser.parseExpression("new int[4][5]").getValue(context) as Array<IntArray>
---- ----
====== ======
[NOTE]
====
You cannot currently supply an initializer when you construct a multi-dimensional array. You cannot currently supply an initializer when you construct a multi-dimensional array.
====
[CAUTION]
====
Any expression that constructs an array for example, via `new int[4]` or
`new int[] {1, 2, 3}` cannot be compiled. See
xref:core/expressions/evaluation.adoc#expressions-compiler-limitations[Compiler Limitations]
for details.
====