Skip to content

Commit f3f47f4

Browse files
srawlinsCommit Queue
authored andcommitted
analyzer: mock SDK: correct collection declarations in core library
* Iterable is a mixin class. * List is abstract, and because of that, we can remove the stub implementations of various methods. * `List.empty` is not annotated with `@Since`. * `Map.from` has a parameter. Change-Id: Iab10cea2845c5be52588ff25c30ba925c3c0caa5 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/450945 Commit-Queue: Samuel Rawlins <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent d3281b4 commit f3f47f4

File tree

2 files changed

+19
-23
lines changed

2 files changed

+19
-23
lines changed

pkg/analyzer/lib/src/test_utilities/mock_sdk.dart

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ abstract final class int extends num {
448448
449449
abstract class Invocation {}
450450
451-
abstract class Iterable<E> {
451+
abstract mixin class Iterable<E> {
452452
E get first;
453453
bool get isEmpty;
454454
bool get isNotEmpty;
@@ -461,17 +461,17 @@ abstract class Iterable<E> {
461461
462462
bool contains(Object? element);
463463
464-
Iterable<T> expand<T>(Iterable<T> f(E element));
464+
Iterable<T> expand<T>(Iterable<T> toElements(E element));
465465
466466
E firstWhere(bool test(E element), {E orElse()?});
467467
468-
R fold<R>(R initialValue, R combine(R previousValue, E element));
468+
T fold<T>(T initialValue, T combine(T previousValue, E element));
469469
470-
void forEach(void f(E element));
470+
void forEach(void action(E element));
471471
472472
E lastWhere(bool test(E element), {E orElse()?});
473473
474-
Iterable<R> map<R>(R f(E e));
474+
Iterable<T> map<T>(T toElement(E e));
475475
476476
E singleWhere(bool test(E element), {E orElse()?});
477477
@@ -488,12 +488,9 @@ abstract class Iterator<E> {
488488
bool moveNext();
489489
}
490490
491-
class List<E> implements Iterable<E> {
491+
abstract class List<E> implements Iterable<E> {
492492
external factory List.filled(int length, E fill, {bool growable = false});
493-
494-
@Since("2.9")
495493
external factory List.empty({bool growable = false});
496-
497494
external factory List.from(Iterable elements, {bool growable = true});
498495
external factory List.of(Iterable<E> elements, {bool growable = true});
499496
external factory List.generate(int length, E generator(int index),
@@ -502,38 +499,37 @@ class List<E> implements Iterable<E> {
502499
503500
E get last => throw 0;
504501
set length(int newLength) {}
505-
E operator [](int index) => throw 0;
506-
void operator []=(int index, E value) {}
507-
void set first(E value) {}
508-
509-
void add(E value) {}
510-
void addAll(Iterable<E> iterable) {}
511-
Map<int, E> asMap() => throw 0;
512-
void clear() {}
502+
E operator [](int index);
503+
void operator []=(int index, E value);
504+
void set first(E value);
505+
506+
void add(E value);
507+
void addAll(Iterable<E> iterable);
508+
Map<int, E> asMap();
509+
void clear();
513510
int indexOf(E element, [int start = 0]);
514511
bool remove(Object? value);
515-
E removeLast() => throw 0;
516512
517-
noSuchMethod(Invocation invocation) => null;
513+
E removeLast();
518514
}
519515
520516
abstract class Map<K, V> {
521517
external factory Map();
522-
external factory Map.from();
518+
external factory Map.from(Map other);
523519
external Map.of(Map<K, V> other);
524520
external factory Map.unmodifiable(Map<dynamic, dynamic> other);
525521
external factory Map.identity();
526522
527523
external factory Map.fromIterable(Iterable iterable,
528-
{K key(element)?, V value(element)?});
524+
{K key(dynamic element)?, V value(dynamic element)?});
529525
530526
external factory Map.fromIterables(Iterable<K> keys, Iterable<V> values);
531527
external factory Map.fromEntries(Iterable<MapEntry<K, V>> entries);
532528
533529
Iterable<K> get keys;
534530
bool get isEmpty;
535531
bool get isNotEmpty;
536-
int get length => 0;
532+
int get length;
537533
Iterable<V> get values;
538534
539535
V? operator [](Object? key);

pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ FunctionExpression
460460
declaredElement: <testLibraryFragment> null@null
461461
element: null@null
462462
type: void Function(int)
463-
correspondingParameter: f@null
463+
correspondingParameter: action@null
464464
staticType: void Function(int)
465465
''');
466466
}

0 commit comments

Comments
 (0)