Commit Graph

1269 Commits

Author SHA1 Message Date
Rémi Verschelde 26a584179c
Merge pull request #74794 from lawnjelly/gdscript_parser_hashtable
[3.x] Use hash table for GDScript parsing
2023-03-12 16:19:07 +01:00
lawnjelly 19f2006ec0 Use hash table for GDScript parsing
GDScript now uses hash table for lookup of type lists / functions / keywords, instead of linear String comparisons.
2023-03-12 14:55:31 +00:00
lawnjelly ef914dac31 GDScriptParser - don't use index operator on linked list
Index operators are super slow with linked lists. This came up in profiling the parsing, iterating sequentially using iterator is much faster.
2023-03-11 17:05:12 +00:00
Rémi Verschelde 1426cd3b3a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".

Backported from #70885.
2023-01-10 15:26:54 +01:00
Rémi Verschelde aa9265928c
Merge pull request #70786 from Calinou/gdscript-fix-dict2inst-init-parameters-3.x
[3.x] Make `dict2inst` to work with arbitrary `_init` parameters
2023-01-09 14:18:30 +01:00
SaracenOne 9fa4d3b1b0 Fix local variables not showing when breaking on final line
(cherry picked from commit 657b9b6596)
2023-01-09 09:46:27 +01:00
Andrii Doroshenko (Xrayez) accdd575f6
Make `dict2inst` to work with arbitrary `_init` parameters
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.
2022-12-31 23:57:35 +01:00
Lamia a412922c2b
LSP: Improve handling of file URI scheme
Fixes #63205.

(cherry picked from commits 3fa943fe23,
42a16ef76e and
2ff69d6181)
2022-12-12 15:58:20 +01:00
ray90514 7afbd5904e
Fix Script editor completion doesn't suggest members of a script for type hints 2022-12-12 13:36:32 +01:00
Hugo Locurcio 5e0ef339ff Document `print_stack()` and `get_stack()` requiring a debugger connection
(cherry picked from commit 530e31d4a3)
2022-12-12 14:55:23 +08:00
smix8 d955d4a1c1 Fix GDScript export hint for Navigation2D layer names 2022-10-04 10:32:57 +02:00
dzil123 1e4f47ffe0 Fix variables highlighting as types 2022-09-17 01:24:19 -07:00
Hugo Locurcio 60031ea275 Improve `range_lerp()` and related methods documentation
(cherry picked from commit bd19c9a95c)
2022-08-08 09:44:37 +02:00
Rémi Verschelde 14c9325b5d
Merge pull request #62408 from Razoric480/raz/fix-no-cache
[3.x] Fix nested resources being cached if no-cache argument used
2022-08-05 23:43:54 +02:00
Rémi Verschelde 5197dc6c9e
Merge pull request #61993 from kdiduk/gdscript-fix-inner-class-on-single-line
Fix inner class parsing when statement after colon is on the same line
2022-08-05 22:36:21 +02:00
Rémi Verschelde 0a8d5d7098 Bump version to 3.6-beta 2022-08-05 18:51:38 +02:00
Rémi Verschelde 818f1eed31 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 14:53:37 +02:00
Dallon Feldner a99cc8bc29 Don't print redundant errors when parsing GDScript 2022-07-22 11:02:29 -05:00
Haoyu Qiu a3b282c6cc Fix doc for print_debug 2022-07-20 21:17:56 +08:00
Francois Belair 2ceb93bbef Fix custom res caching sub-res even if no-cache
Fixes #59686, fixes #59752
2022-07-13 11:18:26 -04:00
janglee 00c6cdd793 GDScript: Fix autocompletetion showing class names with an underscore
Fixes #35469.
2022-07-05 12:29:23 +02:00
Rémi Verschelde 06f4a28306 Update docs links still pointing to 3.4 2022-06-29 12:03:04 +02:00
Kirill Diduk 5bcc3d476c Fix parsing inner class declaration when "pass" keyword is on the same line
Implement a special case for allowing "pass" keyword in one-liner class
declaration, to be consistent with Python style.

```
class TestClass: pass
```

This commit fixes #56703
2022-06-21 10:04:26 +02:00
Haoyu Qiu b43fdea0d5 Classref typo fixes and improvements 2022-06-17 15:19:31 +08:00
Kurt Lachmann c07d1d0de8 Use insertText from the internal autocompletion
* GDScriptLanguage::complete_code already adds parentheses to function calls, and does this a lot smarter than the language server right now.
* Instead of the previous naive approach we now reuse the same logic as the internal editor.
* For this to have any effect we also have to send the `insertText` field already during the completionRequest and not only during resolve.

