dart-sdk/tests/language_2/regress_32425_test.dart
Régis Crelier 383517d292 [VM runtime] Fix type canonicalization (fixes #32425).
A reused type argument vector that is longer than necessary needs to be
shortened to the correct length upon type canonicalization.
The runtime call comparing two instance runtime types also needs to consider
reused vectors.
Add regression test.

Change-Id: Ib3b9620409b9cff313f270c4f3fb7051fecbb604
Reviewed-on: https://dart-review.googlesource.com/45340
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-03-08 09:55:35 +00:00

29 lines
617 B
Dart

// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:expect/expect.dart';
class A<T> {}
final map = {};
class B<T> {
void foo() {
Expect.equals(map[new A<T>().runtimeType], 42);
}
}
class C<T, U> {
void build() {
new B<T>().foo();
new B<U>().foo();
Expect.equals(new B<T>().runtimeType, new B<U>().runtimeType);
}
}
void main() {
map[new A<String>().runtimeType] = 42;
new C<String, String>().build();
}