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

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 <[email protected]>
Commit-Queue: Devon Carew <[email protected]>
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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