package prog8tests.helpers import prog8.ast.IBuiltinFunctions import prog8.ast.base.DataType import prog8.ast.base.Position import prog8.ast.expressions.Expression import prog8.ast.expressions.InferredTypes import prog8.ast.expressions.NumericLiteral import prog8.ast.statements.Block import prog8.ast.statements.RegisterOrStatusflag import prog8.ast.statements.Subroutine import prog8.ast.statements.VarDecl import prog8.compilerinterface.* internal object DummyFunctions : IBuiltinFunctions { override val names: Set = emptySet() override val purefunctionNames: Set = emptySet() override fun constValue( name: String, args: List, position: Position, ): NumericLiteral? = null override fun returnType(name: String, args: MutableList) = InferredTypes.InferredType.unknown() } internal object DummyMemsizer : IMemSizer { override fun memorySize(dt: DataType) = 0 override fun memorySize(decl: VarDecl) = 0 } internal object DummyStringEncoder : IStringEncoding { override fun encodeString(str: String, encoding: Encoding): List { return emptyList() } override fun decodeString(bytes: List, encoding: Encoding): String { return "" } } internal object AsciiStringEncoder : IStringEncoding { override fun encodeString(str: String, encoding: Encoding): List = str.map { it.code.toUByte() } override fun decodeString(bytes: List, encoding: Encoding): String { return bytes.joinToString() } } internal object DummyCompilationTarget : ICompilationTarget { override val name: String = "dummy" override val machine: IMachineDefinition get() = throw NotImplementedError("dummy") override val supportedEncodings = setOf(Encoding.PETSCII, Encoding.SCREENCODES, Encoding.ISO) override val defaultEncoding = Encoding.PETSCII override fun encodeString(str: String, encoding: Encoding): List { throw NotImplementedError("dummy") } override fun decodeString(bytes: List, encoding: Encoding): String { throw NotImplementedError("dummy") } override fun asmsubArgsEvalOrder(sub: Subroutine): List { throw NotImplementedError("dummy") } override fun asmsubArgsHaveRegisterClobberRisk(args: List, paramRegisters: List): Boolean { throw NotImplementedError("dummy") } override fun memorySize(dt: DataType): Int { throw NotImplementedError("dummy") } override fun memorySize(decl: VarDecl): Int { throw NotImplementedError("dummy") } } internal object DummyVarsAndConsts : IVariablesAndConsts { override val blockVars: Map> get() = throw NotImplementedError("dummy") override val blockConsts: Map> get() = throw NotImplementedError("dummy") override val blockMemvars: Map> get() = throw NotImplementedError("dummy") override val subroutineVars: Map> get() = throw NotImplementedError("dummy") override val subroutineConsts: Map> get() = throw NotImplementedError("dummy") override val subroutineMemvars: Map> get() = throw NotImplementedError("dummy") override fun addIfUnknown(definingBlock: Block, variable: VarDecl) { throw NotImplementedError("dummy") } }