mirror of
https://github.com/irmen/prog8.git
synced 2024-10-18 16:24:26 +00:00
fix var prefix issues in asm gen of anonscopes
This commit is contained in:
parent
8cec032e7d
commit
ae90a957c6
@ -57,8 +57,8 @@ class AnonymousScopeVarsCleanup(val program: Program): IAstModifyingVisitor {
|
|||||||
|
|
||||||
val scope = ident.definingScope() as? AnonymousScope ?: return ident
|
val scope = ident.definingScope() as? AnonymousScope ?: return ident
|
||||||
val vardecl = ident.targetVarDecl(program.namespace)
|
val vardecl = ident.targetVarDecl(program.namespace)
|
||||||
return if(vardecl!=null) {
|
return if(vardecl!=null && vardecl.definingScope() == ident.definingScope()) {
|
||||||
// prefix the variable name reference
|
// prefix the variable name reference that is defined inside the anon scope
|
||||||
ident.withPrefixedName(nameprefix(scope))
|
ident.withPrefixedName(nameprefix(scope))
|
||||||
} else {
|
} else {
|
||||||
ident
|
ident
|
||||||
|
@ -840,7 +840,10 @@ internal class AsmGen2(val program: Program,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun translate(stmt: RepeatLoop) {
|
private fun translate(stmt: RepeatLoop) {
|
||||||
TODO("repeat $stmt")
|
// TODO("repeat $stmt")
|
||||||
|
out(";------ TODO REPEAT")
|
||||||
|
translate(stmt.body)
|
||||||
|
out(";------ TODO REPEAT END")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun translate(stmt: WhenStatement) {
|
private fun translate(stmt: WhenStatement) {
|
||||||
|
@ -10,9 +10,29 @@ main {
|
|||||||
sub start() {
|
sub start() {
|
||||||
|
|
||||||
A=abc
|
A=abc
|
||||||
|
ubyte zzz
|
||||||
|
|
||||||
|
repeat {
|
||||||
|
uword wvar
|
||||||
|
Y=abc
|
||||||
|
Y=zzz
|
||||||
|
wvar=99
|
||||||
|
} until 99
|
||||||
|
|
||||||
|
repeat {
|
||||||
|
uword wvar
|
||||||
|
Y=abc
|
||||||
|
Y=zzz
|
||||||
|
wvar=99
|
||||||
|
} until 99
|
||||||
|
|
||||||
|
if A>0 {
|
||||||
|
uword wvar
|
||||||
|
Y=abc
|
||||||
|
Y=zzz
|
||||||
|
wvar=99
|
||||||
|
}
|
||||||
|
|
||||||
if A>0
|
|
||||||
Y=abc ; @todo gets prefixed with anon1_ but should not be because is found in other scope...
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user