The function call scope is solved, I agreed with you and I’ll use variable.function.
What I am talking now is if it possible to create a standard in the core e.g.:
function identifier({a,b,c}){}
// ^^^^^^^^ storage.type
// ^ destructuring punctuation.block.begin
Where we have the scopes specified per language, I know that there’s no way to enforce but a document(simplified, not unit tests) that states the expected scopes. This would make it easier for external syntaxes to use standard scopes and easier to find bugs even in the core syntax.
I’ll correct my syntax scopes to the ones in your catalog but there are a lot of them missing(e.g. destructuring), so I also want to reach an agreement on the specific scopes (like the array literal/property access problem).
Consider the javascript array literal, meta scopes are not working to differentiate array literals from property access in complex expressions because they are applied to the array values too(consider meta.brackets example I talked before, the meta scopes stack and then you get a bracket that could either be property access or array literal). To solve this we could either limit the metascopes to the array punctuation only and prevent stacking or have new and more specific scopes.