Age | Commit message (Collapse) | Author |
|
Since enums resolve to a dictionary at runtime, calling dictionary
methods on an enum type is a valid use case. This ensures this is true
by adding test cases. This also makes enum values be treated as ints
when used in operations.
|
|
This makes sure that assigning values to enum-typed variables are
consistent. Same enum is always valid, different enum is always
invalid (without casting) and assigning `int` creates a warning
if there is no casting.
There are new test cases to ensure this behavior doesn't break in
the future.
|
|
|
|
'Compiler bug: unresolved assign' errors
|
|
cdemirer/fix-type-mutation-upon-assignment-with-operation
|
|
cdemirer/fix-member-property-only-getter-cant-be-set
|
|
cdemirer/fix-member-property-getter-dont-update-subscript-chain-root
|
|
Leak is caused by cyclic reference
|
|
Happy new year to the wonderful Godot community!
|
|
|
|
|
|
|
|
Also:
- Adds two stress tests to test_string.h
- Changes to .empty() on std::strings
|
|
|
|
Inline getters & setters are now FunctionNodes.
Their names are set in the parser, not in the compiler.
GDScript-Analyzer will now run through getter and setter.
Also report wrong type or signature errors regarding getset properties.
Added GDScript tests for getters and setters.
#53102
|
|
|
|
It was wrongly updating the assigned value with the result of the
operation.
|
|
|
|
|
|
Blackiris/fix-assignment-with-operator-on-type-member
Fix assignment with operator on type member
|
|
Which is useful when the key isn't a valid identifier, such as keys with
spaces or numeric keys.
|
|
Fix loading of interdependent autoloads
|
|
Move multiplayer classes to "core/multiplayer" subdir.
Move the RPCConfig and enums (TransferMode, RPCMode) to a separate
file (multiplayer.h), and bind them to the global namespace.
Move the RPC handling code to its own class (RPCManager).
Renames "get_rpc_sender_id" to "get_remote_sender_id".
|
|
|
|
Move the autoload resolution to runtime by loading it into the stack
with an extra instruction. This allows an autoload to use another
autoload singleton independent of load order.
|
|
|
|
|
|
|
|
|
|
|
|
- Move the "sync" property for RPCs to RPCConfig.
- Unify GDScript annotations into a single one:
- `@rpc(master)` # default
- `@rpc(puppet)`
- `@rpc(any)` # former `@remote`
- Implement three additional `@rpc` options:
- The second parameter is the "sync" option (which also calls the
function locally when RPCing). One of "sync", "nosync".
- The third parameter is the transfer mode (reliable, unreliable,
ordered).
- The third parameter is the channel (unused for now).
|
|
|
|
|
|
|
|
Fix some warnings raised by GCC-11.1
|
|
Since there might be tricky cases in the analyzer (in the case of unsafe
lines) which would need to be properly checked again. Instead, this
splits the code generator in two functions and use information set by
the analyzer to tell which function to use, without a need to re-check.
|
|
|
|
GDScript: Fix temporary value not released when used as a dictionary key
|
|
|
|
|
|
|
|
|
|
There was a mixup between String and StringName keys. Now they're
clearly separated. This also means you have to consider which type
you're using for the dictionary keys and how you are accessing them.
|
|
So the stack slots perform less type changes, which is useful for
future optimizations.
|
|
There's now only 3 addressing modes: stack, constant, and member.
Self, class, and nil are now present respectively in the first 3 stack
slots. Global and class constants are moved to local constants when
compiling. Named globals is only present on editor to use on tool
singletons, so its use now emits a new instruction to copy the global to
the stack.
This allow us to further optimize the VM later by embedding the
addressing modes in the instructions themselves, which is better done
with less permutations.
|
|
|
|
|
|
Also fix the enum type in variables to be integer.
|
|
- Use `Array[type]` for type-hints. e.g.:
`var array: Array[int] = [1, 2, 3]`
- Array literals are typed if their storage is typed (variable
asssignment of as argument in function all). Otherwise they are
untyped.
|
|
Fixed match test expression for temporaries
|