Removing functionality. Removed expression list support, cannot say (foo();bar()) any more
This commit is contained in:
parent
4d43768889
commit
17c88107d3
|
|
@ -24,10 +24,10 @@ package org.springframework.expression;
|
||||||
* turn. The only rule that affects the call order is that any naming the target class directly in
|
* turn. The only rule that affects the call order is that any naming the target class directly in
|
||||||
* getSpecifiedTargetClasses() will be called first, before the general resolvers.
|
* getSpecifiedTargetClasses() will be called first, before the general resolvers.
|
||||||
* <p>
|
* <p>
|
||||||
* If the cost of locating the property is expensive, in relation to actually retrieving its value, consider
|
* If the cost of locating the property is expensive, in relation to actually retrieving its value, consider extending
|
||||||
* extending CacheablePropertyAccessor rather than directly implementing PropertyAccessor. A CacheablePropertyAccessor
|
* CacheablePropertyAccessor rather than directly implementing PropertyAccessor. A CacheablePropertyAccessor enables the
|
||||||
* enables the discovery (resolution) of the property to be done once and then an object (an executor) returned
|
* discovery (resolution) of the property to be done once and then an object (an executor) returned and cached by the
|
||||||
* and cached by the infrastructure that can be used repeatedly to retrieve the property value.
|
* infrastructure that can be used repeatedly to retrieve the property value.
|
||||||
*
|
*
|
||||||
* @author Andy Clement
|
* @author Andy Clement
|
||||||
*/
|
*/
|
||||||
|
|
@ -39,7 +39,6 @@ public interface PropertyAccessor {
|
||||||
*
|
*
|
||||||
* @return an array of classes that this resolver is suitable for (or null if a general resolver)
|
* @return an array of classes that this resolver is suitable for (or null if a general resolver)
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public Class[] getSpecificTargetClasses();
|
public Class[] getSpecificTargetClasses();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -60,10 +60,6 @@ tokens {
|
||||||
|
|
||||||
expr: expression EOF!;
|
expr: expression EOF!;
|
||||||
|
|
||||||
exprList
|
|
||||||
: LPAREN expression (SEMI expression)+ (SEMIRPAREN | RPAREN)
|
|
||||||
-> ^(EXPRESSIONLIST expression+);
|
|
||||||
|
|
||||||
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
|
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
|
||||||
|
|
||||||
expression :
|
expression :
|
||||||
|
|
@ -102,8 +98,7 @@ primaryExpression
|
||||||
|
|
||||||
startNode
|
startNode
|
||||||
:
|
:
|
||||||
(LPAREN expression SEMI) => exprList
|
parenExpr
|
||||||
| parenExpr
|
|
||||||
| methodOrProperty
|
| methodOrProperty
|
||||||
| functionOrVar
|
| functionOrVar
|
||||||
| localFunctionOrVar
|
| localFunctionOrVar
|
||||||
|
|
@ -135,7 +130,6 @@ dottedNode
|
||||||
| selection
|
| selection
|
||||||
| firstSelection
|
| firstSelection
|
||||||
| lastSelection
|
| lastSelection
|
||||||
| exprList
|
|
||||||
))
|
))
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,89 +1,89 @@
|
||||||
GREATER_THAN_OR_EQUAL=79
|
GREATER_THAN_OR_EQUAL=78
|
||||||
SELECT_FIRST=58
|
SELECT_FIRST=57
|
||||||
COMMA=51
|
COMMA=50
|
||||||
HOLDER=14
|
HOLDER=14
|
||||||
GREATER_THAN=78
|
GREATER_THAN=77
|
||||||
TYPE=60
|
TYPE=59
|
||||||
EXPRESSIONLIST=4
|
EXPRESSIONLIST=4
|
||||||
MINUS=41
|
MINUS=40
|
||||||
MAP_ENTRY=25
|
MAP_ENTRY=25
|
||||||
SELECT_LAST=59
|
SELECT_LAST=58
|
||||||
NUMBER=29
|
NUMBER=29
|
||||||
LESS_THAN=76
|
LESS_THAN=75
|
||||||
BANG=46
|
BANG=45
|
||||||
ARGLIST=11
|
ARGLIST=11
|
||||||
FALSE=70
|
FALSE=69
|
||||||
METHOD=26
|
METHOD=26
|
||||||
PROPERTY_OR_FIELD=9
|
PROPERTY_OR_FIELD=9
|
||||||
LBRACKET=53
|
LBRACKET=52
|
||||||
MOD=44
|
|
||||||
INDEXER=10
|
INDEXER=10
|
||||||
|
MOD=43
|
||||||
CONSTRUCTOR_ARRAY=15
|
CONSTRUCTOR_ARRAY=15
|
||||||
FUNCTIONREF=17
|
FUNCTIONREF=17
|
||||||
NULL_LITERAL=66
|
NULL_LITERAL=65
|
||||||
NAMED_ARGUMENT=16
|
NAMED_ARGUMENT=16
|
||||||
OR=38
|
OR=37
|
||||||
PIPE=62
|
PIPE=61
|
||||||
DOT=47
|
DOT=46
|
||||||
RCURLY=56
|
RCURLY=55
|
||||||
EXPRESSION=6
|
EXPRESSION=6
|
||||||
AND=39
|
AND=38
|
||||||
LCURLY=63
|
LCURLY=62
|
||||||
DATE_LITERAL=13
|
DATE_LITERAL=13
|
||||||
REAL_TYPE_SUFFIX=89
|
REAL_TYPE_SUFFIX=89
|
||||||
STRING_LITERAL=64
|
STRING_LITERAL=63
|
||||||
SELECT=57
|
SELECT=56
|
||||||
QUALIFIED_IDENTIFIER=7
|
QUALIFIED_IDENTIFIER=7
|
||||||
RBRACKET=54
|
RBRACKET=53
|
||||||
SUBTRACT=28
|
SUBTRACT=28
|
||||||
ASSIGN=34
|
ASSIGN=31
|
||||||
BETWEEN=82
|
BETWEEN=81
|
||||||
RPAREN=33
|
RPAREN=36
|
||||||
SIGN=90
|
SIGN=90
|
||||||
LPAREN=30
|
LPAREN=35
|
||||||
HEX_DIGIT=73
|
HEX_DIGIT=72
|
||||||
PLUS=40
|
PLUS=39
|
||||||
LIST_INITIALIZER=21
|
LIST_INITIALIZER=21
|
||||||
APOS=84
|
APOS=84
|
||||||
INTEGER_LITERAL=5
|
INTEGER_LITERAL=5
|
||||||
AT=52
|
AT=51
|
||||||
ID=49
|
ID=48
|
||||||
NOT_EQUAL=75
|
NOT_EQUAL=74
|
||||||
RANGE=19
|
RANGE=19
|
||||||
POWER=45
|
POWER=44
|
||||||
TYPEREF=18
|
TYPEREF=18
|
||||||
DECIMAL_DIGIT=71
|
DECIMAL_DIGIT=70
|
||||||
WS=86
|
WS=86
|
||||||
IS=81
|
IS=80
|
||||||
DOLLAR=50
|
DOLLAR=49
|
||||||
LESS_THAN_OR_EQUAL=77
|
LESS_THAN_OR_EQUAL=76
|
||||||
SEMIRPAREN=32
|
SEMIRPAREN=30
|
||||||
DQ_STRING_LITERAL=65
|
DQ_STRING_LITERAL=64
|
||||||
HEXADECIMAL_INTEGER_LITERAL=67
|
HEXADECIMAL_INTEGER_LITERAL=66
|
||||||
MAP_INITIALIZER=22
|
MAP_INITIALIZER=22
|
||||||
LAMBDA=61
|
LAMBDA=60
|
||||||
LOCALFUNC=24
|
LOCALFUNC=24
|
||||||
IN=80
|
IN=79
|
||||||
|
SEMI=83
|
||||||
CONSTRUCTOR=12
|
CONSTRUCTOR=12
|
||||||
SEMI=31
|
INTEGER_TYPE_SUFFIX=71
|
||||||
INTEGER_TYPE_SUFFIX=72
|
EQUAL=73
|
||||||
EQUAL=74
|
MATCHES=82
|
||||||
MATCHES=83
|
|
||||||
DOT_ESCAPED=85
|
DOT_ESCAPED=85
|
||||||
UPTO=87
|
UPTO=87
|
||||||
QMARK=36
|
QMARK=33
|
||||||
REFERENCE=8
|
REFERENCE=8
|
||||||
PROJECT=55
|
PROJECT=54
|
||||||
DEFAULT=35
|
DEFAULT=32
|
||||||
COLON=37
|
COLON=34
|
||||||
DIV=43
|
DIV=42
|
||||||
LOCALVAR=23
|
LOCALVAR=23
|
||||||
STAR=42
|
STAR=41
|
||||||
REAL_LITERAL=68
|
REAL_LITERAL=67
|
||||||
VARIABLEREF=20
|
VARIABLEREF=20
|
||||||
EXPONENT_PART=88
|
EXPONENT_PART=88
|
||||||
TRUE=69
|
TRUE=68
|
||||||
ADD=27
|
ADD=27
|
||||||
POUND=48
|
POUND=47
|
||||||
'date'=92
|
'date'=92
|
||||||
'new'=91
|
'new'=91
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -8,122 +8,122 @@ options {
|
||||||
T91 : 'new' ;
|
T91 : 'new' ;
|
||||||
T92 : 'date' ;
|
T92 : 'date' ;
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 67
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 63
|
||||||
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
|
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 276
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 262
|
||||||
INTEGER_LITERAL
|
INTEGER_LITERAL
|
||||||
: (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
: (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 279
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 265
|
||||||
HEXADECIMAL_INTEGER_LITERAL : ('0x' | '0X') (HEX_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
HEXADECIMAL_INTEGER_LITERAL : ('0x' | '0X') (HEX_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 294
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 280
|
||||||
ASSIGN: '=';
|
ASSIGN: '=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 295
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 281
|
||||||
EQUAL: '==';
|
EQUAL: '==';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 296
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 282
|
||||||
NOT_EQUAL: '!=';
|
NOT_EQUAL: '!=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 297
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 283
|
||||||
LESS_THAN: '<';
|
LESS_THAN: '<';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 298
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 284
|
||||||
LESS_THAN_OR_EQUAL: '<=';
|
LESS_THAN_OR_EQUAL: '<=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 299
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 285
|
||||||
GREATER_THAN: '>';
|
GREATER_THAN: '>';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 300
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 286
|
||||||
GREATER_THAN_OR_EQUAL: '>=';
|
GREATER_THAN_OR_EQUAL: '>=';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 301
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 287
|
||||||
IN: 'in';
|
IN: 'in';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 302
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 288
|
||||||
IS: 'is';
|
IS: 'is';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 303
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 289
|
||||||
BETWEEN:'between';
|
BETWEEN:'between';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 304
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 290
|
||||||
MATCHES:'matches';
|
MATCHES:'matches';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 305
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 291
|
||||||
NULL_LITERAL: 'null';
|
NULL_LITERAL: 'null';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 307
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 293
|
||||||
SEMI: ';';
|
SEMI: ';';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 308
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 294
|
||||||
DOT: '.';
|
DOT: '.';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 309
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 295
|
||||||
COMMA: ',';
|
COMMA: ',';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 310
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 296
|
||||||
LPAREN: '(';
|
LPAREN: '(';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 311
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 297
|
||||||
RPAREN: ')';
|
RPAREN: ')';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 312
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 298
|
||||||
LCURLY: '{';
|
LCURLY: '{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 313
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 299
|
||||||
RCURLY: '}';
|
RCURLY: '}';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 314
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 300
|
||||||
LBRACKET: '[';
|
LBRACKET: '[';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 315
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 301
|
||||||
RBRACKET: ']';
|
RBRACKET: ']';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 316
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 302
|
||||||
PIPE: '|';
|
PIPE: '|';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 318
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 304
|
||||||
AND: 'and';
|
AND: 'and';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 319
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 305
|
||||||
OR: 'or';
|
OR: 'or';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 320
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 306
|
||||||
FALSE: 'false';
|
FALSE: 'false';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 321
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 307
|
||||||
TRUE: 'true';
|
TRUE: 'true';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 323
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 309
|
||||||
PLUS: '+';
|
PLUS: '+';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 324
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 310
|
||||||
MINUS: '-';
|
MINUS: '-';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 325
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 311
|
||||||
DIV: '/';
|
DIV: '/';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 326
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 312
|
||||||
STAR: '*';
|
STAR: '*';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 327
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 313
|
||||||
MOD: '%';
|
MOD: '%';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 328
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 314
|
||||||
POWER: '^';
|
POWER: '^';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 329
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 315
|
||||||
BANG: '!';
|
BANG: '!';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 330
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 316
|
||||||
POUND: '#';
|
POUND: '#';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 331
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 317
|
||||||
QMARK: '?';
|
QMARK: '?';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 332
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 318
|
||||||
DEFAULT: '??';
|
DEFAULT: '??';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 333
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 319
|
||||||
LAMBDA: '{|';
|
LAMBDA: '{|';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 334
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 320
|
||||||
PROJECT: '!{';
|
PROJECT: '!{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 335
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 321
|
||||||
SELECT: '?{';
|
SELECT: '?{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 336
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 322
|
||||||
SELECT_FIRST: '^{';
|
SELECT_FIRST: '^{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 337
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 323
|
||||||
SELECT_LAST: '${';
|
SELECT_LAST: '${';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 338
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 324
|
||||||
TYPE: 'T(';
|
TYPE: 'T(';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 340
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 326
|
||||||
STRING_LITERAL: '\''! (APOS|~'\'')* '\''!;
|
STRING_LITERAL: '\''! (APOS|~'\'')* '\''!;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 341
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 327
|
||||||
DQ_STRING_LITERAL: '"'! (~'"')* '"'!;
|
DQ_STRING_LITERAL: '"'! (~'"')* '"'!;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 342
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 328
|
||||||
ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|DOT_ESCAPED)*;
|
ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|DOT_ESCAPED)*;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 343
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 329
|
||||||
DOT_ESCAPED: '\\.';
|
DOT_ESCAPED: '\\.';
|
||||||
//DOUBLE_DOT: ':';
|
//DOUBLE_DOT: ':';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 345
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 331
|
||||||
WS: ( ' ' | '\t' | '\n' |'\r')+ { $channel=HIDDEN; } ;
|
WS: ( ' ' | '\t' | '\n' |'\r')+ { $channel=HIDDEN; } ;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 346
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 332
|
||||||
DOLLAR: '$';
|
DOLLAR: '$';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 347
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 333
|
||||||
AT: '@';
|
AT: '@';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 348
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 334
|
||||||
UPTO: '..';
|
UPTO: '..';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 349
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 335
|
||||||
COLON: ':';
|
COLON: ':';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -141,26 +141,26 @@ COLON: ':';
|
||||||
in= (DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX)
|
in= (DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 366
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 352
|
||||||
REAL_LITERAL :
|
REAL_LITERAL :
|
||||||
('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
||||||
((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
|
||||||
((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |
|
((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |
|
||||||
((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));
|
((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 372
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 358
|
||||||
fragment APOS : '\''! '\'';
|
fragment APOS : '\''! '\'';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 373
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 359
|
||||||
fragment DECIMAL_DIGIT : '0'..'9' ;
|
fragment DECIMAL_DIGIT : '0'..'9' ;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 374
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 360
|
||||||
fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );
|
fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 375
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 361
|
||||||
fragment HEX_DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';
|
fragment HEX_DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 377
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 363
|
||||||
fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)* (DECIMAL_DIGIT)+ ;
|
fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)* (DECIMAL_DIGIT)+ ;
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 378
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 364
|
||||||
fragment SIGN : '+' | '-' ;
|
fragment SIGN : '+' | '-' ;
|
||||||
// TODO what is M or m?
|
// TODO what is M or m?
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 380
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 366
|
||||||
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd' | 'M' | 'm' ;
|
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd' | 'M' | 'm' ;
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,6 @@ public class ReflectionUtils {
|
||||||
* match an expected type
|
* match an expected type
|
||||||
* @return a MatchInfo object indicating what kind of match it was or null if it was not a match
|
* @return a MatchInfo object indicating what kind of match it was or null if it was not a match
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
private static ArgumentsMatchInfo compareArguments(Class[] expectedArgTypes, Class[] suppliedArgTypes,
|
private static ArgumentsMatchInfo compareArguments(Class[] expectedArgTypes, Class[] suppliedArgTypes,
|
||||||
TypeConverter typeConverter, boolean conversionAllowed) {
|
TypeConverter typeConverter, boolean conversionAllowed) {
|
||||||
ArgsMatchKind match = ArgsMatchKind.EXACT;
|
ArgsMatchKind match = ArgsMatchKind.EXACT;
|
||||||
|
|
@ -230,7 +229,6 @@ public class ReflectionUtils {
|
||||||
* match an expected type
|
* match an expected type
|
||||||
* @return a MatchInfo object indicating what kind of match it was or null if it was not a match
|
* @return a MatchInfo object indicating what kind of match it was or null if it was not a match
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
private static ArgumentsMatchInfo compareArgumentsVarargs(Class[] expectedArgTypes, Class[] suppliedArgTypes,
|
private static ArgumentsMatchInfo compareArgumentsVarargs(Class[] expectedArgTypes, Class[] suppliedArgTypes,
|
||||||
TypeConverter typeConverter, boolean conversionAllowed) {
|
TypeConverter typeConverter, boolean conversionAllowed) {
|
||||||
ArgsMatchKind match = ArgsMatchKind.EXACT;
|
ArgsMatchKind match = ArgsMatchKind.EXACT;
|
||||||
|
|
@ -485,8 +483,8 @@ public class ReflectionUtils {
|
||||||
targetType = parameterTypes[i];
|
targetType = parameterTypes[i];
|
||||||
}
|
}
|
||||||
if (converter == null) {
|
if (converter == null) {
|
||||||
throw new SpelException(SpelMessages.PROBLEM_DURING_TYPE_CONVERSION, "No converter available to convert '"
|
throw new SpelException(SpelMessages.PROBLEM_DURING_TYPE_CONVERSION,
|
||||||
+ arguments[i] + " to type '" + targetType + "'");
|
"No converter available to convert '" + arguments[i] + " to type '" + targetType + "'");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (arguments[i] != null && arguments[i].getClass() != targetType) {
|
if (arguments[i] != null && arguments[i].getClass() != targetType) {
|
||||||
|
|
@ -495,8 +493,9 @@ public class ReflectionUtils {
|
||||||
} catch (EvaluationException e) {
|
} catch (EvaluationException e) {
|
||||||
// allows for another type converter throwing a different kind of EvaluationException
|
// allows for another type converter throwing a different kind of EvaluationException
|
||||||
if (!(e instanceof SpelException)) {
|
if (!(e instanceof SpelException)) {
|
||||||
throw new SpelException(e, SpelMessages.PROBLEM_DURING_TYPE_CONVERSION, "Converter failed to convert '"
|
throw new SpelException(e, SpelMessages.PROBLEM_DURING_TYPE_CONVERSION,
|
||||||
+ arguments[i].getClass().getName() + "' to type '" + targetType + "'");
|
"Converter failed to convert '" + arguments[i].getClass().getName() + "' to type '"
|
||||||
|
+ targetType + "'");
|
||||||
}
|
}
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -180,19 +180,11 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
evaluate("#{1:'January', 2:'February', 3:'March'}.get(2)", "February", String.class);
|
evaluate("#{1:'January', 2:'February', 3:'March'}.get(2)", "February", String.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testInlineMapCreation06() {
|
|
||||||
evaluate("(#pos=3;#{1:'January', 2:'February', 3:'March'}[#pos])", "March", String.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set construction
|
// set construction
|
||||||
public void testSetConstruction01() {
|
public void testSetConstruction01() {
|
||||||
evaluate("new HashSet().addAll({'a','b','c'})", "true", Boolean.class);
|
evaluate("new HashSet().addAll({'a','b','c'})", "true", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSets01() {
|
|
||||||
evaluate("(#var=new HashSet();#var.addAll({'a','b','c'});#var[1])", "c", String.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
// constructors
|
// constructors
|
||||||
public void testConstructorInvocation01() {
|
public void testConstructorInvocation01() {
|
||||||
evaluate("new String('hello')", "hello", String.class);
|
evaluate("new String('hello')", "hello", String.class);
|
||||||
|
|
@ -323,19 +315,6 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
evaluate("#var1='value1'", "value1", String.class);
|
evaluate("#var1='value1'", "value1", String.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testAssignmentToVariables02() {
|
|
||||||
evaluate("(#var1='value1';#var1)", "value1", String.class, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Property setting
|
|
||||||
public void testAssignmentToProperty01() {
|
|
||||||
evaluate("placeOfBirth.city='SmilJan'", "SmilJan", String.class);
|
|
||||||
evaluate(
|
|
||||||
"(#oldPOB = placeOfBirth.city;placeOfBirth.city='FairOak';'From ' + #oldPOB + ' to ' + placeOfBirth.city)",
|
|
||||||
"From SmilJan to FairOak", String.class);
|
|
||||||
evaluate("placeOfBirth.city='SmilJan'", "SmilJan", String.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ternary operator
|
// Ternary operator
|
||||||
public void testTernaryOperator01() {
|
public void testTernaryOperator01() {
|
||||||
evaluate("{1}.#isEven(#this[0]) == 'y'?'it is even':'it is odd'", "it is odd", String.class);
|
evaluate("{1}.#isEven(#this[0]) == 'y'?'it is even':'it is odd'", "it is odd", String.class);
|
||||||
|
|
@ -389,10 +368,6 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
evaluate("@(apple).color.getRGB() == T(java.awt.Color).green.getRGB()", "true", Boolean.class);
|
evaluate("@(apple).color.getRGB() == T(java.awt.Color).green.getRGB()", "true", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testReferences06b() {
|
|
||||||
evaluate("(#t='Color';@(apple).color.getRGB() == T(java.awt.Color).green.getRGB())", "true", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testReferences07() {
|
public void testReferences07() {
|
||||||
evaluate("@(apple).color.getRGB().equals(T(java.awt.Color).green.getRGB())", "true", Boolean.class);
|
evaluate("@(apple).color.getRGB().equals(T(java.awt.Color).green.getRGB())", "true", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
@ -424,49 +399,46 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
evaluate("{|| true }", "{|| true }", Lambda.class);
|
evaluate("{|| true }", "{|| true }", Lambda.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLambdaNoArgsReferenced() {
|
|
||||||
evaluate("(#fn={|| false };#fn)", "{|| false }", Lambda.class, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testLambda01() {
|
public void testLambda01() {
|
||||||
evaluate("{|x,y| $x > $y ? $x : $y }", "{|x,y| ($x > $y) ? $x : $y }",
|
evaluate("{|x,y| $x > $y ? $x : $y }", "{|x,y| ($x > $y) ? $x : $y }",
|
||||||
org.springframework.expression.spel.ast.Lambda.class);
|
org.springframework.expression.spel.ast.Lambda.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLambda02() {
|
//
|
||||||
evaluate("(#max={|x,y| $x > $y ? $x : $y };true)", "true", Boolean.class);
|
// public void testLambda02() {
|
||||||
}
|
// evaluate("(#max={|x,y| $x > $y ? $x : $y };true)", "true", Boolean.class);
|
||||||
|
// }
|
||||||
public void testLambdaMax() {
|
//
|
||||||
evaluate("(#max = {|x,y| $x > $y ? $x : $y }; #max(5,25))", "25", Integer.class);
|
// public void testLambdaMax() {
|
||||||
}
|
// evaluate("(#max = {|x,y| $x > $y ? $x : $y }; #max(5,25))", "25", Integer.class);
|
||||||
|
// }
|
||||||
public void testLambdaFactorial01() {
|
//
|
||||||
evaluate("(#fact = {|n| $n <= 1 ? 1 : $n * #fact($n-1) }; #fact(5))", "120", Integer.class);
|
// public void testLambdaFactorial01() {
|
||||||
}
|
// evaluate("(#fact = {|n| $n <= 1 ? 1 : $n * #fact($n-1) }; #fact(5))", "120", Integer.class);
|
||||||
|
// }
|
||||||
public void testLambdaFactorial02() {
|
//
|
||||||
evaluate("(#fact = {|n| $n <= 1 ? 1 : #fact($n-1) * $n }; #fact(5))", "120", Integer.class);
|
// public void testLambdaFactorial02() {
|
||||||
}
|
// evaluate("(#fact = {|n| $n <= 1 ? 1 : #fact($n-1) * $n }; #fact(5))", "120", Integer.class);
|
||||||
|
// }
|
||||||
public void testLambdaAlphabet01() {
|
//
|
||||||
evaluate("(#alpha = {|l,s| $l>'z'?$s:#alpha($l+1,$s+$l)};#alphabet={||#alpha('a','')}; #alphabet())",
|
// public void testLambdaAlphabet01() {
|
||||||
"abcdefghijklmnopqrstuvwxyz", String.class);
|
// evaluate("(#alpha = {|l,s| $l>'z'?$s:#alpha($l+1,$s+$l)};#alphabet={||#alpha('a','')}; #alphabet())",
|
||||||
}
|
// "abcdefghijklmnopqrstuvwxyz", String.class);
|
||||||
|
// }
|
||||||
public void testLambdaAlphabet02() {
|
//
|
||||||
evaluate("(#alphabet = {|l,s| $l>'z'?$s:#alphabet($l+1,$s+$l)};#alphabet('a',''))",
|
// public void testLambdaAlphabet02() {
|
||||||
"abcdefghijklmnopqrstuvwxyz", String.class);
|
// evaluate("(#alphabet = {|l,s| $l>'z'?$s:#alphabet($l+1,$s+$l)};#alphabet('a',''))",
|
||||||
}
|
// "abcdefghijklmnopqrstuvwxyz", String.class);
|
||||||
|
// }
|
||||||
public void testLambdaDelegation01() {
|
//
|
||||||
evaluate("(#sqrt={|n| T(Math).sqrt($n)};#delegate={|f,n| $f($n)};#delegate(#sqrt,4))", "2.0", Double.class);
|
// public void testLambdaDelegation01() {
|
||||||
}
|
// evaluate("(#sqrt={|n| T(Math).sqrt($n)};#delegate={|f,n| $f($n)};#delegate(#sqrt,4))", "2.0", Double.class);
|
||||||
|
// }
|
||||||
public void testVariableReferences() {
|
//
|
||||||
evaluate("(#answer=42;#answer)", "42", Integer.class, true);
|
// public void testVariableReferences() {
|
||||||
evaluate("($answer=42;$answer)", "42", Integer.class, true);
|
// evaluate("(#answer=42;#answer)", "42", Integer.class, true);
|
||||||
}
|
// evaluate("($answer=42;$answer)", "42", Integer.class, true);
|
||||||
|
// }
|
||||||
|
|
||||||
// type references
|
// type references
|
||||||
public void testTypeReferences01() {
|
public void testTypeReferences01() {
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,7 @@ public class LiteralTests extends ExpressionTestCase {
|
||||||
|
|
||||||
public void testConversions() {
|
public void testConversions() {
|
||||||
// getting the expression type to be what we want - either:
|
// getting the expression type to be what we want - either:
|
||||||
evaluate("(#foo=37;#foo.byteValue())",(byte)37,Byte.class); // calling byteValue() on Integer.class
|
evaluate("new Integer(37).byteValue()", (byte) 37, Byte.class); // calling byteValue() on Integer.class
|
||||||
evaluateAndAskForReturnType("(#foo=37;#foo)",(byte)37,Byte.class); // relying on registered type converters
|
evaluateAndAskForReturnType("new Integer(37)", (byte) 37, Byte.class); // relying on registered type converters
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,12 +35,6 @@ public class ParserErrorMessagesTests extends ExpressionTestCase {
|
||||||
parseAndCheckError("0xB0BG", SpelMessages.PARSE_PROBLEM, 5, "mismatched input 'G' expecting EOF");
|
parseAndCheckError("0xB0BG", SpelMessages.PARSE_PROBLEM, 5, "mismatched input 'G' expecting EOF");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBrokenExpression03() {
|
|
||||||
// too many closing brackets
|
|
||||||
parseAndCheckError("((3;4;)+(5;6;)))", SpelMessages.PARSE_PROBLEM, 15, "mismatched input ')' expecting EOF");
|
|
||||||
evaluate("((3;4;)+(5;6;))", 10 /* 4+6 */, Integer.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBrokenExpression04() {
|
public void testBrokenExpression04() {
|
||||||
// missing right operand
|
// missing right operand
|
||||||
parseAndCheckError("true or ", SpelMessages.PARSE_PROBLEM, -1, "no viable alternative at input '<EOF>'"); // POOR
|
parseAndCheckError("true or ", SpelMessages.PARSE_PROBLEM, -1, "no viable alternative at input '<EOF>'"); // POOR
|
||||||
|
|
@ -51,21 +45,10 @@ public class ParserErrorMessagesTests extends ExpressionTestCase {
|
||||||
parseAndCheckError("1 + ", SpelMessages.PARSE_PROBLEM, -1, "no viable alternative at input '<EOF>'"); // POOR
|
parseAndCheckError("1 + ", SpelMessages.PARSE_PROBLEM, -1, "no viable alternative at input '<EOF>'"); // POOR
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBrokenExpression06() {
|
|
||||||
// expression list missing surrounding parentheses
|
|
||||||
parseAndCheckError("1;2;3", SpelMessages.PARSE_PROBLEM, 1, "mismatched input ';' expecting EOF"); // POOR
|
|
||||||
evaluate("(1;2;3)", 3, Integer.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBrokenExpression07() {
|
public void testBrokenExpression07() {
|
||||||
// T() can only take an identifier (possibly qualified), not a literal
|
// T() can only take an identifier (possibly qualified), not a literal
|
||||||
// message ought to say identifier rather than ID
|
// message ought to say identifier rather than ID
|
||||||
parseAndCheckError("null is T('a')", SpelMessages.PARSE_PROBLEM, 10, "mismatched input ''a'' expecting ID"); // POOR
|
parseAndCheckError("null is T('a')", SpelMessages.PARSE_PROBLEM, 10, "mismatched input ''a'' expecting ID"); // POOR
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testExpressionLists02a() {
|
|
||||||
// either missing semi or rogue 5. RPAREN should at least be ')', and why doesn't it give the other possibles?
|
|
||||||
parseAndCheckError("( (3;4)5)", SpelMessages.PARSE_PROBLEM, 7, "mismatched input '5' expecting RPAREN"); // POOR
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -360,14 +360,15 @@ public class ParsingTests extends TestCase {
|
||||||
parseCheck("{|x,y| $x > $y ? $x : $y }", "{|x,y| ($x > $y) ? $x : $y }");
|
parseCheck("{|x,y| $x > $y ? $x : $y }", "{|x,y| ($x > $y) ? $x : $y }");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLambdaMax() {
|
//
|
||||||
parseCheck("(#max = {|x,y| $x > $y ? $x : $y }; #max(5,25))", "(#max={|x,y| ($x > $y) ? $x : $y };#max(5,25))");
|
// public void testLambdaMax() {
|
||||||
}
|
// parseCheck("(#max = {|x,y| $x > $y ? $x : $y }; #max(5,25))", "(#max={|x,y| ($x > $y) ? $x : $y };#max(5,25))");
|
||||||
|
// }
|
||||||
public void testLambdaFactorial() {
|
//
|
||||||
parseCheck("(#fact = {|n| $n <= 1 ? 1 : $n * #fact($n-1) }; #fact(5))",
|
// public void testLambdaFactorial() {
|
||||||
"(#fact={|n| ($n <= 1) ? 1 : ($n * #fact(($n - 1))) };#fact(5))");
|
// parseCheck("(#fact = {|n| $n <= 1 ? 1 : $n * #fact($n-1) }; #fact(5))",
|
||||||
} // 120
|
// "(#fact={|n| ($n <= 1) ? 1 : ($n * #fact(($n - 1))) };#fact(5))");
|
||||||
|
// } // 120
|
||||||
|
|
||||||
// Type references
|
// Type references
|
||||||
public void testTypeReferences01() {
|
public void testTypeReferences01() {
|
||||||
|
|
@ -378,35 +379,6 @@ public class ParsingTests extends TestCase {
|
||||||
parseCheck("T(String)");
|
parseCheck("T(String)");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nesting expressions and expression lists
|
|
||||||
public void testExpressionLists01() {
|
|
||||||
parseCheck("(3;4;5)");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExpressionLists02() {
|
|
||||||
parseCheck("( (3;4);5)", "((3;4);5)");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExpressionLists03() {
|
|
||||||
parseCheck("(3;(4;5))");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExpressionLists04() {
|
|
||||||
parseCheck("((3;4;5))", "(3;4;5)");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExpressionLists05() {
|
|
||||||
parseCheck("((3;4)+(5;6))", "((3;4) + (5;6))");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExpressionLists06() {
|
|
||||||
parseCheck("((3;4;)+(5;6))", "((3;4) + (5;6))");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExpressionLists07() {
|
|
||||||
parseCheck("((3;4;)+(5;6;))", "((3;4) + (5;6))");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the supplied expression and then create a string representation of the resultant AST, it should be the same
|
* Parse the supplied expression and then create a string representation of the resultant AST, it should be the same
|
||||||
* as the original expression.
|
* as the original expression.
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@ public class VariableAndFunctionTests extends ExpressionTestCase {
|
||||||
|
|
||||||
public void testVariableAccess() {
|
public void testVariableAccess() {
|
||||||
evaluate("#answer", "42", Integer.class, SHOULD_BE_WRITABLE);
|
evaluate("#answer", "42", Integer.class, SHOULD_BE_WRITABLE);
|
||||||
evaluate("(#i=5;#i)", 5, Integer.class, SHOULD_BE_WRITABLE);
|
|
||||||
evaluate("#answer / 2", 21, Integer.class, SHOULD_NOT_BE_WRITABLE);
|
evaluate("#answer / 2", 21, Integer.class, SHOULD_NOT_BE_WRITABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,7 +54,8 @@ public class VariableAndFunctionTests extends ExpressionTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCallingFunctionsIncorrectly() {
|
public void testCallingFunctionsIncorrectly() {
|
||||||
evaluateAndCheckError("#varargsFunctionReverseStringsAndMerge(new StringBuilder())",SpelMessages.TYPE_CONVERSION_ERROR);
|
evaluateAndCheckError("#varargsFunctionReverseStringsAndMerge(new StringBuilder())",
|
||||||
|
SpelMessages.TYPE_CONVERSION_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCallingIllegalFunctions() throws Exception {
|
public void testCallingIllegalFunctions() throws Exception {
|
||||||
|
|
@ -69,11 +69,13 @@ public class VariableAndFunctionTests extends ExpressionTestCase {
|
||||||
} catch (SpelException se) {
|
} catch (SpelException se) {
|
||||||
if (se.getMessageUnformatted() != SpelMessages.FUNCTION_MUST_BE_STATIC) {
|
if (se.getMessageUnformatted() != SpelMessages.FUNCTION_MUST_BE_STATIC) {
|
||||||
se.printStackTrace();
|
se.printStackTrace();
|
||||||
fail("Should have failed a message about the function needing to be static, not: "+se.getMessageUnformatted());
|
fail("Should have failed a message about the function needing to be static, not: "
|
||||||
|
+ se.getMessageUnformatted());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void nonStatic() {}
|
public void nonStatic() {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue