Skip to content
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

Closed
kevmoo opened this issue May 30, 2012 · 4 comments
Closed

Dart Editor: incomplete error reporting on typedefs mismatch #3316

kevmoo opened this issue May 30, 2012 · 4 comments
Assignees
Labels
area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. closed-as-intended Closed as the reported issue is expected behavior
Milestone

Comments

@kevmoo
Copy link
Member

kevmoo commented May 30, 2012

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)

@madsager
Copy link
Contributor

Added Area-Editor, Triaged labels.

@clayberg
Copy link

clayberg commented Jun 5, 2012

Added this to the M1 milestone.
Removed Area-Editor label.
Added Area-Analyzer label.

@scheglov
Copy link
Contributor

scheglov commented Jun 7, 2012

Is this really issue?
Isn't Object superclass for everything, so for any interface too?

Reduced sample:

interface I {}
main() {
  I v = new Object();
}


Set owner to @gbracha.

@gbracha
Copy link
Contributor

gbracha commented Jun 7, 2012

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.

@kevmoo kevmoo added Type-Defect area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. closed-as-intended Closed as the reported issue is expected behavior labels Jun 7, 2012
@kevmoo kevmoo added this to the M1 milestone Jun 7, 2012
copybara-service bot pushed a commit that referenced this issue Feb 8, 2023
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>
This issue was closed.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. closed-as-intended Closed as the reported issue is expected behavior
Projects
None yet
Development

No branches or pull requests

5 participants