Commit Graph

172 Commits (f7104a66a596224dbf4daf6385f9e637d53550ca)

Author SHA1 Message Date
Justin Clark-Casey (justincc) d728c1beb2 refactor LSL_EventTests.TestStateEntryEvent into single method to test compile 2013-11-16 01:25:25 +00:00
Justin Clark-Casey (justincc) 7cab41f422 refactor: replace verbose checks with String.IsNullOrEmpty where applicable.
Thanks to Kira for this patch from http://opensimulator.org/mantis/view.php?id=6845
2013-11-15 21:45:08 +00:00
Justin Clark-Casey (justincc) fd24147afa Add initial test for checking that specifying a parameter in LSL state_entry() generates a syntax error.
Same for other events to follow at a later date.
2013-11-09 00:36:05 +00:00
Justin Clark-Casey (justincc) 2b069a3b1e If the LSL state_entry() event definition contains any parameters, then generate syntax error as seen on the LL grid
This is done through the parser and so generates the same syntax error message if any parameters are wrongly specified for this event.
We were already enforcing event names in the parser.
This is only for state_entry so far as an initial test of the approach - appears to work correctly.
2013-11-02 00:39:12 +00:00
Justin Clark-Casey (justincc) 42bdf44658 Bump OPenSimulator version and assembly versions up to 0.8.0 Dev 2013-10-04 23:33:47 +01:00
Robert Adams 87ee0c395e Fix problem with modInvoke defined integer constants being build into
scripts as boxed integers rather than proper reference to a new LSLInteger.
This fixes an exception when using a registered integer constant in
a script.
2013-08-02 09:44:01 -07:00
Justin Clark-Casey (justincc) 0d25be3f81 Make C# scripts return correct error line and column numbers instead of failing because they have no linemap.
Adapted fix from http://opensimulator.org/mantis/view.php?id=6571
Thanks Nickel Briand
2013-03-13 00:19:37 +00:00
Diva Canto 4779f7d7d5 Deleted all AssemblyFileVersion directives 2013-02-19 17:14:55 -08:00
Justin Clark-Casey (justincc) 1f1da23097 Bump version and assembly version numbers from 0.7.5 to 0.7.6
This is mostly Bluewall's work but I am also bumping the general version number
OpenSimulator 0.7.5 remains in the release candidate stage.
I'm doing this because master is significantly adding things that will not be in 0.7.5
This update should not cause issues with existing external binary DLLs because our DLLs do not have strong names
and so the exact version match requirement is not in force.
2013-02-05 00:23:17 +00:00
Justin Clark-Casey (justincc) 5ac84a3793 Fix issue where lsl -> c# generation in co-operative termination mode did not correctly handle single statement versions of for, while and do-while loops.
Add regression tests to validate the fix.
This problem will not affect the default abort termination mode.
2013-01-30 03:52:22 +00:00
Justin Clark-Casey (justincc) f7feed4d44 Remove unnecessary System.Linq reference from Compiler.cs
Hopefully will fix windows build via compile.bat
2013-01-24 01:11:04 +00:00
Justin Clark-Casey (justincc) cf168194e5 If ScriptStopStrategy hasn't been set to co-op in [XEngine] config, then continue to generate C# that is functionality identical to historical generation
This is to eliminate disruption until co-op termination has been well-tested.
In non co-op mode, XEngine will continue to load DLLs of the existing Script class and the new XEngineScript class.
Moving to co-op mode still requires existing script DLL deletion to force recompilation, either manually or by setting DeleteScriptsOnStartup = true for one run.
This change also means that scripts which fail to initialize do not still show up as running scripts.
2013-01-23 02:36:43 +00:00
Justin Clark-Casey (justincc) c6ba27d096 Fix bug in generating termination checks in compound statement for loop.
Add regression test for this case.
2013-01-22 01:23:10 +00:00
Justin Clark-Casey (justincc) c8afc8523b Implement non-wait co-operative termination of scripts for XEngine in addition to termination on wait.
This involves inserting opensim_reserved_CheckForCoopTermination() calls in lsl -> c# translation at any place where the script could be in a loop with no wait calls.
These places are for, while, do-while, label, user function call and manual event function call.
Call goes through to an XEngineScriptBase which extends ScriptBase.
IEngine is extended to supply necessary engine-specific parent class references and constructor parameters to Compiler.
Unfortunately, since XEngineScriptBase has to be passed WaitHandle in its constructor, older compiled scripts will fail to load with an error on the OpenSim console.
Such scripts will need to be recompiled, either by removing all *.dll files from the bin/ScriptEngines/<region-id> or by setting DeleteScriptsOnStartup = true in [XEngine] for one run.
Automatic recompilation may be implemented in a later commit.
This feature should not yet be used, default remains termination with Thread.Abort() which will work as normal once scripts are recompiled.
2013-01-17 23:39:09 +00:00
Justin Clark-Casey (justincc) 22d4c52ffc Consistenly make NUnit test cases inherit from OpenSimTestCase which automatically turns off any logging enabled between tests 2012-11-24 03:15:24 +00:00
Diva Canto aeeaa3a0a9 Added AssemblyInfos to every dll in the OpenSim.Region namespace. 2012-11-14 11:09:43 -08:00
Melanie 8769e4ee73 Add a reference to OpenMetaverseType.dll to compiled script assemblies. 2012-08-18 19:08:38 +01:00
Mic Bowman a76a289d11 Adds support to ScriptModuleComms for region modules to export
constants to the script engine.
2012-07-31 10:45:37 -07:00
Justin Clark-Casey (justincc) 916e3bf886 Where possible, use the system Encoding.ASCII and Encoding.UTF8 rather than constructing fresh copies.
The encodings are thread-safe and already used in such a manner in other places.
This isn't done where Byte Order Mark output is suppressed, since Encoding.UTF8 is constructed to output the BOM.
2012-07-11 22:54:22 +01:00
Justin Clark-Casey (justincc) daad0a3e11 Revert "Bind ~ and ! operators in LSL tighter in order to resolve issues in LSL where these aren't evaluated propertly."
This reverts commit a8a9d13dc0.

