Age | Commit message (Collapse) | Author |
|
GDScript: Fix function signature check for self calls
|
|
GDScript: Use analyzer data to decide assignment conversion
|
|
|
|
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.
|
|
|
|
|
|
Also add a GDScript test for this case.
|
|
This changes the error message to be more clear on the output files and
also fixes an issue with the relative path of the offending file that
was not trimmed correctly.
|
|
|
|
Using codespell 2.0.0.
Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
curvelinear
dof
doubleclick
fave
findn
GIRD
leapyear
lod
merchantibility
nd
numer
ois
ony
que
seeked
synching
te
uint
unselect
webp
EOF
$ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"
$ git diff // undo unwanted changes
```
|
|
Add a unit test suite for GDScript
|
|
|
|
GDScript: Fix temporary value not released when used as a dictionary key
|
|
GDScript: Fix crash caused by uninitialized temp stack slots
|
|
This adds initialization to every typed temporary stack slot at the
beginning of the function call instead of emitting instructions, since
those might be in a conditional branch and not be called.
|
|
This changes the types of a big number of variables.
General rules:
- Using `uint64_t` in general. We also considered `int64_t` but eventually
settled on keeping it unsigned, which is also closer to what one would expect
with `size_t`/`off_t`.
- We only keep `int64_t` for `seek_end` (takes a negative offset from the end)
and for the `Variant` bindings, since `Variant::INT` is `int64_t`. This means
we only need to guard against passing negative values in `core_bind.cpp`.
- Using `uint32_t` integers for concepts not needing such a huge range, like
pages, blocks, etc.
In addition:
- Improve usage of integer types in some related places; namely, `DirAccess`,
core binds.
Note:
- On Windows, `_ftelli64` reports invalid values when using 32-bit MinGW with
version < 8.0. This was an upstream bug fixed in 8.0. It breaks support for
big files on 32-bit Windows builds made with that toolchain. We might add a
workaround.
Fixes #44363.
Fixes godotengine/godot-proposals#400.
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
|
|
GDScript: Add support for builtin static method calls
|
|
|
|
This tests run-time script loading.
|
|
Highlight control flow keywords with a different color
|
|
|
|
Implement LSP didDeleteFiles & make parser aware of sub-nodes
|
|
Fix GDScript Tokenizer being very strict about the number of underscores
|
|
|
|
This makes them easier to distinguish from other keywords.
|
|
Fix constants at function scope are not defined as constants for completion
|
|
Rename GDScript test script filenames to use `snake_case`
|
|
Follow-up to #38736 (these uses were likely added after this PR was merged).
|
|
In attribute expressions (`a.b`) it's possible that the base has an
incorrect syntax and thus become a nullptr expression in the tree. This
commit add the check for this case to fail gracefully instead of
crashing.
|
|
|
|
- Lambdas are always callables (no specific signature match).
- Captures from the current context are evaluated.
|
|
Lambda syntax is the same as a the function syntax (using the same
`func` keyword) except that the name is optional and it can be embedded
anywhere an expression is expected. E.g.:
func _ready():
var my_lambda = func(x):
print(x)
my_lambda.call("hello")
|
|
We've been using standard C library functions `memcpy`/`memset` for these since
2016 with 67f65f66391327b2967a20a89c3627e1dd6e84eb.
There was still the possibility for third-party platform ports to override the
definitions with a custom header, but this doesn't seem useful anymore.
|
|
The current code style guidelines forbid the use of `auto`.
Some uses of `auto` are still present, such as in UWP code (which
can't be currently tested) and macros (where removing `auto` isn't
easy).
|
|
Fix mismatch between String and StringName in dictionary keys
|
|
Make LSP update the filesystem for changed scripts
|
|
|
|
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.
|
|
GDScript: Use special stack space for temporaries to reduce type changes
|
|
|
|
|
|
|
|
So the stack slots perform less type changes, which is useful for
future optimizations.
|
|
This updates global classes and exposes base member variables.
Fixes #39713
|
|
Blackiris/fix-corrupt-scene-when-export-has-setter
Fix corrupt scene when export var has setter
|
|
|
|
|
|
|
|
|
|
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.
|