rokucommunity / rokucommunity/brighterscript

Require plugins to declare their annotations

Open
#1,348 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Breaking Change enhancement
Dominant language
TypeScript
Stars
208
Forks
68
Avg merge
8h 39m
Merged PRs (30d)
39

Description

Require plugins to declare their annotations ahead of time so we can provide better editor help and also validation.

This is a breaking change to bsc because annotations would be validated for their existence, so perhaps it's a good candidate for v1.0?

Requirements:

  • plugins must declare all of their annotations, which include name and any arguments and their types. For future compatibility, we should support an array of signatures (even if we only support one signature at the moment).

Benefits:

  • we can provide intellisense for annotations
  • we can show diagnostics when using unknown annotations

Possible implementation:
There's a new plugin lifecycle hook where plugins can declare various settings. Perhaps something like this:

onPluginConfigure(event){
    //should this be brighterscript style code? Or json? 
    this.annotations = [
         `inline()`,
        `suite(suiteConfig as { name: string, timeout: number})`
    ]
}

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the bsc plugin lifecycle and the proposed onPluginConfigure hook. Define how plugins declare annotation names, arguments, types, and multiple signatures, then determine how those declarations feed editor help and unknown-annotation diagnostics. Done means the breaking behavior and v1.0 compatibility plan are settled and the requirements are covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
compilers, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.