blob: 7f869e9600a62282defadd5db0363f9b8ce05fd6 [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/spread.dart:18:22: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'MyList<int>'.
// - 'List' is from 'dart:core'.
// MyList<int> list = []; // Error
// ^
//
// pkg/front_end/testcases/extension_types/spread.dart:19:23: Error: A value of type 'Set<dynamic>' can't be assigned to a variable of type 'MySet<String>'.
// - 'Set' is from 'dart:core'.
// MySet<String> set = {}; // Error
// ^
//
// pkg/front_end/testcases/extension_types/spread.dart:20:29: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'MyMap<String, bool>'.
// - 'Map' is from 'dart:core'.
// MyMap<String, bool> map = {}; // Error
// ^
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
extension type MyList<T extends core::Object? = dynamic>(core::List<T%> it) implements core::List<T%> {
abstract extension-type-member representation-field get it() core::List<T%>;
constructor = self::MyList|constructor#;
constructor tearoff = self::MyList|constructor#_#new#tearOff;
}
extension type MySet<T extends core::Object? = dynamic>(core::Set<T%> it) implements core::Set<T%> {
abstract extension-type-member representation-field get it() core::Set<T%>;
constructor = self::MySet|constructor#;
constructor tearoff = self::MySet|constructor#_#new#tearOff;
}
extension type MyMap<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(core::Map<K%, V%> it) implements core::Map<K%, V%> {
abstract extension-type-member representation-field get it() core::Map<K%, V%>;
constructor = self::MyMap|constructor#;
constructor tearoff = self::MyMap|constructor#_#new#tearOff;
}
static extension-type-member method MyList|constructor#<T extends core::Object? = dynamic>(core::List<self::MyList|constructor#::T%> it) → self::MyList<self::MyList|constructor#::T%> /* erasure=core::List<self::MyList|constructor#::T%> */ {
lowered final self::MyList<self::MyList|constructor#::T%> /* erasure=core::List<self::MyList|constructor#::T%> */ #this = it;
return #this;
}
static extension-type-member method MyList|constructor#_#new#tearOff<T extends core::Object? = dynamic>(core::List<self::MyList|constructor#_#new#tearOff::T%> it) → self::MyList<self::MyList|constructor#_#new#tearOff::T%> /* erasure=core::List<self::MyList|constructor#_#new#tearOff::T%> */
return self::MyList|constructor#<self::MyList|constructor#_#new#tearOff::T%>(it);
static extension-type-member method MySet|constructor#<T extends core::Object? = dynamic>(core::Set<self::MySet|constructor#::T%> it) → self::MySet<self::MySet|constructor#::T%> /* erasure=core::Set<self::MySet|constructor#::T%> */ {
lowered final self::MySet<self::MySet|constructor#::T%> /* erasure=core::Set<self::MySet|constructor#::T%> */ #this = it;
return #this;
}
static extension-type-member method MySet|constructor#_#new#tearOff<T extends core::Object? = dynamic>(core::Set<self::MySet|constructor#_#new#tearOff::T%> it) → self::MySet<self::MySet|constructor#_#new#tearOff::T%> /* erasure=core::Set<self::MySet|constructor#_#new#tearOff::T%> */
return self::MySet|constructor#<self::MySet|constructor#_#new#tearOff::T%>(it);
static extension-type-member method MyMap|constructor#<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(core::Map<self::MyMap|constructor#::K%, self::MyMap|constructor#::V%> it) → self::MyMap<self::MyMap|constructor#::K%, self::MyMap|constructor#::V%> /* erasure=core::Map<self::MyMap|constructor#::K%, self::MyMap|constructor#::V%> */ {
lowered final self::MyMap<self::MyMap|constructor#::K%, self::MyMap|constructor#::V%> /* erasure=core::Map<self::MyMap|constructor#::K%, self::MyMap|constructor#::V%> */ #this = it;
return #this;
}
static extension-type-member method MyMap|constructor#_#new#tearOff<K extends core::Object? = dynamic, V extends core::Object? = dynamic>(core::Map<self::MyMap|constructor#_#new#tearOff::K%, self::MyMap|constructor#_#new#tearOff::V%> it) → self::MyMap<self::MyMap|constructor#_#new#tearOff::K%, self::MyMap|constructor#_#new#tearOff::V%> /* erasure=core::Map<self::MyMap|constructor#_#new#tearOff::K%, self::MyMap|constructor#_#new#tearOff::V%> */
return self::MyMap|constructor#<self::MyMap|constructor#_#new#tearOff::K%, self::MyMap|constructor#_#new#tearOff::V%>(it);
static method method(self::MyList<core::int> /* erasure=core::List<core::int> */ list, self::MySet<core::String> /* erasure=core::Set<core::String> */ set, self::MyMap<core::bool, core::num> /* erasure=core::Map<core::bool, core::num> */ map) dynamic {
core::List<core::int> list2 = block {
final core::List<core::int> #t1 = core::List::of<core::int>(list);
} =>#t1;
core::Set<core::String> set2 = block {
final core::Set<core::String> #t2 = col::LinkedHashSet::of<core::String>(set);
} =>#t2;
core::Map<core::bool, core::num> map2 = block {
final core::Map<core::bool, core::num> #t3 = col::LinkedHashMap::of<core::bool, core::num>(map);
} =>#t3;
}
static method test() dynamic {
self::MyList<core::int> /* erasure=core::List<core::int> */ list = invalid-expression "pkg/front_end/testcases/extension_types/spread.dart:18:22: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'MyList<int>'.
- 'List' is from 'dart:core'.
MyList<int> list = []; // Error
^" in <dynamic>[] as{TypeError} self::MyList<core::int> /* erasure=core::List<core::int> */;
self::MySet<core::String> /* erasure=core::Set<core::String> */ set = invalid-expression "pkg/front_end/testcases/extension_types/spread.dart:19:23: Error: A value of type 'Set<dynamic>' can't be assigned to a variable of type 'MySet<String>'.
- 'Set' is from 'dart:core'.
MySet<String> set = {}; // Error
^" in ( block {
final core::Set<dynamic> #t4 = col::LinkedHashSet::•<dynamic>();
} =>#t4) as{TypeError} self::MySet<core::String> /* erasure=core::Set<core::String> */;
self::MyMap<core::String, core::bool> /* erasure=core::Map<core::String, core::bool> */ map = invalid-expression "pkg/front_end/testcases/extension_types/spread.dart:20:29: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'MyMap<String, bool>'.
- 'Map' is from 'dart:core'.
MyMap<String, bool> map = {}; // Error
^" in <dynamic, dynamic>{} as{TypeError} self::MyMap<core::String, core::bool> /* erasure=core::Map<core::String, core::bool> */;
}