Accidentally committed, this patch might not be the correct approach.
2012-06-11 23:30:58 +01:00
Justin Clark-Casey (justincc) a8a9d13dc0 Bind ~ and ! operators in LSL tighter in order to resolve issues in LSL where these aren't evaluated propertly.
Addresses http://opensimulator.org/mantis/view.php?id=3268
2012-06-09 05:11:08 +01:00
Mic Bowman 8b5298a62e Protect the scriptmodulecomms interface. 2012-03-15 13:37:43 -07:00
Mic Bowman 402ff75d78 Adds a new script command 'modInvoke' to invoke registered functions
from region modules. The LSL translator is extended to generate the
modInvoke format of commands for directly inlined function calls.

A region module can register a function Test() with the name "Test".
LSL code can call that function as "Test()". The compiler will translate
that invocation into modInvoke("Test", ...)
2012-03-15 13:16:02 -07:00
Justin Clark-Casey (justincc) b3449e998a Fix TestSyntaxError() and TestSyntaxErrorDeclaringVariableInForLoop()
They were all failing assertions but the exceptions these threw were caught as expected Exceptions.
I don't think we can easily distinguish these from the Exceptions that we're expecting.
So for now we'll do some messy manually checking with boolean setting instead.
This patch also corrects the assertions themselves.
2012-03-06 02:30:22 +00:00
Justin Clark-Casey (justincc) a92153ed88 Get all test methods in OpenSim.Region.ScriptEngine.Tests.dll to report that they're running 2012-03-06 02:21:19 +00:00
Justin Clark-Casey (justincc) 85198a45cb Fix off by one error in script error reporting. 2012-03-06 02:01:47 +00:00
Justin Clark-Casey (justincc) 038d1bf742 Add a regression test to compile and start a script. Remove Path.GetDirectoryName when getting assembly loading path in Compiler.CompileFromDotNetText().
The Path.GetDirectoryName call in Compiler.CompileFromDotNetText is unnecessary since AppDomain.CurrentDomain.BaseDirectory is always a directory.
Later path concatenation is already done by Path.Combine() which handles any trailing slash.
Removing Path.GetDirectoryName() will not affect the runtime but allows NUnit to work since it doesn't add a trailing slash to AppDomain.CurrentDomain.BaseDirectory.
2012-02-07 17:44:37 +00:00
Oren Hurvitz 0dd3281caf Optionally, don't delete previously compiled scripts on startup 2011-06-24 22:07:20 +01:00
BlueWall 4f25b73b57 Add configurable path to script engine assemblies
Adding ability to place script engine assemblies outside
	the codebase directories.

	Uses new [XEngine] option: ScriptEnginesPath = "path_to_assemblies"

