* add item.character_owner
* Address review comments
- Cleanup chr_from_wornitems
- Return BError if no character owner
* Add Target option TGTOPT_ALLOW_NONLOCAL
* Address review comments
- Remove `Core::chr_from_wornitems`
* Add pol tests for snooping
* Add tests for TGTOPT_ALLOW_NONLOCAL
* target_nonlocal_checklos pol test debugging
* target_nonlocal_checklos pol test debugging
- Remove destroy of obstacle
- Add a CheckLosAt call to error return
* target_nonlocal_checklos pol test debugging
- Enable USAN build
* undo test debugging changes
* use mobile for los when targetting snoopable items
* Update core-changes
* Persist SnoopScript for items on save
* Add snoop_script_ to Item::estimatedSize
* document SnoopScript script type
* Initial work on adding SnoopScript
* use message "That doesn't belong to you..." if lifting a snoopable item
* fix configfile changes
* Update core-changes
* Crash reproducer with methods
* potential crash fix
* removed ASan build, added core changes
* do not store valuestack reference before calling method to fix potential
dangling reference
* Take into account that the ValueStack can grow due to method calls.
* use std::filesystem to iterate over directories
realms folder can now contain files
* Ignore unix like hidden dir entries
* simplified recursive compilation
* Fix SetString packet hook method writing UTF-8 instead of CP-1252. Add a new method, SetUtf8String, for writing UTF-8.
* Add functions that operate on whole strings.
* Fix a couple of bugs and add unit tests.
* Do not convert if the string doesn't contain any UTF-8
* Convert 0x80..0x9f control characters, which don't exist in cp1252, to question marks
* Fix SetUtf8String writing too few bytes if the string contained multi-byte UTF-8 characters
* Remove extraneous parameter from TextCommandScript documentation
* Update changes and docs
* added escriptgrammar as external lib where it belongs. Silenced warnings.
* bscript compiler warning fixes
* special include file to get rid of gcc warnings about antlr4
* misc windows warnings
* time specifc warnings
* buildfix + apple warnings
* never trust apple
* windows debug build warnings
* some windows clang warnings
* last warning fix
* added os:GetEnvironmentVariable to list all environs or get a single one
* first version of restarting the core to test save/load
added environment variable to filter tests
* fixed string constructor (size_t instead of signed int)
* added string_view constructor
* splitted and extended restart tests
* added docs
* added pol.cfg setting to disallow environment variable access
* Change environmental variable access rules
Instead of defaulting to all values allowed, now defaults to none. May
specify either `*` to allow all variables, or a comma-delimited list.
* Address review changes
- Use Clib lower instead of boost
- const auto references
- Separate tests for access and finding env vars
* Update documentation
* Apply suggestions from code review
Co-authored-by: Kevin Eady <8634912+KevinEady@users.noreply.github.com>
Co-authored-by: Fernando Rozenblit <rozenblit@gmail.com>
* restructured pol testscripts
pkg based (dedicated pkgroot)
runs per pkg:
setup.ecl if exists
all scripts starting with "test"
cleanup.ecl if exists
return 1 for success everything else is an error
* Scripts can now be loaded and exported functions called
adapted testscripts to use this feature
critical script handling missing
* added support for used in critical scripts
* use weakptr instead of pid
moved keep_alive flag to uoexecutor
* Function and nethod accept now a argument list
* added docs
* missing docs
* faster shutdown time
* fixed typo
* fixed weird cornercase
* shorter test functions names, the length is limited, renamed
loadexported test script to have a dedicated testscript
* generate tiledata/multi for small boat
added generate scripts for generation..
adapted testdata set
* boat tests
* extended scripttests
scheduler will now always know about the loaded script
secured scheduler api
* cleanuo scripts for boat and npc
* shorter function for error return
fixed cleanup: npcs have gravestones, chars was one off and scripted
create of a char made it permanent logged in (until next restart),
which also means that it cannot be deleted
* bypass windows specific ecompile.cfg logic
* fix for parallel execution
* on windows its called .exe ..
* use target binary directly, so cmake can replace it with the actual path
use absolute path to testsuite
disabled temporary the copy of ecompile
* configure ecompile.cfg to add absolute path
* early sleepms calls can lead to endless waiting
* Code coverage (#260)
* play with coverage reports
* fix yml
* use 0 as default for gcov cmake var
* fixed used cov version, hopefully fixed now cmake
* demangle function names
* removed debug msg
* added a few polcore tests (basically just for coverage)
first set executor to noncritical before blocking
* added https://coveralls.io/github/polserver/polserver
* added a stackable item
added a few backpack insert tests
do coverage build only on push events not also for PR merge builds
* added storage tests..
docs need fixes, the Imps are not working at all
* fixed storage test to really move items
* added a house
corrected static/dynamic flag
created a few house tests
* updated yml file to new github api
* corrected coverage discord job name
* always put to runlist even if not necessary
* extended aos prop tests
* equip/unequip aos mod
* extra ci step for shard test fixtures and activated verbose shard test
* use extra ci step for all build configs, sorted testscripts for
execution
* fixed sorting
* added param to syslog to not print the context (cleaner testscript
visualization)
* added build targets for tests
* sleep api cleanup
* more aos property tests
* build for coveralls also on pullrequest
* readded debug state reset on schedule
* updated checkout ci action
* updated checkout in all ci runs
* Move more specialized expression types from optimizer to AST builder
VarStatement now handles its own value consumption
* Move assign-multisubscript-consume logic to the instruction generator
Renamed:
- GetMember to MemberAccess
- SetMember to MemberAssignment
- SetMemberByOperator to MemberAssignmentByOperator
- AssignVariableConsume to VariableAssignmentStatement
* Build on OSX
* Add macos-latest to build matrix
* Fix case sensitivity checks/tests
* On osx builds, cope with unpacking a double that might be followed by either an exponent or an error (as part of an array).
Also, remove static unpack(const char*) forms that were never called.
Co-authored-by: turleypol <turley@polserver.com>
* Make new compiler the default; update core-changes and breaking-changes
* Add docs for new config file options
* Do not allow configuration of CompareCompilerOutput through the config file. It only makes sense to change it temporarily on the command line.
Warn on assignment statements like this, for which the OG compiler and the new compiler generate different code:
x := x := expr;
This fixes https://github.com/polserver/polserver/issues/311
The OG compiler doesn't optimize the leftmost assignment to an 'assign-variable-consume',
so a listfile for the above looks like this:
0: decl global #0
1: #
2: global #0
3: global #0
4: :=
5: "hi"
6: := #
7: progend
The new compiler optimizes like this:
0: decl global #0
1: #
2: global #0
3: "hi"
4: :=
5: global0 :=
6: progend
For reference, this is what a single assignment looks like:
0: declare global #0
1: # (consume)
2: "hi" (string) len=2 offset=0x1
3: global #0 :=
4: progend
* Fixed: if too many parameters were passed in a function call, an incorrect error message was displayed, and the compiler could even crash.
Also updated all of the error messages related to function call parameters to include the function name.
Also: OG compiler debug info for foreach iterator changed to match actual variable name
Adds:
- ast/DebugStatementMarker: for "intrusive debug" (ecompile -i) instructions
- codegen/DebugBlockGuard: pushes and pops debug block #
- format/DebugStoreSerializer: writes .dbg and .dbg.txt files
- representation/DebugBlock: holds parent block # and local variable names for each block
- representation/DebugStore: holds all debug information
Adds:
- model/LocalVariableScopeInfo.h
Stores, for local variable blocks:
- the names of the local variables in the block
- the "base index" of those local variables within the current scope
The code generator uses these to clean up local variables as they go out of scope.
We also need this when writing debug information.
There is one part that differs from const declarations: 0-parameter function calls are allowed (by accident) as const values, but not for default parameter values.