mirror of
https://github.com/irmen/prog8.git
synced 2026-10-22 05:02:58 +00:00
Add arrays of struct instances (StructType[N] vars)
Parser: accept `Type[N] name` between type and identifier (Prog8ANTLR.g4, Antlr2KotlinVisitor) via elementToArray() for STRUCT_INSTANCE; CodeDesugarer: handle struct-instance bases, addressOfStructInstance(), whole-struct memcopy (points[a]=points[b]), and fix variable-index 16-bit scaling in 6502 AssignmentAsmGen.computeStructArrayElementAddress(); IR: preserve STRUCTDEFS round-trip, VM loader support; m68k/new6502/intermediate backends; docs + todo updated. Limitations: not as struct fields (AstChecker/ AstIdentifiersChecker error) nor as sub params.
This commit is contained in:
1 parent
b0d50c2a68
commit
94822b8662
26 files changed
+887
-293
No files matched your search
@@ -582,7 +582,7 @@ internal class ExpressionGen(private val codeGen: IRCodeGen) {
|
||||
|
||||
private fun translate(arrayIx: PtArrayIndexer): ExpressionCodeResult {
|
||||
if(arrayIx.type.isStructInstance)
|
||||
throw AssemblyError("cannot translate POINTER[x] resulting in a struct instance; this is likely part of a larger expression POINTER[x].field and that has to be translated earlier as a whole")
|
||||
throw AssemblyError("cannot translate array[x] resulting in a struct instance; this is likely part of a larger expression array[x].field and that has to be translated earlier as a whole")
|
||||
|
||||
val eltSize = codeGen.program.memsizer.memorySize(arrayIx.type, null)
|
||||
val vmDt = codeGen.irType(arrayIx.type)
|
||||
|
||||
Reference in new issue
Block a user