writeDebugInfo method
Implementation
Future<void> writeDebugInfo(OutputWriter output) async {
output.writeLn("// type arguments[1]:");
for (var k in typeArgumentsMap().keys) {
output.writeLn("// ${k.name}[${k.hashCode.toString()}] => ${typeArgumentsMap()[k]!.getDisplayString()}[${typeArgumentsMap()[k].hashCode.toString()}]");
}
output.writeLn("// type arguments[2]:");
for (var k in typeArguments) {
output.writeLn("// ENCLOSING: ${k.element != null ? (k.element!.enclosingElement.name ?? "XXX") : "NULL"}");
output.writeLn("// ${k.type.getDisplayString()}[${k.hashCode.toString()}]");
}
if (element != null) {
output.writeLn("// can be singleton: ${canBeSingleton() ? 'TRUE' : 'FALSE'}");
for (var element in element!.typeParameters) {
output.writeLn("// parameter: ${element.name} ${element.hashCode.toString()}");
//lines.add("//parameter: ${element.bound == null ? "NULL" : element.bound.name}");
//lines.add("//parameter: ${element.instantiate(nullabilitySuffix: NullabilitySuffix.none).element.name}");
}
for (var element in element!.thisType.typeArguments) {
output.writeLn("// argument: ${element.getDisplayString()} ${element.hashCode.toString()}");
}
for (var s in element!.allSupertypes) {
output.writeLn("// parent: ${s.element.displayName} ${s.element.metadata.toString()}");
for (var element in s.element.typeParameters) {
output.writeLn("// parameter: ${element.name} ${element.hashCode.toString()}");
//lines.add("//parameter: ${element.bound == null ? "NULL" : element.bound.name}");
//lines.add("//parameter: ${element.instantiate(nullabilitySuffix: NullabilitySuffix.none).element.name}");
}
for (var element in s.typeArguments) {
output.writeLn("// argument: ${element.getDisplayString()} ${element.hashCode.toString()}");
}
}
//lines.add("//config: ${json.encode(typeConfig)}");
for (var p in plugins) {
output.writeLn("// plugin: ${p.fullName}");
}
output.writeLn("// CONFIG");
typeConfig.forEach((key, value) {
output.writeLn("// config: $key $value");
});
output.writeLn("// TYPE PATH:");
for (var type in allTypeInfoPath()) {
output.writeLn("// ${type.fullName}");
}
}
}