Hello.
There are two examples of code. The first one:
@startuml
!define test(x) test##x
!define test2(x) test(x)
A -> B: test(TestString)
A -> B: test2(TestString)
@enduml
test2 works incorrectly.
The second example with another rows' order works correctly:
@startuml
!define test2(x) test(x)
!define test(x) test##x
A -> B: test(TestString)
A -> B: test2(TestString)
@enduml
So, in the first example param x was handled like a string "x", but in the second example all worked correctly.
Is it a bug?