Signed-off-by: Melanie <melanie@t-data.com>
2010-09-26 02:30:46 +01:00
Melanie 5270e54268 Comment and remove JScript support. Mono 2.7Dev and 2.8 no longer include the
needed libraries
2010-06-01 14:20:39 +01:00
unknown aa56953411 Compiler.cs contained method GetCompilerOutput which, apparently,
was not used, but exactly the same path was calculated inline.
This patch does some minor refactoring by replacing inline path
calculation with GetCompilerOutput. This doesn't actually affect anything,
just minor prettifying of the code
2010-04-28 12:52:36 +03:00
Melanie 1876ce90af FINALLY! Script compile errors now appear in the script error pane,
not in a funky debug window.
2009-12-22 09:24:01 +00:00
Justin Clark-Casey (justincc) 8f0db68424 Fix http://opensimulator.org/mantis/view.php?id=3874 - parenthesis in for statements cause script compile failures
This fixes a problem in OpenSim where statements of the form

for ((i = 0); (i < 10); (++i)) { ... }

do not compile even though they are valid lsl.
2009-11-20 18:39:39 +00:00
John Hurliman dd13fa361b * Misc. formatting cleanup for the previous patch
* Added the new AppDomainLoading variable to the [XEngine] section in the example config
2009-10-29 05:56:37 -07:00
Dan Lake 33448e4ba8 Optimizations 2009-10-29 05:39:18 -07:00
Jeff Ames f00126dc2d Add copyright header. Formatting cleanup. 2009-09-29 08:32:59 +09:00
Alan M Webb b7265abfae Added delay loop to give a newly created assembly time to appear. On
Linux (as an example), it is possible for the existence check to fail
because the file is not yet recognized by the file system. Although
the loop has a 250mS delay, in practise, the existence test in the for
loop is successful and no delay is introduced.

Next, this takes care of the two, unpredictable, situations where a
script fails to compile. The first is caused by an occasional SEGV in
the underlying mono VM while mcs is running, the second is caused by
file system latency.

Signed-off-by: dr scofield (aka dirk husemann) <drscofield@xyzzyxyzzy.net>
2009-09-23 14:49:34 +02:00
Melanie 090868ff4a Change the return value if the compiler to "object" to allow compilers
to return dynamic method objects
2009-08-31 11:42:54 +01:00
Melanie Thielker 2c3a1995fc Publish a method on ICompiler to generate the CIL assembly path
Cause group deeding to apply next owner perms
2009-06-21 18:38:12 +00:00
Jeff Ames a23d64dec1 Formatting cleanup. 2009-06-10 04:28:56 +00:00
Jeff Ames a7fcacf8f3 Formatting cleanup. Ignore some generated files. 2009-06-09 18:07:35 +00:00
Mike Mazur cda6b24668 Skip lone ident statments or for-loop assignments
SL's LSL supports lone idents:

    integer x;
    x;

as well as lone idents in for-loop assignments:

    for (x; x < 10; x++) { ... }

while those are errors in C# (MONO at least). This patch skips lone
idents in such places.

