-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Dart Editor: incomplete error reporting on typedefs mismatch #3316
Comments
Added Area-Editor, Triaged labels. |
Added this to the M1 milestone. |
Is this really issue? Reduced sample: interface I {} Set owner to @gbracha. |
By design, the Dart static checker does not complain about all possible type problems. In particular, it tolerates assignment/parameter passing/return whenever a subtype relation exists in either direction. So, since EventHandler<int> <: Object, no warning is given for someClass.add(new Object()) In contrast, no subtype relation exists between int and EventHandler<int> in either direction. See http://www.dartlang.org/articles/optional-types/ for a discussion and rationale. Added AsDesigned label. |
dartdoc: 494a6bed 2023-02-02 Sam Rawlins Bump markdown dep to a pre-release of 7.0.0 (#3321) ad6f1612 2023-02-02 Devon Carew introduce an environmentProvider abstraction (#3324) d0b73000 2023-02-02 Sam Rawlins Prepare testing code for some upcoming Warnings (#3322) 936a7888 2023-02-01 Sam Rawlins Add text about front-end manual testing (#3286) cbee812d 2023-02-01 Sam Rawlins Avoid renaming generator params (#3316) bcaa0349 2023-02-01 Sam Rawlins Privatize Library.sdkLib and move getClassByName (#3317) af32def5 2023-01-31 dependabot[bot] Bump github/codeql-action from 2.1.39 to 2.2.1 (#3313) 528e97da 2023-01-31 dependabot[bot] Bump actions/cache from 3.2.3 to 3.2.4 (#3312) 54020672 2023-02-01 Parker Lougheed Begin changelog for next release after 6.1.5 (#3315) markdown: f51c24c 2023-02-01 Zhiguang Chen Prepend a line ending if the p tag is removed and there is an element before it in a *tight* list (#513) dd3e3a1 2023-01-31 dependabot[bot] Bump dart-lang/setup-dart from 1.3 to 1.4 (#510) 5f25fc9 2023-01-31 dependabot[bot] Bump actions/checkout from 3.2.0 to 3.3.0 (#511) 54266b2 2023-01-31 Kevin Moore Prepare to release v7.0.0 (#509) d6ceff9 2023-01-31 Zhiguang Chen Add line endings before HTML blocks (#508) ccd3c8b 2023-01-29 Zhiguang Chen Rewrite link reference definitions (#506) e8f84dc 2023-01-24 Kevin Moore Update GFM to 0.29.0.gfm.7 (#507) 93f67b0 2023-01-20 Zhiguang Chen Add an `enableTagfilter` option to `HtmlRenderer` to eanble GFM `tagfilter` extension (#447) d110770 2023-01-13 Zhiguang Chen Rewrite SetextHeaderSyntax (#500) c1b9bc6 2023-01-09 Sam Rawlins Migrate from no-implicit-casts to strict-casts (#504) 3e78c08 2023-01-01 dependabot[bot] Bump actions/checkout from 3.0.2 to 3.2.0 (#501) 417747f 2022-12-15 Zhiguang Chen Refactor list syntax (#499) 30ec05f 2022-11-29 Zhiguang Chen Do not escape single quote(apostrophe) inside code (#498) c3d1136 2022-11-29 Zhiguang Chen introduce a Line class (#494) Change-Id: I9d971b927b72500ab84cce461a60fe1a86818e2e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/281543 Reviewed-by: Samuel Rawlins <srawlins@google.com> Commit-Queue: Devon Carew <devoncarew@google.com>
Start with a typedef: typedef EventHandler<T>(Object sender, T args);
Then a method with EventHandler<T> as a param:
class SomeClass<T> {
void add(EventHandler<T> handler){
...
}
}
Then usage:
var someClass = new SomeClass<int>();
Calling add w/ a valid handler makes the editor happy.
Calling add w/ a number
someClass.add(5)
shows an error: 'int is not assignable to EventHandler<int>' as expected.Calling add w/ a random object `someClass.add(new Object()) shows no error in the editor, although it blows up wonderfully at runtime.
Attachment:
[Screen Shot 2012-05-30 at 10.19.11 AM.png](https://storage.googleapis.com/google-code-attachments/dart/issue-3316/comment-0/Screen Shot 2012-05-30 at 10.19.11 AM.png) (22.21 KB)
The text was updated successfully, but these errors were encountered: