blob: 3f274510e7044146ff67a0f59a6cc3dd5fbdd0e6 [file] [log] [blame]
// 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.md file.
// @dart = 2.9
library fasta.implicit_type_argument;
import 'package:kernel/ast.dart'
show DartType, DartTypeVisitor, DartTypeVisitor1, Nullability, Visitor;
import 'package:kernel/src/assumptions.dart';
import 'package:kernel/src/printer.dart';
import '../problems.dart' show unhandled, unsupported;
/// Marker type used as type argument on list, set and map literals whenever
/// type arguments are omitted in the source.
///
/// All of these types are replaced by the type inference. It is an internal
/// error if one survives to the final output.
class ImplicitTypeArgument extends DartType {
const ImplicitTypeArgument();
@override
Nullability get declaredNullability =>
unsupported("declaredNullability", -1, null);
@override
Nullability get nullability => unsupported("nullability", -1, null);
@override
R accept<R>(DartTypeVisitor<R> v) {
throw unhandled("$runtimeType", "${v.runtimeType}", -1, null);
}
@override
R accept1<R, A>(DartTypeVisitor1<R, A> v, A arg) {
throw unhandled("$runtimeType", "${v.runtimeType}", -1, null);
}
@override
visitChildren(Visitor<Object> v) {
unhandled("$runtimeType", "${v.runtimeType}", -1, null);
}
@override
ImplicitTypeArgument withDeclaredNullability(Nullability nullability) {
return unsupported("withDeclaredNullability", -1, null);
}
@override
ImplicitTypeArgument toNonNull() {
return unsupported("toNonNullable", -1, null);
}
@override
bool equals(Object other, Assumptions assumptions) => this == other;
@override
void toTextInternal(AstPrinter printer) {
printer.write('<implicit-type-argument>');
}
@override
String toString() {
return "ImplicitTypeArgument(${toStringInternal()})";
}
}