mirror of
https://github.com/irmen/prog8.git
synced 2024-12-23 09:32:43 +00:00
upgrade to Kotlin 1.9.0
This commit is contained in:
parent
1f7180d9a8
commit
6d1fdf1ba6
2
.idea/kotlinc.xml
generated
2
.idea/kotlinc.xml
generated
@ -4,6 +4,6 @@
|
|||||||
<option name="jvmTarget" value="11" />
|
<option name="jvmTarget" value="11" />
|
||||||
</component>
|
</component>
|
||||||
<component name="KotlinJpsPluginSettings">
|
<component name="KotlinJpsPluginSettings">
|
||||||
<option name="version" value="1.8.21-release-380" />
|
<option name="version" value="1.9.0-release-358" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -85,7 +85,7 @@ val BuiltinFunctions: Map<String, FSignature> = mapOf(
|
|||||||
"abs__float" to FSignature(true, listOf(FParam("value", arrayOf(DataType.FLOAT))), DataType.FLOAT),
|
"abs__float" to FSignature(true, listOf(FParam("value", arrayOf(DataType.FLOAT))), DataType.FLOAT),
|
||||||
"len" to FSignature(true, listOf(FParam("values", IterableDatatypes)), DataType.UWORD),
|
"len" to FSignature(true, listOf(FParam("values", IterableDatatypes)), DataType.UWORD),
|
||||||
// normal functions follow:
|
// normal functions follow:
|
||||||
"sizeof" to FSignature(true, listOf(FParam("object", DataType.values())), DataType.UBYTE),
|
"sizeof" to FSignature(true, listOf(FParam("object", DataType.entries.toTypedArray())), DataType.UBYTE),
|
||||||
"sgn" to FSignature(true, listOf(FParam("value", NumericDatatypesNoBool)), DataType.BYTE),
|
"sgn" to FSignature(true, listOf(FParam("value", NumericDatatypesNoBool)), DataType.BYTE),
|
||||||
"sqrt" to FSignature(true, listOf(FParam("value", NumericDatatypesNoBool)), null),
|
"sqrt" to FSignature(true, listOf(FParam("value", NumericDatatypesNoBool)), null),
|
||||||
"sqrt__ubyte" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UBYTE))), DataType.UBYTE),
|
"sqrt__ubyte" to FSignature(true, listOf(FParam("value", arrayOf(DataType.UBYTE))), DataType.UBYTE),
|
||||||
|
@ -178,10 +178,8 @@ internal class AsmAssignSource(val kind: SourceStorageKind,
|
|||||||
AsmAssignSource(SourceStorageKind.EXPRESSION, program, asmgen, value.type, expression = value)
|
AsmAssignSource(SourceStorageKind.EXPRESSION, program, asmgen, value.type, expression = value)
|
||||||
}
|
}
|
||||||
is PtFunctionCall -> {
|
is PtFunctionCall -> {
|
||||||
val symbol = asmgen.symbolTable.lookup(value.name)
|
val symbol = asmgen.symbolTable.lookup(value.name) ?: throw AssemblyError("lookup error ${value.name}")
|
||||||
if(symbol==null)
|
val sub = symbol.astNode as IPtSubroutine
|
||||||
TODO("${value.name}")
|
|
||||||
val sub = symbol!!.astNode as IPtSubroutine
|
|
||||||
val returnType = sub.returnsWhatWhere().firstOrNull { rr -> rr.first.registerOrPair != null || rr.first.statusflag!=null }?.second
|
val returnType = sub.returnsWhatWhere().firstOrNull { rr -> rr.first.registerOrPair != null || rr.first.statusflag!=null }?.second
|
||||||
?: throw AssemblyError("can't translate zero return values in assignment")
|
?: throw AssemblyError("can't translate zero return values in assignment")
|
||||||
|
|
||||||
|
@ -743,13 +743,13 @@ internal class AstChecker(private val program: Program,
|
|||||||
"%output" -> {
|
"%output" -> {
|
||||||
if(directive.parent !is Module)
|
if(directive.parent !is Module)
|
||||||
err("this directive may only occur at module level")
|
err("this directive may only occur at module level")
|
||||||
if(directive.args.size!=1 || directive.args[0].name !in OutputType.values().map {it.name.lowercase()})
|
if(directive.args.size!=1 || directive.args[0].name !in OutputType.entries.map {it.name.lowercase()})
|
||||||
err("invalid output directive type")
|
err("invalid output directive type")
|
||||||
}
|
}
|
||||||
"%launcher" -> {
|
"%launcher" -> {
|
||||||
if(directive.parent !is Module)
|
if(directive.parent !is Module)
|
||||||
err("this directive may only occur at module level")
|
err("this directive may only occur at module level")
|
||||||
if(directive.args.size!=1 || directive.args[0].name !in CbmPrgLauncherType.values().map{it.name.lowercase()})
|
if(directive.args.size!=1 || directive.args[0].name !in CbmPrgLauncherType.entries.map{it.name.lowercase()})
|
||||||
err("invalid launcher directive type")
|
err("invalid launcher directive type")
|
||||||
}
|
}
|
||||||
"%zeropage" -> {
|
"%zeropage" -> {
|
||||||
|
@ -468,7 +468,7 @@ private fun Prog8ANTLRParser.CharliteralContext.toAst(): CharLiteral {
|
|||||||
val enc = this.encoding?.text
|
val enc = this.encoding?.text
|
||||||
val encoding =
|
val encoding =
|
||||||
if(enc!=null)
|
if(enc!=null)
|
||||||
Encoding.values().singleOrNull { it.prefix == enc }
|
Encoding.entries.singleOrNull { it.prefix == enc }
|
||||||
?: throw SyntaxError("invalid encoding", toPosition())
|
?: throw SyntaxError("invalid encoding", toPosition())
|
||||||
else
|
else
|
||||||
Encoding.DEFAULT
|
Encoding.DEFAULT
|
||||||
@ -485,7 +485,7 @@ private fun Prog8ANTLRParser.StringliteralContext.toAst(): StringLiteral {
|
|||||||
val enc = encoding?.text
|
val enc = encoding?.text
|
||||||
val encoding =
|
val encoding =
|
||||||
if(enc!=null)
|
if(enc!=null)
|
||||||
Encoding.values().singleOrNull { it.prefix == enc }
|
Encoding.entries.singleOrNull { it.prefix == enc }
|
||||||
?: throw SyntaxError("invalid encoding", toPosition())
|
?: throw SyntaxError("invalid encoding", toPosition())
|
||||||
else
|
else
|
||||||
Encoding.DEFAULT
|
Encoding.DEFAULT
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
TODO
|
TODO
|
||||||
====
|
====
|
||||||
|
|
||||||
- upgrade to Kotlin 1.9.0 enum.values() -> enum.entries
|
|
||||||
- IR: don't use ext.b to clear the msb of an unsigned word, add a specialized instruction for this zmsb.w?
|
- IR: don't use ext.b to clear the msb of an unsigned word, add a specialized instruction for this zmsb.w?
|
||||||
- Fix expericodegen errors (on rockrunners etc)
|
- Fix expericodegen errors (on rockrunners etc)
|
||||||
|
|
||||||
|
@ -4,5 +4,5 @@ org.gradle.parallel=true
|
|||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
javaVersion=11
|
javaVersion=11
|
||||||
kotlinVersion=1.8.21
|
kotlinVersion=1.9.0
|
||||||
version=9.1-SNAPSHOT
|
version=9.1-SNAPSHOT
|
||||||
|
@ -123,8 +123,8 @@ class TestInstructions: FunSpec({
|
|||||||
}
|
}
|
||||||
|
|
||||||
test("all instructionformats") {
|
test("all instructionformats") {
|
||||||
instructionFormats.size shouldBe Opcode.values().size
|
instructionFormats.size shouldBe Opcode.entries.size
|
||||||
Opcode.values().forEach {
|
Opcode.entries.forEach {
|
||||||
val fmt = instructionFormats.getValue(it)
|
val fmt = instructionFormats.getValue(it)
|
||||||
fmt.values.forEach { format ->
|
fmt.values.forEach { format ->
|
||||||
require(format.reg2==OperandDirection.UNUSED || format.reg2==OperandDirection.READ) {"reg2 can only be used as input"}
|
require(format.reg2==OperandDirection.UNUSED || format.reg2==OperandDirection.READ) {"reg2 can only be used as input"}
|
||||||
|
Loading…
Reference in New Issue
Block a user