Claus Ibsen created CAMEL-24965:
-----------------------------------

             Summary: simple - init block fixes (custom function leak, 
comments, one-liners, predicates)
                 Key: CAMEL-24965
                 URL: https://issues.apache.org/jira/browse/CAMEL-24965
             Project: Camel
          Issue Type: Sub-task
          Components: camel-core
            Reporter: Claus Ibsen
            Assignee: Claus Ibsen
             Fix For: 4.23.0


Bugs in SimpleInitBlockTokenizer / SimpleInitBlockParser / InitBlockExpression.

* (verified) Custom functions leak between expressions: {{$f ~:= ${trim()}}} in 
one expression and {{$f ~:= ${uppercase()}}} in another; the second returns the 
trimmed value. $f() is rewritten to ${function(f)}, which is cached in the 
shared expression cache, and the registry is CamelContext global (last writer 
wins, and can replace a user SimpleFunction bean of the same name). The docs 
call it a local custom function.
* (verified) Commented-out assignments still run: {{$init\{ // $foo := 'x'; ... 
\}init$}} defines $foo. newLine starts true and is never reset; 
setAcceptInitTokens/hasNewLine are never called. A comment such as {{// costs 
$5}} fails with "expected symbol initOperator".
* (verified) The one-liner shown in simple-operators.adoc ({{$init\{ $minAge := 
18; \}init$}}) sets the value to "18; " because ; must be followed by a 
newline. Same issue for a trailing comment or CRLF line endings. Either support 
it or fix the docs.
* (verified) A predicate whose init block only defines ~:= functions fails with 
"Unexpected token $init{": InitBlockExpression returns null for ~:=, and 
SimplePredicateParser ~94 only cuts off the block when init != null. The 
predicate parser also never rewrites $fn() the way SimpleExpressionParser does.
* ChainExpression rewrites {{$foo(}} to {{function(foo}} without the comma, so 
{{$foo('x')}} in a chain becomes a lookup of "foo'x'".
* Init-block syntax error positions are 6 characters early (index is relative 
to the text after $init{).

_Claude Code on behalf of davsclaus (found by an AI review of the simple 
language source; each item marked (verified) was reproduced on main at 
c3ef718de2e8)_



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to