| // Copyright (c) 2016, 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 'dart:collection'; |
| |
| import 'unmodifiable_wrappers.dart'; |
| |
| // Unfortunately, we can't use UnmodifiableSetMixin here, since const classes |
| // can't use mixins. |
| /// An unmodifiable, empty set that can have a const constructor. |
| class EmptyUnmodifiableSet<E> extends IterableBase<E> |
| implements UnmodifiableSetView<E> { |
| static /*=T*/ _throw/*<T>*/() { |
| throw new UnsupportedError("Cannot modify an unmodifiable Set"); |
| } |
| |
| Iterator<E> get iterator => new Iterable<E>.empty().iterator; |
| int get length => 0; |
| |
| const EmptyUnmodifiableSet(); |
| |
| bool contains(Object element) => false; |
| bool containsAll(Iterable<Object> other) => other.isEmpty; |
| E lookup(Object element) => null; |
| Set<E> toSet() => new Set(); |
| Set<E> union(Set<E> other) => new Set.from(other); |
| Set<E> intersection(Set<Object> other) => new Set(); |
| Set<E> difference(Set<Object> other) => new Set(); |
| |
| bool add(E value) => _throw(); |
| void addAll(Iterable<E> elements) => _throw(); |
| void clear() => _throw(); |
| bool remove(Object element) => _throw(); |
| void removeAll(Iterable<Object> elements) => _throw(); |
| void removeWhere(bool test(E element)) => _throw(); |
| void retainWhere(bool test(E element)) => _throw(); |
| void retainAll(Iterable<Object> elements) => _throw(); |
| } |
| |