(cherry picked from commit bbb07ff8cb)
2022-06-16 10:11:33 +02:00
smix8 8bd7c6188b [3.5] Update NavigationServer backport
Backports features and bugfixes from current Godot 4.0 to 3.5 and brings functions and codebase of both version largely in sync to make tutorials more compatible and future backports easier.
2022-06-14 05:55:14 +02:00
SnailRhymer b94a0d486d Make Lookup Symbol recognize assert, preload, and yield in the script editor 2022-06-01 22:21:36 +01:00
Rémi Verschelde 88dba8e625 Fix typos with codespell
Using codespell 2.2-dev from current git.
2022-05-23 21:41:46 +02:00
George Marques 3a8f2dda01
GDScript: Keep builtin method info on release builds
This is so type inference still works properly after exporting the
project.
2022-05-17 11:01:12 -03:00
Eduardo Rodrigues 2398db0f34 Improve description for GDScript built-in range
Rewrites the definition of how the function works.
Reworks the style of the examples and adds a negative range example.
Changes the while loop to a range loop in the array backwards example.

(cherry picked from commit b2841ce194)
2022-05-16 17:14:43 +02:00
Rémi Verschelde 5e693b6d84 Fix warnings found by Emscripten 3.1.10
Fix `-Wunused-but-set-variable`, `-Wunqualified-std-cast-call`, and
`-Wliteral-range` warnings.

(cherry picked from commit d8935b27a9)
2022-05-16 16:38:26 +02:00
Rémi Verschelde c3065e2186
Merge pull request #60773 from timothyqiu/rand-doc 2022-05-05 18:10:14 +02:00
Haoyu Qiu 84cc0c9c47 Improve documentation of `rand_range` 2022-05-05 21:52:30 +08:00
Haoyu Qiu 86b14496b1 Document lerp_angle behavior when angles are approximately PI apart
(cherry picked from commit 492903a0b2)
2022-05-05 13:45:29 +02:00
Haoyu Qiu acf9870397 Fix incorrect usage for some export variables 2022-04-29 20:12:47 +08:00
Haoyu Qiu d088128b43 Remove duplicate editor settings definitions 2022-04-27 15:26:46 +08:00
George Marques 663978e8ba
GDScript: Properly check type info in release builds
This makes sure native methods and properties have the actual type
checked to compare for compatibility and inference.
2022-04-01 18:20:37 -03:00
Hugo Locurcio b087538119
Add an XML schema for documentation
This makes it easier to spot syntax errors when editing the
class reference. The schema is referenced locally so validation
can still work offline.

Each class XML's schema conformance is also checked on GitHub Actions.
2022-03-16 23:01:02 +01:00
Haoyu Qiu 871a73341b Fix crash when is-operator right-hand-side is null 2022-03-13 23:17:25 +08:00
George Marques f2166ba92f
GDScript: Don't coerce default values to the export hint type
This behavior is inconsistent with non tools builds and can create
issues. Instead, a warning is emitted if there's a type mismatch. If the
type can't be converted, an error is shown instead.

For the editor it gives a converted value to avoid issues with the
property editor, which expects the correct type.
2022-03-02 12:26:17 -03:00
George Marques a3fe028809
GDScript: Infer variable types on release
Otherwise this creates an inconsistency between debug and release
builds, potentially leading to crashes.
2022-02-09 09:07:18 -03:00
Haoyu Qiu 8a42ab7a85 Fix crash when `is` keyword is tested against a String variable 2022-01-14 23:37:04 +08:00
Rémi Verschelde a627cdafc5
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-13 15:54:13 +01:00
Rémi Verschelde 79aa64efff
Merge pull request #56296 from timothyqiu/pending-func-states 2022-01-12 16:47:56 +01:00
Max Hilbrunner 717801c9cb Fix docs links in 3.x after docs reorg 2022-01-05 11:54:52 +01:00
Hugo Locurcio a6db1c758a
Improve `lerp()`, `lerp_angle()` and `inverse_lerp()` documentation
This clarifies that `lerp()` can be used both for interpolation
and extrapolation.
2022-01-04 00:41:37 +01:00
Haoyu Qiu 53af7ee482 Clear pending function states when reloading GDScript 2021-12-28 15:29:21 +08:00
Francois Belair b8f2f48d86
Remove extraneous return to LSP
(cherry picked from commit ad01201f34)
2021-12-09 22:08:48 +01:00
Francois Belair ba1d6b7532
Prevent LSP adding signal func to non GDScripts
(cherry picked from commit 66f1b4bf66)
2021-12-06 17:51:11 +01:00
kobewi 5caab0a8ef
Correct the doc about ease()
(cherry picked from commit 44e6655924)
2021-11-25 22:23:53 +01:00