Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Metamodel: Mixins vs Extends discrepancy #1933

Open
TheAngryByrd opened this issue May 12, 2024 · 0 comments
Open

Metamodel: Mixins vs Extends discrepancy #1933

TheAngryByrd opened this issue May 12, 2024 · 0 comments

Comments

@TheAngryByrd
Copy link

TheAngryByrd commented May 12, 2024

馃憢 Hey there. I'm working on a generator for F# types using the metamodel. I'm nearly there, however I've run into a what I think may be an discrepancy with the metamodel.

There are some types that are listed as extends in the LSP Spec page but are listed as mixins in the metamodel.


For brevity the definitions of these are:

  • extends: "Structures extended from. This structures form a polymorphic type hierarchy."
  • mixins: "Structures to mix in. The properties of these structures are copied into this structure. Mixins don't form a polymorphic type hierarchy in LSP."

Example of discrepancy:

ImplementationOption lists WorkDoneProgressOptions in the sepc:

export interface ImplementationOptions extends WorkDoneProgressOptions {
}

but in the metamodel it's listed as a mixin:

{
    "name": "ImplementationOptions",
    "properties": [],
    "mixins": [
        {
            "kind": "reference",
            "name": "WorkDoneProgressOptions"
        }
    ]
},

There's also a similar situation for WorkDoneProgressParams.


I'm unsure which is the case, maybe this is my misunderstanding about typescript in general.

Any guidance would be appreciated. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant