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

Supertype cannot be assigned to subtype #3344

Closed
DartBot opened this issue Jun 1, 2012 · 6 comments
Closed

Supertype cannot be assigned to subtype #3344

DartBot opened this issue Jun 1, 2012 · 6 comments
Assignees
Labels
area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion.
Milestone

Comments

@DartBot
Copy link

DartBot commented Jun 1, 2012

This issue was originally filed by alexei.kaigo...@gmail.com


Consider following test:

class A<T, U extends T>
{
  T t;
  A(U u) {
     u=t;
  }
}

main() {
  new A<num, double>(1.0);
}

The spec 10.16 Assignment reads:

In checked mode, it is a dynamic type error if o is not null and the interface induced by the class of o is not a subtype of the actual type (13.8.1) of v.
It is a static type warning if the static type of e may not be assigned to the static type of v.

There is no other definition of "may not be assigned", except "interface induced by the class of o is not a subtype of the actual type (13.8.1) of v".

Since U is subtype of T, t may be assigned to u. Indeed, Dart VM in checked mode shows no dynamic error.

However, Dart compiler issues static warning:

WARNING|STATIC_TYPE|TYPE_NOT_ASSIGNMENT_COMPATIBLE|file:/home/kaigorodov/dash/dash/co19/tests/co19/src/Language/09_Generics/09_Generics_A04_t01.dart/09_Generics_A04_t01.dart|19|8|1|A.T is not assignable to A.U
    18: A(U u) {
    19: u=t;

Either spec or Dart Compiler should be fixed.

@madsager
Copy link
Contributor

madsager commented Jun 4, 2012

Added Area-Analyzer, Triaged labels.

@danrubel
Copy link

danrubel commented Jun 4, 2012

Added this to the M1 milestone.

@scheglov
Copy link
Contributor

Set owner to @scheglov.
Added Accepted label.

@scheglov
Copy link
Contributor

Issue #2480 has been merged into this issue.

@scheglov
Copy link
Contributor

@scheglov
Copy link
Contributor

@DartBot DartBot added Type-Defect area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. labels Jun 11, 2012
@DartBot DartBot added this to the M1 milestone Jun 11, 2012
copybara-service bot pushed a commit that referenced this issue Feb 23, 2023
Revisions updated by `dart tools/rev_sdk_deps.dart`.

dartdoc (https://github.com/dart-lang/dartdoc/compare/dba6f94..e4cdbd6):
  e4cdbd6f  2023-02-21  Janice Collins  Record rendering simplification (#3344)

http (https://github.com/dart-lang/http/compare/c13a3f8..1500a71):
  1500a71  2023-02-23  Devon Carew  contribute a pull request labeler workflow (#875)
  e2c4e6f  2023-02-21  Brian Quinlan  Add a link to cronet_http_embedded from cronet_http. (#874)

markdown (https://github.com/dart-lang/markdown/compare/4befe66..ecbffa9):
  ecbffa9  2023-02-22  Kevin Moore  Use latest lints, require Dart 2.19 or later (#524)

shelf (https://github.com/dart-lang/shelf/compare/707c8b2..e3cfe79):
  e3cfe79  2023-02-22  Devon Carew  contribute issue templates and a pull request labeler (#332)

test (https://github.com/dart-lang/test/compare/e56c643..2cc4144):
  2cc4144e  2023-02-22  Nate Bosch  Avoid exceptions for iterable getters (#1954)
  f7fe4f06  2023-02-22  Nate Bosch  Include stack trace for exception in has (#1953)
  ba8e43af  2023-02-22  Nate Bosch  Only grab the first failure in softCheck (#1949)
  34df652b  2023-02-22  Nate Bosch  Flush stdin before test (#1950)
  ae015ef6  2023-02-22  Nidal Bakir  Add Concurrency Testing section to README (#1944)
  4e23d036  2023-02-21  Nate Bosch  Mention .having and .has in migration guide (#1948)
  438c2274  2023-02-21  Nate Bosch  Annotate `has` with `@useResult` (#1947)
  3ddecafd  2023-02-21  Nate Bosch  Add async examples to README (#1946)

tools (https://github.com/dart-lang/tools/compare/a53933c..c7518f7):
  c7518f7  2023-02-22  Elias Yishak  Update to regex to look for underscore delimited labels (#12)

webdev (https://github.com/dart-lang/webdev/compare/ae7eb80..1e7f9b7):
  1e7f9b7  2023-02-22  Anna Gringauze  Create copying sdk configuration provider (#1984)
  26910ba  2023-02-22  Anna Gringauze  Pass SdkLayout to the frontend server (#1986)
  784e28b  2023-02-22  Anna Gringauze  Remove unnecessary awaits (#1982)
  3cbaf37  2023-02-22  Elliott Brooks (she/her)  [MV3 Debug Extension] Support Bolt workflow (#1983)
  0f893e6  2023-02-22  Anna Gringauze  Move project definitions into a separate class (#1975)
  a942b5f  2023-02-22  Anna Gringauze  Add unnecessary_lambdas lint (#1978)
  3774cf8  2023-02-21  Anna Gringauze  Add 'avoid_void_async' lint (#1977)
  705e0ac  2023-02-21  Elliott Brooks (she/her)  [MV3 Debug Extension] Show a warning if multiple Dart apps are in a single page (#1976)

Change-Id: Iea264a18a154e71cd0990e1363951648bec5ceba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/284940
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
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.
Projects
None yet
Development

No branches or pull requests

4 participants