blob: b266feb3c1f9a53dd55d4e6f2bb6d9d6413715bb [file] [log] [blame]
// Copyright (c) 2017, 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.
library fasta.function_type_builder;
import 'builder.dart' show LibraryBuilder, TypeBuilder, TypeVariableBuilder;
abstract class FunctionTypeBuilder extends TypeBuilder {
final TypeBuilder returnType;
final List typeVariables;
final List formals;
FunctionTypeBuilder(this.returnType, this.typeVariables, this.formals);
@override
String get name => null;
@override
String get debugName => "Function";
@override
StringBuffer printOn(StringBuffer buffer) {
if (typeVariables != null) {
buffer.write("<");
bool isFirst = true;
for (TypeVariableBuilder t in typeVariables) {
if (!isFirst) {
buffer.write(", ");
} else {
isFirst = false;
}
buffer.write(t.name);
}
buffer.write(">");
}
buffer.write("(");
if (formals != null) {
bool isFirst = true;
for (dynamic t in formals) {
if (!isFirst) {
buffer.write(", ");
} else {
isFirst = false;
}
buffer.write(t?.fullNameForErrors);
}
}
buffer.write(") -> ");
buffer.write(returnType?.fullNameForErrors);
return buffer;
}
@override
build(LibraryBuilder library) {}
}