
Outstanding Bugs
----------------

Fixed Bugs
----------

2003/07/01
- scratch the limited number of 'elseif's -- fixed to unlimited in 1.10
  (well, still crashes if there are too many but that is a WC bug)

2003/06/29
- only a limited number of 'elseif's are allowed in if-then-else clauses 
  (how many -- max of 26 elseif's)
- 'code array' is illegal (or will soon be)

2003/03/18
- Fixed cascading error where a variable declared with an undefined type
  would cause subsequent references to that variable to be flagged as
  undefined. Now only the undefined type error is flagged.
- It seems that not binds stronger to type unit than == . When I changed it to
  if not (GetOwningPlayer(u) == ai_player) then it worked. (AIAndy)

2003/03/11
- Updated the library scripts from the patch mpq (one or two native functions
  were added/removed in some patch and a couple constants were added)

2003/03/07
- WE gives an error if you try to use a variable name when it is the same
  as a function name... have to test if this is actually an error, but
  we should just treat both func names and variable names in same namespace
  to be safe.
- AIAndy:
  I have encountered a case today where the script checker finds no errors but 
  war3 does not accept the script.
  I had a function that returned a boolean that contained a loop without 
  exitwhens. The loop could only be left by return statements. I had no 
  return statement after the loop. The script checker did accept the script 
  but war3 did not until I put a return statement after the loop.

2003/02/09
- hex, octal notation for integers
- unary +
- real const can start with just .
- user defined functions can be declared 'constant'
- constant variables must be assigned a value, arrays can't be const
- id type regex should be: [a-zA-Z]([a-zA-Z0-9_]* [a-zA-Z0-9])?
- debug can only be used with set, call, ifthenelse, loop
- real does NOT conform to integer... how did this get in there?
- BFitch: 
  'constant' on functions prevents the assignment of variables within that
  function. It was once intended that certain types of callbacks would only
  ever be constant functions, and that constant functions would only be
  allowed to call other constant functions. This part of the semantics of the
  language were never finished. I don't think we ever made use of the fact
  variables can't be set in a constant functions for anysort of policy (and
  policy is all it would be good for since we didn't otherwise end up using it
  for anything useful). So yea, it would have been a hint to the programmer at
  best.
- Blizzard.j has an error where the return value does not conform to the
  base type of the function, this is a bug in war3's syntax checker because
  it only checks the type of the last return statement; I fix this by allowing
  this error to silently fail when loading Blizzard.j in the demo

2003/01/15
- make sure 'exitwhen' is only used in loops

2003/01/10
- need to check for 'config' in map scripts
- user-defined types can only extend from the handle native type
- only one (or zero) 'globals' section is allowed per file
- the globals section and type declarations must be before the function 
  declarations
- foward references of functions are illegal (must be declared before use); 
  but self-referential functions are legal (e.g., recursion)
