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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validation error: Can only refer to own type parameters in nested class/enum #748

Closed
lars-reimann opened this issue Nov 10, 2023 · 0 comments · Fixed by #750
Closed

Validation error: Can only refer to own type parameters in nested class/enum #748

lars-reimann opened this issue Nov 10, 2023 · 0 comments · Fixed by #750
Assignees
Labels
enhancement 💡 New feature or request released Included in a release validation ✔️ Improved or new static checks

Comments

@lars-reimann
Copy link
Member

Is your feature request related to a problem?

This code is currently legal:

class MyClass<T> {
    class Inner(p: T) {
        attr a: T

        fun f<S>(p: T, q: S)
    }

    enum InnerEnum {
        Variant(p: T)
    }
}

Desired solution

However, a class/enum variant should only be able to refer to its own type parameters. A function should be able to refer to its own type parameters and the type parameters of the containing class. Add validation for this.

Possible alternatives (optional)

No response

Screenshots (optional)

No response

Additional Context (optional)

No response

@lars-reimann lars-reimann added enhancement 💡 New feature or request validation ✔️ Improved or new static checks labels Nov 10, 2023
@lars-reimann lars-reimann added this to DSL Nov 10, 2023
@github-project-automation github-project-automation bot moved this to Backlog in DSL Nov 10, 2023
@lars-reimann lars-reimann self-assigned this Nov 10, 2023
@lars-reimann lars-reimann moved this from Backlog to In Progress in DSL Nov 10, 2023
lars-reimann added a commit that referenced this issue Nov 10, 2023
#750)

Closes #748

### Summary of Changes

Show an error if a type parameter of a class is used inside a nested
named type declaration.
@github-project-automation github-project-automation bot moved this from In Progress to ✔️ Done in DSL Nov 10, 2023
lars-reimann pushed a commit that referenced this issue Nov 12, 2023
## [0.3.0](v0.2.0...v0.3.0) (2023-11-12)

### Features

* annotations for the purity of functions ([#709](#709)) ([9d342e4](9d342e4)), closes [#559](#559)
* call hierarchy provider ([#735](#735)) ([168d098](168d098)), closes [#680](#680)
* compute type of elvis operators with nullable left operand ([#715](#715)) ([376b083](376b083)), closes [#541](#541)
* customize rendering of `[@param](https://github.com/param)`, `[@Result](https://github.com/result)`, and `[@type](https://github.com/type)Param` tags ([#764](#764)) ([e049148](e049148)), closes [#669](#669)
* ensure an overriding member matches the overridden one ([#758](#758)) ([a698a6a](a698a6a)), closes [#639](#639)
* error if callable type is used in wrong context ([#763](#763)) ([9b1522f](9b1522f)), closes [#713](#713)
* error if type parameter is used in nested named type declaration ([#750](#750)) ([52374aa](52374aa)), closes [#748](#748)
* info if overriding member is not needed ([#759](#759)) ([23b340e](23b340e)), closes [#25](#25)
* mark constraint lists as experimental ([#752](#752)) ([d48e1e0](d48e1e0)), closes [#18](#18)
* mark type parameter lists and type argument lists as experimental ([#755](#755)) ([f1a052a](f1a052a)), closes [#753](#753)
* mark unused internal/private segments as unnecessary ([#710](#710)) ([3ba8698](3ba8698)), closes [#682](#682)
* minor improvements for purity info ([#728](#728)) ([8d59607](8d59607))
* partially evaluate lambdas and segments ([#734](#734)) ([c40347c](c40347c)), closes [#603](#603)
* scoping for inherited members ([#706](#706)) ([4518aee](4518aee)), closes [#540](#540)
* scoping for member access on literals and literal types ([#754](#754)) ([e60e456](e60e456)), closes [#80](#80)
* scoping for references to containing declarations ([#708](#708)) ([3762c36](3762c36)), closes [#540](#540)
* show an error if a pure parameter does not have a callable type ([#736](#736)) ([6c52868](6c52868)), closes [#729](#729)
* show error if own declaration has same name as core one ([#762](#762)) ([8cb2120](8cb2120)), closes [#760](#760)
* signature help ([#724](#724)) ([ed33676](ed33676)), closes [#24](#24)
* Source Maps for Code Generation ([#714](#714)) ([64b9e07](64b9e07)), closes [#30](#30)
* tooltips for inlay hints ([#721](#721)) ([3e71cad](3e71cad))
* type checker service ([#722](#722)) ([daad5c4](daad5c4)), closes [#666](#666)
* type checking ([#723](#723)) ([a9eb3bb](a9eb3bb)), closes [#666](#666)
* type checking for list & map literals ([#751](#751)) ([dc14223](dc14223)), closes [#712](#712)
* type hierarchy provider ([#737](#737)) ([9fd5f0c](9fd5f0c)), closes [#681](#681)
* VS Code snippets ([#757](#757)) ([fd6f432](fd6f432)), closes [#756](#756)

### Bug Fixes

* assignability of static type to callable type ([#725](#725)) ([1d17900](1d17900))
* NPEs during validation ([#727](#727)) ([4b8196f](4b8196f))
* prevent overwriting core declarations ([#761](#761)) ([36663ca](36663ca))
* prevent references to following parameters from default values ([#707](#707)) ([182d64b](182d64b)), closes [#540](#540)
* setup of CLI ([#698](#698)) ([0b5d90d](0b5d90d))
@lars-reimann lars-reimann added the released Included in a release label Nov 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement 💡 New feature or request released Included in a release validation ✔️ Improved or new static checks
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

1 participant