Age | Commit message (Collapse) | Author |
|
Trigger an error when trying to define a preexisting signal in GDScript
|
|
Fix false positive "Unreachable code" warning for loops
|
|
|
|
Depending on the conditional statements of the 'for' and 'while' loops,
their body may not even execute once. For example:
func a():
var arr = []
for i in arr:
return i
# can be reached, but analysis says cannot
return -1
func b():
var should_loop = false
while should_loop:
return 1
# can be reached, but analysis says cannot
return 0
The parser will complain that the statements after the comment cannot
be reached, but it is clearly possible for our scenario. This is
because the parser falsely assumes that the loop body will always
execute at least once.
Fix the code to remove this assumption for both of those loops.
|
|
(cherry picked from commit 2173d041af711c111d60d1fc1f45f96f4f8c7271)
|
|
|
|
Style: Remove new line at block start, enforce line between functions, enforce braces in if and loop blocks
|
|
Using clang-tidy's `readability-braces-around-statements`.
https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
|
|
set parser error when infer type is null
|
|
I couldn't find a tool that enforces it, so I went the manual route:
```
find -name "thirdparty" -prune \
-o -name "*.cpp" -o -name "*.h" -o -name "*.m" -o -name "*.mm" \
-o -name "*.glsl" > files
perl -0777 -pi -e 's/\n}\n([^#])/\n}\n\n\1/g' $(cat files)
misc/scripts/fix_style.sh -c
```
This adds a newline after all `}` on the first column, unless they
are followed by `#` (typically `#endif`). This leads to having lots
of places with two lines between function/class definitions, but
clang-format then fixes it as we enforce max one line of separation.
This doesn't fix potential occurrences of function definitions which
are indented (e.g. for a helper class defined in a .cpp), but it's
better than nothing. Also can't be made to run easily on CI/hooks so
we'll have to be careful with new code.
Part of #33027.
|
|
Which means that reduz' beloved style which we all became used to
will now be changed automatically to remove the first empty line.
This makes us lean closer to 1TBS (the one true brace style) instead
of hybridating it with some Allman-inspired spacing.
There's still the case of braces around single-statement blocks that
needs to be addressed (but clang-format can't help with that, but
clang-tidy may if we agree about it).
Part of #33027.
|
|
shadowed var warning in nested block bug fix
|
|
Using clang-tidy's `modernize-use-nullptr`.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html
|
|
Using `clang-tidy`'s `modernize-use-default-member-init` check and
manual review of the changes, and some extra manual changes that
`clang-tidy` failed to do.
Also went manually through all of `core` to find occurrences that
`clang-tidy` couldn't handle, especially all initializations done
in a constructor without using initializer lists.
|
|
|
|
ThakeeNathees/range-crash-with-non-numeric-const-fix
range() with non-numeric const argument crash fix
|
|
regression: var declaration type info parser bug fix
|
|
|
|
|
|
Part of #33027.
|
|
Part of #33027, also discussed in #29848.
Enforcing the use of brackets even on single line statements would be
preferred, but `clang-format` doesn't have this functionality yet.
|
|
ThakeeNathees/saveing-cyclic-inheritance-crash-fix
Fix: saving gdscript with cyclic inheritance crash the editor
|
|
Allow using integer vectors for iteration and make range() use them
|
|
Fix: #38552
|
|
|
|
Fix: #9609
|
|
|
|
Fix object leaks caused by unfulfilled yields
|
|
fix: dict2inst crash when constructor has arguments
|
|
GDScript class var type resolve bug fixed
|
|
python like string escape implemented
|
|
parser error for static func access non-static variables
|
|
A minor bugfix
|
|
|
|
Now the stack saved in a `GDScriptFunctionState` is cleared as soon as the `yield()` operation is known not to be resumed because either the script, the instance or both are deleted.
This clears problems like leaked objects by eliminating cases of circular references between `GDScriptFunctionState`s preventing them and the objects they refer to in their saved stacks from being released. As an example, this makes using `SceneTreeTimer` safer.
Furthermore, with this change it's now possible to print early warnings about `yield()`s to released script/instances, as now we know they won't be successfully resumed as the condition for that happens. However, this PR doesn't add such messages, to keep the observed behavior the same for the time being.
Also, now a backup of the function name in `GDScriptFunctionState` is used, since the script may not be valid by the time the function name is needed for the resume-after-yield error messages.
|
|
Improved go-to definition (Ctrl + Click)
|
|
Co-Authored-By: Bojidar Marinov <bojidar.marinov.bg@gmail.com>
|
|
Make `dict2inst` to work with arbitrary `_init` parameters
|
|
Fix: #38408
|
|
|
|
Removed noisy ERR check from Multiplayer API.
|
|
This is achieved by skipping initializer call while creating an instance
of a GDScript. This is implemented by passing -1 as an argument count
to `_new` and interpreting any value below 0 to mean that the initializer
should not be called during instantiation, because internal members of
an instance are going to be overridden afterwards.
|
|
|
|
Fix leaked objects when game ends with yields in progress
|
|
Fix for marking assert lines as safe bug
|
|
|
|
|
|
Calling _reduce_node_type from GDScriptParser::_parse_block for assert
was using a current class with a scope that didn't include all
functions. Now calling in GDScriptParser::_check_block_types uses the
right class type. We also now check the assert node message. The assert
line was added to the set_errors associated with assert, since before
the error would be reported on the next line
|
|
Fix: export var type reduce() implemented
|
|
|