package org.shedlang.compiler.shidtopatio; import org.shedlang.compiler.patio.PatioSerializer; import org.shedlang.compiler.typechecker.TypeInfos; import java.util.Optional; class ShidToPatioTesting { private ShidToPatioTesting() {} static ShidToPatioContext createContext(TypeInfos typeInfos) { var globalContext = ShidToPatioContext.GlobalContext.forTypeInfos(typeInfos); return ShidToPatioContext.initialForCompilationUnit(Optional.empty(), globalContext); } static String serialize(ShidToPatioContext context) { var builder = new StringBuilder(); builder.append("Compilation unit elements:\n\n"); for (var element : context.compilationUnitContext().elementsByName().values()) { PatioSerializer.serializeCompilationUnitElement(element, builder); builder.append("\n"); } builder.append("\n"); builder.append("Locals:\n"); for (var local : context.functionContext().localsByName().values()) { builder.append(" * "); PatioSerializer.serializeLocal(local, builder); builder.append("\n"); } builder.append("\n"); builder.append("Instructions:\n\n"); PatioSerializer.serializeInstructions( context.functionContext().instructions(), builder ); builder.append("\n\nTemporary stack:\n"); for (var value : context.functionContext().temporaryStack()) { builder.append(" * "); builder.append(value.toString()); builder.append("\n"); } return builder.toString(); } }