Fixes Mantis #3042.
2009-06-07 10:22:55 +00:00
Mike Mazur 48bc2f3a42 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.
2009-06-07 10:22:41 +00:00
Melanie Thielker 9f932a4205 Thank you, thomax, for a patch to provide finer-grained access control to
scripting.
Fixes Mantis #2862
2009-06-05 09:47:42 +00:00
Jeff Ames 840de6c036 Minor: Change OpenSim to OpenSimulator in older copyright headers and LICENSE.txt. 2009-06-01 06:37:14 +00:00
Dr Scofield 1d02636c27 cleaning out warnings.
NOTE: we currently have a gazillion warnings caused stuff flagged as
"obsolete" (OGS1 stuff) --- what's up with that?
2009-05-22 14:57:00 +00:00
Melanie Thielker fb3d5770dd Make the LSL HTTP server create and give out URLs to scripts 2009-05-13 20:32:14 +00:00
Melanie Thielker 0377ddb5de Add events to IScriptEngine to notify scripting modules of the removal
of objects from the scene, and of scripts from objects. This facilitates
the development of modules that can register prims with externall servers
for inbound email and XMLRPC. Currently implemented in XEngine only.
Also applying cmickeyb's compiler locking patch, since it seems risk-free.
2009-04-10 19:07:41 +00:00
Melanie Thielker f17732346e Fix a nullref when compiling non-LSL scripts 2009-04-02 16:27:16 +00:00
Justin Clarke Casey 3fe010d716 * minor: remove one mono compiler warning 2009-03-27 20:03:20 +00:00
Melanie Thielker 706a2df516 Read the .map files in on sim startup. Also clean them up when an assembly
is deleted.
2009-03-26 15:06:20 +00:00
Melanie Thielker eb6c1ae0c1 Avoid preprocessing scripts on region restart just to generate the line
number map. Instead, write the map to a file for later use. That is not
yet used, so currently runtime errors after a sim restart will have wrong
line numbers
2009-03-26 14:49:39 +00:00
Dr Scofield 0bb3d2e6d7 cleanup 2009-03-25 07:36:56 +00:00
Melanie Thielker c268b71f4b Thank you, dslake, for a patch that speeds up the Delete Old Files option
in the compiler. Committed with changes.
Fixes Mantis #3325
2009-03-24 12:18:31 +00:00
Justin Clarke Casey acad0328b2 * Make all coded defaults match settings in OpenSim.ini.example
* In most cases, the setting in OpenSim.ini.example is taken as the canonical one since this is the file virtually everyone ends up using
* OpenSim will start up with a blank OpenSim.ini, in which case sqlite is the default database (as before)
2009-03-11 18:02:22 +00:00
Mike Mazur 8606d7d126 Remove chained tests in BasicGridTest.cs.
It's good practice to isolate unit tests so their outcome (pass/fail)
does not depend on whether another test has been run/passed/failed. A
method is used to populate the DB independently for each test, and a
TearDown method cleans up the database after each test.

