Hi everyone,
Using Stata 15.1 MP8, I've encountered a variety of errors that seem to be caused by calling on Mata within a Stata if command that is evaluated as false. Try this:

loc run="no"
if "`run'"=="yes" {
mata {
test=1
test
}
}
else di "working fine"


The error returned is:

} is not a valid command name


Obviously the brackets are being treated in a specific way, as if the closing Mata bracket is being ignored? Some evidence for this is found with the following code, which works by excluding one of the closing brackets:

loc run="no"
if "`run'"=="yes" {
mata {
test=1
test
}
else di "working fine"


Furthermore, when the statement is evaluated as true, everything is fine. This, of course, can be shown by starting the first set of code with: loc run="yes".

The problem here can be significant, such as in my case. I'm coding a variety of analysis procedures that combine Mata and Stata, and I want to give users the option to skip over large sections of the code. For this, I'm using locals at the start of the .do file that can be set as "yes" or "no" and then evaluated as true or false in order to skip over lots of Mata and Stata code (e.g., if "`run_code'"=="yes" { ... ).

Any help here is greatly appreciated! Apologies if this issue has been addressed elsewhere. I've been looking around for a few days on-and-off, but couldn't find this issue addressed.

Mike