| class MapLike<K, V> { |
| V? get(Object key) => _map[key]; |
| V put(K key, V value) => _map[key] = value; |
| final Map<K, V> _map = {}; |
| } |
| |
| class MapLike2<K, V> { |
| MapLike2(this.defaultValue); |
| V get(Object key) => _map[key] ?? defaultValue; |
| V put(K key, V value) => _map[key] = value; |
| final Map<K, V> _map = {}; |
| final V defaultValue; |
| } |
| |
| expect(expected, actual) {} |
| explicitInferredTypeArguments() {} |
| explicitWithTypeArguments() {} |
| |
| extension Extension<K, V> on MapLike<K, V> { |
| V? operator [](Object key) => get(key); |
| void operator []=(K key, V value) => put(key, value); |
| } |
| |
| extension Extension2<K, V> on MapLike2<K, V> { |
| V operator [](Object key) => get(key); |
| void operator []=(K key, V value) => put(key, value); |
| } |
| |
| implicit() {} |
| main() {} |