Skip to content

[Bug]: FOR loop with declared constants causes a crash #933

@boriel

Description

@boriel

Contact Details

@boriel

Compiler version

v1.17.3

What happened?

The following program crashes the compiler:

const SCR_FIRST_LINE_ANSWER   as ubyte = 14
const SCR_MAX_LINES           as ubyte = 23

for i = SCR_FIRST_LINE_ANSWER to SCR_MAX_LINES
next

Error and Warning messages

Traceback (most recent call last):
  File "/home/boriel/src/boriel-basic/zxbasic/zxbc.py", line 12, in <module>
    sys.exit(zxbc.main())  # Exit
             ^^^^^^^^^^^
  File "/home/boriel/src/boriel-basic/zxbasic/src/zxbc/zxbc.py", line 110, in main
    optimizer.visit(zxbparser.ast)
  File "/home/boriel/src/boriel-basic/zxbasic/src/api/optimize.py", line 198, in visit
    return super().visit(node)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/boriel/src/boriel-basic/zxbasic/src/api/optimize.py", line 55, in visit
    return super().visit(ToVisit(node))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/boriel/src/boriel-basic/zxbasic/src/ast/ast.py", line 41, in visit
    stack.append(last.send(last_result))
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/boriel/src/boriel-basic/zxbasic/src/api/optimize.py", line 422, in visit_FOR
    if from_ > to_ and step_ > 0:
       ^^^^^^^^^^^
TypeError: '>' not supported between instances of 'SymbolID' and 'SymbolID'

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions