Some of the providers use getValidationMap which involves calling validate again on a given block/body. This would cause a duplicate issue to be saved, so these calls are suppressed by the VerifyContext.
This requires calling log, logError etc. via the context (or children) rather than directly through OrgInfo. Some of the CST types don't do this, and it is a lot more apparent now because we have the hover provider firing quite often (despite it only supporting a very limited number of symbols/cases).
This should cover all the cst types, the issues are only disabled at the class body declaration level and below. So uses of OrgInfo elsewhere in the TypeDeclaration like create/validate aren't getting suppressed, but the type already exists so...
I had to do something a bit unusual passing context in to block.statements() as it reports syntax/parser issues during construction of the block. But it is an Option so if you were to construct it elsewhere without a context (e.g. RenameProvider) then it effectively suppresses the extra issues from coming out again.
fixes apex-dev-tools/tooling-issues#129
Some of the providers use
getValidationMap
which involves callingvalidate
again on a given block/body. This would cause a duplicate issue to be saved, so these calls are suppressed by theVerifyContext
.This requires calling
log
,logError
etc. via the context (or children) rather than directly throughOrgInfo
. Some of the CST types don't do this, and it is a lot more apparent now because we have the hover provider firing quite often (despite it only supporting a very limited number of symbols/cases).This should cover all the cst types, the issues are only disabled at the class body declaration level and below. So uses of
OrgInfo
elsewhere in the TypeDeclaration likecreate
/validate
aren't getting suppressed, but the type already exists so...I had to do something a bit unusual passing context in to
block.statements()
as it reports syntax/parser issues during construction of the block. But it is anOption
so if you were to construct it elsewhere without a context (e.g.RenameProvider
) then it effectively suppresses the extra issues from coming out again.