code cleanup

This commit is contained in:
Alex Zenla 2025-07-26 15:49:44 -07:00
parent a262c09219
commit 08f9b6f2ae
No known key found for this signature in database
GPG Key ID: 067B238899B51269
14 changed files with 15 additions and 36 deletions

View File

@ -2,7 +2,6 @@ package gay.pizza.pork.buildext
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.gradle.kotlin.dsl.create import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.getByType

View File

@ -3,7 +3,6 @@ package gay.pizza.pork.buildext
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.register
class PorkStdlibPlugin : Plugin<Project> { class PorkStdlibPlugin : Plugin<Project> {

View File

@ -1,6 +1,6 @@
package gay.pizza.pork.buildext.ast package gay.pizza.pork.buildext.ast
enum class AstPrimitive(val id: kotlin.String) { enum class AstPrimitive(val id: String) {
Boolean("Boolean"), Boolean("Boolean"),
String("String"), String("String"),
Int("Int"), Int("Int"),

View File

@ -1,9 +1,9 @@
package gay.pizza.pork.common package gay.pizza.pork.common
@Suppress("NOTHING_TO_INLINE", "UnusedReceiverParameter", "unused") @Suppress("NOTHING_TO_INLINE", "UnusedReceiverParameter")
inline fun Any?.markIsUnused() {} inline fun Any?.markIsUnused() {}
@Suppress("NOTHING_TO_INLINE", "unused") @Suppress("NOTHING_TO_INLINE")
inline fun unused(value: Any?) { inline fun unused(value: Any?) {
value.markIsUnused() value.markIsUnused()
} }

View File

@ -4,7 +4,6 @@ import gay.pizza.pork.ast.gen.Symbol
import gay.pizza.pork.execution.ExecutionContext import gay.pizza.pork.execution.ExecutionContext
import gay.pizza.pork.execution.ExecutionContextProvider import gay.pizza.pork.execution.ExecutionContextProvider
import gay.pizza.pork.execution.ExecutionOptions import gay.pizza.pork.execution.ExecutionOptions
import gay.pizza.pork.execution.NativeRegistry
import gay.pizza.pork.frontend.ImportLocator import gay.pizza.pork.frontend.ImportLocator
import gay.pizza.pork.frontend.World import gay.pizza.pork.frontend.World

View File

@ -5,8 +5,8 @@ import com.kenai.jffi.MemoryIO
import gay.pizza.pork.execution.None import gay.pizza.pork.execution.None
enum class FfiPrimitiveType( enum class FfiPrimitiveType(
val id: kotlin.String, val id: String,
override val size: kotlin.Long, override val size: Long,
val numberConvert: (Number.() -> Number)? = null, val numberConvert: (Number.() -> Number)? = null,
val nullableConversion: (Any?.() -> Any)? = null, val nullableConversion: (Any?.() -> Any)? = null,
val notNullConversion: (Any.() -> Any)? = null val notNullConversion: (Any.() -> Any)? = null
@ -22,9 +22,7 @@ enum class FfiPrimitiveType(
UnsignedLong("unsigned long", 8, numberConvert = { toLong() }), UnsignedLong("unsigned long", 8, numberConvert = { toLong() }),
Double("double", 8, numberConvert = { toDouble() }), Double("double", 8, numberConvert = { toDouble() }),
String("char*", 8, nullableConversion = { String("char*", 8, nullableConversion = {
if (this is FfiString) { this as? FfiString ?: FfiString.allocate(toString())
this
} else FfiString.allocate(toString())
}), }),
Pointer("void*", 8, nullableConversion = { Pointer("void*", 8, nullableConversion = {
when (this) { when (this) {
@ -52,7 +50,7 @@ enum class FfiPrimitiveType(
} }
} }
private fun <T> notNullConvert(type: kotlin.String, value: Any?, into: Any.() -> T): T { private fun <T> notNullConvert(type: String, value: Any?, into: Any.() -> T): T {
if (value == null) { if (value == null) {
throw RuntimeException("Null values cannot be used for converting to type $type") throw RuntimeException("Null values cannot be used for converting to type $type")
} }
@ -66,7 +64,7 @@ enum class FfiPrimitiveType(
return into(value) return into(value)
} }
private fun <T> numberConvert(type: kotlin.String, value: Any?, into: Number.() -> T): T { private fun <T> numberConvert(type: String, value: Any?, into: Number.() -> T): T {
if (value == null || value == None) { if (value == null || value == None) {
throw RuntimeException("Null values cannot be used for converting to numeric type $type") throw RuntimeException("Null values cannot be used for converting to numeric type $type")
} }
@ -90,7 +88,7 @@ enum class FfiPrimitiveType(
return ffi return ffi
} }
override fun read(address: FfiAddress, offset: kotlin.Int): Any { override fun read(address: FfiAddress, offset: Int): Any {
val actual = address.location + offset val actual = address.location + offset
return when (this) { return when (this) {
UnsignedByte, Byte -> MemoryIO.getInstance().getByte(actual) UnsignedByte, Byte -> MemoryIO.getInstance().getByte(actual)
@ -107,10 +105,10 @@ enum class FfiPrimitiveType(
companion object { companion object {
fun push(buffer: InvocationBuffer, value: Any): Unit = when (value) { fun push(buffer: InvocationBuffer, value: Any): Unit = when (value) {
is kotlin.Byte -> buffer.putByte(value.toInt()) is Byte -> buffer.putByte(value.toInt())
is kotlin.Short -> buffer.putShort(value.toInt()) is Short -> buffer.putShort(value.toInt())
is kotlin.Int -> buffer.putInt(value) is Int -> buffer.putInt(value)
is kotlin.Long -> buffer.putLong(value) is Long -> buffer.putLong(value)
is FfiAddress -> buffer.putAddress(value.location) is FfiAddress -> buffer.putAddress(value.location)
is FfiString -> buffer.putAddress(value.address.location) is FfiString -> buffer.putAddress(value.address.location)
else -> throw RuntimeException("Unknown buffer insertion: $value (${value.javaClass.name})") else -> throw RuntimeException("Unknown buffer insertion: $value (${value.javaClass.name})")

View File

@ -1,7 +1,5 @@
package gay.pizza.pork.ffi package gay.pizza.pork.ffi
import java.nio.file.Path
object FfiUnixPlatform : FfiPlatform { object FfiUnixPlatform : FfiPlatform {
override fun findLibrary(name: String): String? = null override fun findLibrary(name: String): String? = null
} }

View File

@ -1,7 +1,5 @@
package gay.pizza.pork.ffi package gay.pizza.pork.ffi
import java.nio.file.Path
object FfiWindowsPlatform : FfiPlatform { object FfiWindowsPlatform : FfiPlatform {
override fun findLibrary(name: String): String? = null override fun findLibrary(name: String): String? = null
} }

View File

@ -4,15 +4,10 @@ import gay.pizza.pork.ast.gen.CompilationUnit
import gay.pizza.pork.ast.gen.NodeVisitor import gay.pizza.pork.ast.gen.NodeVisitor
import gay.pizza.pork.ast.gen.Symbol import gay.pizza.pork.ast.gen.Symbol
import gay.pizza.pork.ast.gen.visit import gay.pizza.pork.ast.gen.visit
import gay.pizza.pork.evaluator.*
import gay.pizza.pork.execution.ExecutionContext import gay.pizza.pork.execution.ExecutionContext
import gay.pizza.pork.execution.ExecutionContextProvider import gay.pizza.pork.execution.ExecutionContextProvider
import gay.pizza.pork.execution.ExecutionOptions import gay.pizza.pork.execution.ExecutionOptions
import gay.pizza.pork.execution.InternalNativeProvider
import gay.pizza.pork.execution.NativeRegistry
import gay.pizza.pork.ffi.FfiNativeProvider
import gay.pizza.pork.ffi.JavaAutogenContentSource import gay.pizza.pork.ffi.JavaAutogenContentSource
import gay.pizza.pork.ffi.JavaNativeProvider
import gay.pizza.pork.frontend.ContentSource import gay.pizza.pork.frontend.ContentSource
import gay.pizza.pork.frontend.ImportLocator import gay.pizza.pork.frontend.ImportLocator
import gay.pizza.pork.frontend.DynamicImportSource import gay.pizza.pork.frontend.DynamicImportSource

View File

@ -6,11 +6,7 @@ import gay.pizza.pork.ast.gen.NodeType
import gay.pizza.pork.tokenizer.* import gay.pizza.pork.tokenizer.*
abstract class ParserBase(source: TokenSource, val attribution: NodeAttribution) : NodeParser { abstract class ParserBase(source: TokenSource, val attribution: NodeAttribution) : NodeParser {
val source: TokenSource = if (source is ParserAwareTokenSource) { val source: TokenSource = source as? ParserAwareTokenSource ?: LazySkippingTokenSource(source, TokenType.ParserIgnoredTypes)
source
} else {
LazySkippingTokenSource(source, TokenType.ParserIgnoredTypes)
}
@Suppress("NOTHING_TO_INLINE") @Suppress("NOTHING_TO_INLINE")
protected inline fun <T: Node> produce(type: NodeType, noinline block: () -> T): T = protected inline fun <T: Node> produce(type: NodeType, noinline block: () -> T): T =

View File

@ -1,6 +1,5 @@
package gay.pizza.pork.tokenizer package gay.pizza.pork.tokenizer
@Suppress("CanBeParameter")
class MatchedCharConsumer( class MatchedCharConsumer(
val start: CharSequence, val start: CharSequence,
val end: CharSequence, val end: CharSequence,

View File

@ -26,7 +26,7 @@ class InternalMachine(val world: CompiledWorld, val nativeRegistry: NativeRegist
if (debug) { if (debug) {
val frame = frame(inst) val frame = frame(inst)
println("vm: step: in slab ${frame?.symbolInfo?.slab ?: "unknown"}: symbol ${frame?.symbolInfo?.symbol ?: "unknown"}: $inst ${op.code}${if (op.args.isEmpty()) "" else " " + op.args.joinToString(" ")}") println("vm: step: in slab ${frame?.symbolInfo?.slab ?: "unknown"}: symbol ${frame?.symbolInfo?.symbol ?: "unknown"}: $inst ${op.code}${if (op.args.isEmpty()) "" else " " + op.args.joinToString(" ")}")
println("vm: step: stack: ${stack}") println("vm: step: stack: $stack")
} }
handler.handle(this, op) handler.handle(this, op)

View File

@ -4,7 +4,6 @@ import gay.pizza.pork.bytecode.Op
import gay.pizza.pork.bytecode.Opcode import gay.pizza.pork.bytecode.Opcode
import gay.pizza.pork.vm.InternalMachine import gay.pizza.pork.vm.InternalMachine
import gay.pizza.pork.vm.OpHandler import gay.pizza.pork.vm.OpHandler
import gay.pizza.pork.vm.VirtualMachineException
object JumpIfOpHandler : OpHandler(Opcode.JumpIf) { object JumpIfOpHandler : OpHandler(Opcode.JumpIf) {
override fun handle(machine: InternalMachine, op: Op) { override fun handle(machine: InternalMachine, op: Op) {

View File

@ -2,7 +2,6 @@ package gay.pizza.pork.vm.ops
import gay.pizza.pork.bytecode.Op import gay.pizza.pork.bytecode.Op
import gay.pizza.pork.bytecode.Opcode import gay.pizza.pork.bytecode.Opcode
import gay.pizza.pork.execution.NativeFunction
import gay.pizza.pork.execution.NativeType import gay.pizza.pork.execution.NativeType
import gay.pizza.pork.execution.None import gay.pizza.pork.execution.None
import gay.pizza.pork.vm.InternalMachine import gay.pizza.pork.vm.InternalMachine