DEFINE allows parameters after default parameter number, result is not callable
A Logo programming environment for Microsoft Windows
Brought to you by:
david_costanzo
DEFINE is documented as allowing the same parameters/format as TO. TO says that if the default parameter number is given, it must be last. However, DEFINE allows the default parameter number to be given anywhere, which results in an uncallable procedure.
How Reproducible:
Every Time
Steps to Reproduce:
DEFINE "BAD_PROC [ [a 1 [b 2] ] [ OUTPUT LIST :a :b ] ]
What Happens:
No error is thrown, and BAD_PROC is defined, but you can't call it.
BAD_PROC 10
b has no value in BAD_PROC
[OUTPUT LIST :a :b]
(BAD_PROC 10)
b has no value in BAD_PROC
[OUTPUT LIST :a :b]
(BAD_PROC 10 20)
too much inside ()'s
Expected Result:
DEFINE throws an error.
Notes:
The bug is reproducible in UCBLogo 6.2.5.
If the default number of parameters is given at the end, then DEFINE honors it correctly:
DEFINE "GOOD_PROC [ [a [b 2] 1 ] [ OUTPUT LIST :a :b ] ]
SHOW GOOD_PROC 1
[1 2]
SHOW (GOOD_PROC 10 20)
[10 20]