Also adding extra comment in C-style comment test.
2009-03-11 00:33:34 +00:00
Justin Clarke Casey 36e648a37a * minor: Remove most mono compiler warnings 2009-02-25 20:53:02 +00:00
Mike Mazur 64c14d2475 Allow /* C-style comments */ in LSL scripts.
This fixes Mantis #3199. opensim-libs SVN r87 contains the corresponding
changes.
2009-02-25 05:37:57 +00:00
Charles Krinke ed7256ac0c Fixes Mantis #3187. Thank you kindly, DoranZemlja for a patch that:
Deals with the multiple warning side affect introduced earlier.
2009-02-25 04:29:02 +00:00
Jeff Ames f175cb7e8c Update svn properties, add copyright headers, minor formatting cleanup. 2009-02-23 10:36:16 +00:00
Charles Krinke 08c76989a7 Mantis#3187. Thank you kindly, DoranZemlja for a patch that:
Adds a warning for an LSL construct that exploits a
popular list memory saving hack.
2009-02-23 02:43:51 +00:00
Charles Krinke 8f55b9d735 Mantis#3218. Thank you kindly, TLaukkan (Tommil) for a patch that:
* Added log4net dependency to physxplugin in prebuild.xml.
* Added missing m_log fields to classes.
* Replaced Console.WriteLine with appropriate m_log.Xxxx
* Tested that nant test target runs succesfully.
* Tested that local opensim sandbox starts up without errors.
2009-02-22 20:52:55 +00:00
Jeff Ames 818af9d482 Refactor log4net logger handling in script engine. (#3148) 2009-02-22 01:26:18 +00:00
Mike Mazur a42499c947 Thanks DoranZemlja for a patch implementing non-shortcircuiting in
logical and and logical or in LSL. Fixes Mantis #3174.
2009-02-20 07:40:36 +00:00
Melanie Thielker 0086f9bd92 Fix the windows sharing violations on script crossings 2009-02-18 22:32:25 +00:00
Dr Scofield d97dd2bdb4 cleanup 2009-02-16 20:13:59 +00:00
Dr Scofield 4e1f060dd1 From: alan webb <alan_webb@us.ibm.com> & dr scofield <drscofield@xyzzyxyzzy.net>
This changeset fixes a rather nasty script compile bug that manifests
itself under heavy load.
2009-02-16 20:01:54 +00:00
Mike Mazur 9a33a4733e Thanks Tommi Laukkanen for a patch that allows the
CSCodeGeneratorTest.TestStringsWithEscapedQuotesAndComments unit test to
pass on Windows. Fixes Mantis #3104.
2009-02-09 00:59:02 +00:00
Dr Scofield 9b66108081 This changeset is the step 1 of 2 in refactoring
OpenSim.Region.Environment into a "framework" part and a modules only
part. This first changeset refactors OpenSim.Region.Environment.Scenes,
OpenSim.Region.Environment.Interfaces, and OpenSim.Region.Interfaces
into OpenSim.Region.Framework.{Interfaces,Scenes} leaving only region
modules in OpenSim.Region.Environment.

The next step will be to move region modules up from
OpenSim.Region.Environment.Modules to OpenSim.Region.CoreModules and
then sort out which modules are really core modules and which should
move out to forge.

I've been very careful to NOT BREAK anything. i hope i've
succeeded. as this is the work of a whole week i hope i managed to
keep track with the applied patches of the last week --- could any of
you that did check in stuff have a look at whether it survived? thx!
2009-02-06 16:55:34 +00:00
Homer Horwitz 7083be07b0 Allow empty statements in LSL (; followed by ;). Fixes Mantis#2320 2008-12-07 19:20:45 +00:00
Melanie Thielker 4636e5fc01 Remove a line of debug info in XEngine that i missed 2008-12-03 03:28:28 +00:00
Melanie Thielker 5a7ffb7298 Remove some of the XEngine chattiness 2008-12-02 12:12:50 +00:00
Melanie Thielker af5e9147f0 Start scripts in attachments only after a successful attach. Elimininate
a gratuitious asset fetch when region crossing.
2008-11-29 14:16:09 +00:00
Dr Scofield dd37fbb137 fixing warnings in YProlog language support 2008-11-17 11:16:24 +00:00
Teravus Ovares c453a41fb5 * Set defaults on the allowed LSL Compilers to 'lsl' unless you've specified otherwise. 2008-11-12 04:49:06 +00:00
Melanie Thielker 833f5e8bed Refactor IEventReceiver back into IScriptEngine 2008-11-08 02:24:34 +00:00
Justin Clarke Casey 1e527f3e86 * Fix test failure in CSCodeGeneratorTest.TestJumps()
* Need new NoOp(); generated part
* Not Homer's fault - this test ain't running under Windows! (needs fixing!)
2008-11-06 23:32:39 +00:00
Melanie Thielker 9e4fc8e03a Mantis #2571
Thank you, idb, for a patch that fixes the jump function in LSL.
2008-11-06 23:10:49 +00:00
Mike Mazur 6e14d1005a Prefix LSL variables which are C# keywords with @ instead of _ when translating from LSL to C#. Thanks idb for the patch. Fix issue 2546. 2008-11-04 01:30:39 +00:00
Melanie Thielker 44852158f2 Mantis #2518
Thank you, idb, for a patch that fixes the conflicts of lsl identifiers
with c# keywords
2008-11-01 23:50:19 +00:00
Melanie Thielker 8d2ec1ac71 Adapt tests to new friendly errors and correct line numbers 2008-10-07 22:25:55 +00:00
Melanie Thielker 638cce09d1 Restore "friendly errors" to the XEngine 2008-10-07 21:59:56 +00:00
Melanie Thielker 1f8888a287 Update unit tests 2008-09-27 05:58:52 +00:00
Melanie Thielker 85068dae60 Add friendly error messages to both engines. 2008-09-27 05:31:43 +00:00
Melanie Thielker ec16750a87 Mantis #2277
Patch up a type name change in libomv. Thanks for tracking that down, idb
2008-09-26 23:38:59 +00:00
Melanie Thielker d8c470343e Compiler Connection! One world, one compiler! 2008-09-26 16:11:53 +00:00
Jeff Ames 3f79e6b3e7 Update svn properties, formatting cleanup. 2008-09-23 23:14:00 +00:00
Melanie Thielker d95794d05c Refactor XEngine parser as per suggestions from mikem 2008-09-23 13:28:17 +00:00
Melanie Thielker 94aaf67dfa Change the scirpt engine loading mechanism. Script engines are now
ordinary region modules and are able to coexist in one instance.
See http://opensimulator.org/wiki/ScriptEngines for details. There were
changes to OpenSim.ini.example, please note DefaultScriptEngine.
Also see the User docs and FAQ on the Wiki. Default is DotNetEngine.
2008-09-21 21:47:00 +00:00
Justin Clarke Casey a28a478546 * minor: recomment the console c# script printout I accidentally left in on the last ocmmit 2008-09-15 20:58:16 +00:00
Justin Clarke Casey 2b9e115fd7 * minor: eat up some yummy warnings 2008-09-15 20:50:57 +00:00
Sean Dague ce0a8d7bef changes to Test directory structure per opensim-dev conversation 2008-09-08 20:34:45 +00:00
Teravus Ovares 7d89e12293 * This is the fabled LibOMV update with all of the libOMV types from JHurliman
* This is a HUGE OMG update and will definitely have unknown side effects.. so this is really only for the strong hearted at this point.  Regular people should let the dust settle.
* This has been tested to work with most basic functions. However..   make sure you back up 'everything' before using this.  It's that big!  
* Essentially we're back at square 1 in the testing phase..  so lets identify things that broke.
2008-09-06 07:52:41 +00:00
Melanie Thielker 2fbebbb644 First batch of the unit test changes for the new constants semantics
in XEngine. This turned out to be a lot of work to catch up.
2008-09-02 06:02:14 +00:00
Melanie Thielker b7a4613a0d Correct the representation of the automatic null string 2008-09-02 04:23:01 +00:00
Melanie Thielker e2a0a04beb Remove the ((bool)()) cast, since it can make c# barf 2008-09-02 04:15:06 +00:00
Melanie Thielker 146f469524 Add an explicit cast to bool for the if expression so that any base types
that slip in will not cause it to break
2008-09-02 00:03:16 +00:00
Melanie Thielker a5d2674a43 This is an attempt to fix the handling of constants in LSL.
It wraps constants in new LSLType(x), so that lists with
constant values are processed correctly. Contains changes to
the lsl.parser.cs that are not (yet) reflected in opensim-libs,
since this experimental patch affects XEngine only. Also contains
nuts.
2008-09-01 23:33:12 +00:00
Melanie Thielker fda5457996 Maintis #2078
Thank you, ralphos, for a patch that corrects the handling of compiler
warnings in the XEngine, which were erronoeously reported as errors!
2008-08-29 19:57:01 +00:00
Jeff Ames 6ef9d4da90 Formatting cleanup. 2008-08-18 00:39:10 +00:00