-
Notifications
You must be signed in to change notification settings - Fork 0
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
Substitute type parameters when checking assignability of overriding members #862
Labels
enhancement 💡
New feature or request
released
Included in a release
validation ✔️
Improved or new static checks
Milestone
Comments
lars-reimann
changed the title
Types of class members (attributes + functions) must take type parameters into account (e.g. for an attribute of type
Substitute type parameters when checking assignability of overridden members
Feb 6, 2024
T
in class C<T>
- once we know T
, we also know the actual type of the attribute). This affects member access, type checks for overridden elements.
lars-reimann
changed the title
Substitute type parameters when checking assignability of overridden members
Substitute type parameters when checking assignability of overriding members
Feb 6, 2024
lars-reimann
added
enhancement 💡
New feature or request
validation ✔️
Improved or new static checks
labels
Feb 6, 2024
lars-reimann
added a commit
that referenced
this issue
Feb 7, 2024
…iding members (#865) Closes #862 ### Summary of Changes We now substitute type parameter when checking whether a class member gets overridden properly and whether the overriding is actually necessary. Example: ``` class MySuperClass<T> { attr member: T } class MyClass1 sub MySuperClass<Number> { attr member: Int // OK } class MyClass2 sub MySuperClass<Number> { attr member: String // Not OK } class MyClass3 sub MySuperClass<Number> { attr member: Number // Unnecessary } ```
lars-reimann
pushed a commit
that referenced
this issue
Feb 12, 2024
## [0.7.0](v0.6.0...v0.7.0) (2024-02-12) ### Features * apply type parameter substitutions of receiver type for member accesses ([#859](#859)) ([5780ed7](5780ed7)), closes [#23](#23) * check position of usages of variant type parameters ([#852](#852)) ([a2672d7](a2672d7)), closes [#743](#743) * check whether lower and upper bounds of a type parameter are compatible ([#885](#885)) ([2fc7fe6](2fc7fe6)), closes [#875](#875) * check whether type parameter bounds are acyclic ([#886](#886)) ([bcf1a4b](bcf1a4b)), closes [#874](#874) * check whether type parameter bounds are named types ([#878](#878)) ([d8b4168](d8b4168)), closes [#876](#876) * error if type parameter has multiple lower/upper bounds ([#870](#870)) ([6035b76](6035b76)), closes [#867](#867) * error if type parameter of class is used in static context ([#830](#830)) ([d5cf420](d5cf420)), closes [#809](#809) * error if type parameters of functions are variant ([#869](#869)) ([9bf5fec](9bf5fec)) * handle type parameter types in type checker ([#884](#884)) ([6b6f738](6b6f738)), closes [#877](#877) * handle type parameters (part 1) ([#856](#856)) ([8a35558](8a35558)), closes [#23](#23) * improve type simplification ([#871](#871)) ([0daafb9](0daafb9)) * Memoization ([#827](#827)) ([d0a6c71](d0a6c71)) * null-safe call & indexed access ([#872](#872)) ([f1420a2](f1420a2)), closes [#857](#857) [#858](#858) * optional type parameters ([#829](#829)) ([0e9f67a](0e9f67a)), closes [#739](#739) * optionally generate code without runner integration ([#836](#836)) ([0ed9d6e](0ed9d6e)), closes [#831](#831) * pre-load all relevant workspace files before executing pipeline ([#822](#822)) ([67ab766](67ab766)) * simplify computed types ([#866](#866)) ([bde3274](bde3274)) * simplify substitutions passed to `computeType` ([#873](#873)) ([aa444d4](aa444d4)) * substitute type parameters when checking assignability of overriding members ([#865](#865)) ([a1f24e0](a1f24e0)), closes [#862](#862) * substitute type parameters when computing type of inherited members ([#864](#864)) ([33de1e8](33de1e8)), closes [#863](#863) * support placeholder queries that only request a subset of data ([#826](#826)) ([1e39300](1e39300)) * type casts ([#838](#838)) ([66c3666](66c3666)), closes [#835](#835) ### Bug Fixes * allow usage of covariant type parameters in own constructor ([#854](#854)) ([4ebae94](4ebae94)) * check for duplicate bounds if type parameters occur as right operand ([#882](#882)) ([8776ce0](8776ce0)), closes [#881](#881) * generation of static class functions ([#832](#832)) ([57eac45](57eac45))
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
When a class
D
inherits from, sayC<Int>
, we must substitute the first type parameter ofC
withInt
when we check assignability of overriding members ofD
.Possible solution:
streamSupertypes
.The text was updated successfully, but these errors were encountered: