apex-dev-tools / apex-ls

Apex language server library
Other
2 stars 1 forks source link

Fix duplicate issues on provider usage #260

Closed pwrightcertinia closed 11 months ago

pwrightcertinia commented 11 months ago

fixes apex-dev-tools/tooling-issues#129

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.