From 48bc2f3a4299390538efeb1c0bd97424cfa1ea28 Mon Sep 17 00:00:00 2001 From: Mike Mazur Date: Sun, 7 Jun 2009 10:22:41 +0000 Subject: Allow empty assignment in for-loop For loops with no assignment are no longer syntax errors. For example, this is now valid: for ( ; i < 10; i++) { ... } Corresponding changes to lsl.{lexer,parser} in r99 in opensim-libs. Fixes Mantis #2501. Fixes Mantis #2884. --- OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs') diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs index d917939..ab9968f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs +++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs @@ -671,9 +671,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools retstr += GenerateIndented("for (", fl); + // It's possible that we don't have an assignment, in which case + // the child will be null and we only print the semicolon. // for ( x = 0 ; x < 10 ; x++ ) // ^^^^^^^ - retstr += GenerateForLoopStatement((ForLoopStatement) fl.kids.Pop()); + ForLoopStatement s = (ForLoopStatement) fl.kids.Pop(); + if (null != s) + { + retstr += GenerateForLoopStatement(s); + } retstr += Generate("; "); // for ( x = 0 ; x < 10 ; x++ ) // ^^^^^^^^ -- cgit v1.1