Dmitrii Maganov
a8c2f8a0e1
GDScript: Fix missing conversion for default argument values
2023-01-06 11:49:06 +02:00
Dmitrii Maganov
a1d06749f1
Unify typing of variables, constants and parameters in GDScript
2023-01-06 01:10:04 +02:00
Rémi Verschelde
d95794ec8a
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".
2023-01-05 13:25:55 +01:00
Rémi Verschelde
8203e09330
Merge pull request #70859 from vonagam/fix-preload-native-type
...
GDScript: Fix wrong native type for preloaded class
2023-01-03 23:22:23 +01:00
Rémi Verschelde
4e360ac612
Merge pull request #70702 from vnen/gdscript-error-on-assign-void
...
GDScript: Error when assigning return value of void function
2023-01-03 12:23:00 +01:00
Rémi Verschelde
e4c1103af4
Merge pull request #70656 from vonagam/fix-void-returns
...
GDScript: Disallow return with value in void functions
2023-01-03 12:20:33 +01:00
Dmitrii Maganov
961b4ac5f5
GDScript: Fix wrong native type for preloaded class
2023-01-03 05:45:06 +02:00
George Marques
8a98110e3e
Merge pull request #62688 from cdemirer/assignments-and-types
...
Fixes https://github.com/godotengine/godot/issues/62650
2022-12-30 16:38:35 -03:00
George Marques
bc739a4687
GDScript: Make using return of void function an error
...
Remove the `VOID_ASSIGNMENT` warning since those cases will be errors
now.
2022-12-30 13:35:38 -03:00
George Marques
33afa82fb0
Merge pull request #70613 from vonagam/fix-enum-as-constant
...
Fixes https://github.com/godotengine/godot/issues/54018
Fixes https://github.com/godotengine/godot/issues/70213
Fixes https://github.com/godotengine/godot/issues/70495
2022-12-30 12:10:50 -03:00
Dmitrii Maganov
9507f65e25
GDScript: Disallow return with value in void functions
2022-12-29 03:06:13 +02:00
Dmitrii Maganov
b6aa4840d8
Fix usage of Enum as constant
2022-12-28 23:04:40 +02:00
Dmitrii Maganov
f67aa3e46d
GDScript: Fix return type of constructor call for extending class
2022-12-27 23:02:12 +02:00
cdemirer
bbb21c3fd5
Fix type adjustment skipped when value is considered both not hard and not variant
2022-12-25 17:11:30 +03:00
Rémi Verschelde
edfa1e8665
Merge pull request #70220 from adamscott/fix-external-enum
...
Fix external enums not assignable as constants
2022-12-23 09:20:50 +01:00
Rémi Verschelde
e1657bd2a7
Merge pull request #70440 from rune-scape/null-again
...
Fix GDScript analyzer null literal
2022-12-22 16:02:19 +01:00
rune-scape
3228fdb88a
Fix GDScript analyzer null literal
2022-12-22 06:02:34 -05:00
ocean (they/them)
d93dbab054
Add MethodInfo to signal datatype
2022-12-21 22:49:51 -05:00
ocean (they/them)
fb418685a0
Unify GDScriptAnalyzer in-editor and runtime autoload checks
2022-12-20 19:01:28 -05:00
rune-scape
9f6ad59da7
Fix autoload subscript regression
2022-12-18 18:36:41 -05:00
Adam Scott
7fc814f697
Fix external enums not assignable as constants
...
- Add external enums test
- Rename external inner class test
- Clean up `GDScriptAnalyzer::reduce_identifier_from_base` class
behavior
2022-12-17 17:59:38 -05:00
Adam Scott
1bbb2b4159
Fix outer class lookup
2022-12-17 17:57:00 -05:00
Adam Scott
2fefcf7329
Fix inner class constant assignment
2022-12-17 12:03:03 -05:00
Rémi Verschelde
8d52eea52b
Merge pull request #70000 from rune-scape/find-more-classes
...
GDScript: Fix built-in script `find_class` bugs
2022-12-17 16:30:34 +01:00
rune-scape
213c94b42f
Fix enum value regression
2022-12-16 22:48:25 -05:00
Rémi Verschelde
f18f2740da
Merge pull request #70131 from rune-scape/preload-type-regression
...
Fix preload type regression
2022-12-16 00:31:26 +01:00
stmSi
2a341a6321
Fixed GDScript crashed when two consecutive unary operators are analysed
2022-12-16 04:45:53 +06:30
rune-scape
17e03c29d6
Fix preload type regression
2022-12-15 16:47:13 -05:00
rune-scape
e1c63fee86
GDScript: Fix built-in script and other find_class
bugs
2022-12-15 14:56:23 -05:00
Rémi Verschelde
6debf86d51
Merge pull request #69471 from rune-scape/rune-out-of-order
...
GDScript: Out of order member resolution
2022-12-15 07:56:23 +01:00
rune-scape
2dfc6d5b69
GDScript: Allow out of order member resolution
2022-12-14 21:44:05 -05:00
rune-scape
08449ab16e
Fix String type compatibility being too permissive
2022-12-12 07:27:41 -05:00
Rémi Verschelde
8410e7c9c6
Merge pull request #66733 from MewPurPur/unary-op-warnings
...
Fix unary op warnings never showing
2022-12-11 22:33:58 +01:00
rune-scape
98e1a2031d
Fix subscript of preloaded script
2022-12-11 07:59:43 -05:00
Adam Scott
65a49bad5a
Fix constant base typing in extended GDScript class
2022-12-10 13:39:45 -05:00
Rémi Verschelde
1ac7e5a334
Merge pull request #69518 from rune-scape/rune-analyze-values
...
GDScript: Preload should make native type
2022-12-10 11:29:50 +01:00
Rémi Verschelde
f6ea295bb1
Merge pull request #69467 from rune-scape/rune-subclass-script-path
...
GDScript: Fix subclass script path issues
2022-12-10 10:21:19 +01:00
rune-scape
e79be6ce07
Unify String and StringName
2022-12-05 21:46:47 -05:00
rune-scape
6f8ffd5591
GDScript: preload should make native type
2022-12-04 05:36:17 -05:00
Adam Scott
7bcaa9df9e
Fix missing parent class name identifier crash
2022-12-02 21:30:19 -05:00
rune-scape
d531869a7c
GDScript: Fix subclass script path issues
2022-12-01 20:43:27 -05:00
Rémi Verschelde
4821de146e
Merge pull request #69423 from KoBeWi/parenture
...
Improve parent signature error
2022-12-01 18:10:31 +01:00
Rémi Verschelde
2d96f63e09
Merge pull request #68481 from dalexeev/gds-fix-dyn-arg-def-val
...
GDScript 2.0: Fix shift due to skip of non-constant default argument values
2022-12-01 18:09:25 +01:00
kobewi
d1e4146462
Improve parent signature error
2022-12-01 15:16:16 +01:00
VolTer
bfc093c53f
Fix unary op warnings never showing
2022-12-01 01:09:10 +01:00
rune-scape
847c9bd248
GDScript: Avoid using get_global_class_native_base
2022-11-27 03:55:53 -05:00
Rémi Verschelde
c7ceb94e37
Merge pull request #69079 from adamscott/fix-singleton-scene-cyclic-load
...
Fix singleton scene cyclic loading
2022-11-25 19:29:57 +01:00
Adam Scott
69bb7e5b11
Fix singleton scene cyclic loading
2022-11-25 12:43:55 -05:00
clayjohn
075cea1077
Ensure class name is printed in STATIC_CALLED_ON_INSTANCE warning
2022-11-24 12:06:11 -08:00
Adam Scott
2918689ff1
[godot#68977] Fix constants parameters
2022-11-23 08:15:54 -05:00
Rémi Verschelde
0b2dc0f017
Merge pull request #68970 from Chaosus/gds_fix_lambda_signal
...
Fix using signals in lambda functions
2022-11-22 10:00:05 +01:00
Yuri Rubinsky
f6c8c140f0
Fix using signals in lambda functions
2022-11-22 11:22:41 +03:00
Adam Scott
eb62d241c0
[godot#61386] Fix autoload scenes implicit types
2022-11-21 23:39:31 -05:00
Adam Scott
6d7c8533d5
Remove fix leftover that caused cyclic load issues
2022-11-18 23:37:00 -05:00
Rémi Verschelde
80b3813b15
Merge pull request #67714 from adamscott/fix-preload-cyclic-references-part2
...
Fix cyclic references in GDScript 2.0
2022-11-18 23:08:01 +01:00
Adam Scott
5704055d30
Fix cyclic references in GDScript 2.0
2022-11-18 16:41:31 -05:00
ocean (they/them)
13be0ab733
Fix ability to overload "script" variable
2022-11-17 17:21:12 -05:00
Rune
bce6f1792e
GDScript compiler subclass bugfixes
2022-11-13 02:29:21 -08:00
Danil Alexeev
0f8e28f818
GDScript 2.0: Fix shift due to skip of non-constant default argument values
2022-11-10 19:22:52 +03:00
Rémi Verschelde
7eb44fa47d
Merge pull request #68125 from kleonc/range-fix-single-arg-optimized-type-mismatch
...
[GDScript] Fix type mismatch in optimized single arg `range`
2022-11-02 14:18:24 +01:00
Rémi Verschelde
7c0e46f1c1
Merge pull request #68040 from adamscott/fix-property-getter-return-type
...
Fix property getter with custom return type
2022-11-02 14:16:37 +01:00
kleonc
c268e3a235
GDScript Fix type mismatch in optimized single arg range
2022-11-02 13:20:47 +01:00
Rémi Verschelde
213ba46672
Merge pull request #68065 from zCubed3/fix_min_max_crash
...
`GDScriptAnalyzer` Fix math utilities crashing when invalid args are passed
2022-10-31 10:59:27 +01:00
Rémi Verschelde
b43cc96535
Merge pull request #62695 from Spartan322/relax-constant-asserts
...
Allow non-constant string message for assert
2022-10-31 10:44:56 +01:00
zCubed3
b7f0ab13a4
Fix math utility functions crashing when invalid args passed
2022-10-30 15:18:03 -07:00
Adam Scott
26f0afdce2
[godot#68001] Fix property getter with custom return type
2022-10-29 20:38:26 -04:00
João Martins
a0c4002520
Clarified reason why a resource cannot be loaded.
2022-10-16 17:27:00 -04:00
clayjohn
0a51bb4ca5
Add STATIC_CALLED_ON_INSTANCE warning to highlight
...
when static functions are called directly from objects
2022-10-14 10:43:42 -07:00
clayjohn
be1e9acb7c
Implement RETURN_VALUE_DISCARDED warning in GDscript
2022-10-13 11:56:45 -07:00
bruvzg
0103af1ddd
Fix MSVC warnings, rename shadowed variables, fix uninitialized values, change warnings=all to use /W4.
2022-10-07 11:32:33 +03:00
willnationsdev
339aba1656
Add GDScript resource export.
2022-09-17 17:10:30 -05:00
Abdelhafidh Belalia
4dca9975e7
Fix GDScript preload
fails in standalone build unless files are present in directory
...
Fixes #56343 .
2022-09-15 13:52:37 +02:00
Rémi Verschelde
6843a484ff
Merge pull request #65065 from Atlinx/fix/65010_enum-doesnt-show-up
2022-08-31 16:51:53 +02:00
Atlinx
6b5640c88c
Fix inferred GDScript enum values not appearing in inspector
...
"enum_values" originally wasn't being forwarded to the new type inside "reduce_identifier_from_base", which caused hint strings derived from the new type to be blank, which ultimately caused an empty enum dropdown menu.
2022-08-30 17:40:38 -04:00
Aaron Franke
10a56981dc
Rename String plus_file
to path_join
2022-08-29 19:38:13 -05:00
Antonio Dell'Annunziata
f81a166ab8
fix(gdscript): Infer type from preload const
...
When resolving the type of the attribute from the variant, the result_type.kind was overritten for no reason.
It is assumed that this only needs to be done, if the variant value is not valid to have any kind here.
Solves #63715
2022-08-07 16:09:24 +02:00
reduz
455c06ecd4
Implement Vector4, Vector4i, Projection
...
Implement built-in classes Vector4, Vector4i and Projection.
* Two versions of Vector4 (float and integer).
* A Projection class, which is a 4x4 matrix specialized in projection types.
These types have been requested for a long time, but given they were very corner case they were not added before.
Because in Godot 4, reimplementing parts of the rendering engine is now possible, access to these types (heavily used by the rendering code) becomes a necessity.
**Q**: Why Projection and not Matrix4?
**A**: Godot does not use Matrix2, Matrix3, Matrix4x3, etc. naming convention because, within the engine, these types always have a *purpose*. As such, Godot names them: Transform2D, Transform3D or Basis. In this case, this 4x4 matrix is _always_ used as a _Projection_, hence the naming.
2022-07-23 14:00:01 +02:00
George L. Albany
8035f1e36f
Allow non-constant string message for assert
2022-07-18 00:53:31 -04:00
Rémi Verschelde
4873886830
Merge pull request #62760 from cdemirer/fix-annotation-initializer-conflict
...
Fix priority of annotated type vs initializer type
2022-07-06 15:47:56 +02:00
cdemirer
f280975bf1
Fix priority of annotated type vs initializer type
2022-07-06 04:25:44 +03:00
Yuri Sizov
f85bafaa11
Add grouping annotations for class properties in GDScript
2022-07-05 22:01:40 +03:00
K. S. Ernest (iFire) Lee
9ddebc0c22
Add a const call mode to Object, Variant and Script.
...
For this to work safely (user not call queue_free or something in the expression), a const call mode was added to Object and Variant (and optionally Script).
This mode ensures only const functions can be called, making it safe to use from the editor.
Co-Authored-By: reduz <reduzio@gmail.com>
2022-06-27 13:33:06 -07:00
bruvzg
860e24683f
Make enum/constant binds 64-bit.
2022-06-17 16:36:26 +03:00
Nathan Franke
3d61246bc4
use correct error for unused bind match, suppress with underscore
2022-06-03 13:28:33 -05:00
Rémi Verschelde
6369e495fd
Merge pull request #61279 from Trioct/fix-typed-array-assignment
2022-05-25 17:28:22 +02:00
Trioct
bcbfa641ec
Fix const typed array assignment
2022-05-25 09:02:11 -05:00
George Marques
24bcbe971a
GDScript: Don't show redundant await warning on unknown types
...
Also avoid it when the type is known to be a signal.
2022-05-24 14:37:50 -03:00
reduz
45af29da80
Add a new HashSet template
...
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
reduz
746dddc067
Replace most uses of Map by HashMap
...
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
(order matters) but use is discouraged.
There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
reduz
8b7c7f5a75
Add a new HashMap implementation
...
Adds a new, cleaned up, HashMap implementation.
* Uses Robin Hood Hashing (https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing ).
* Keeps elements in a double linked list for simpler, ordered, iteration.
* Allows keeping iterators for later use in removal (Unlike Map<>, it does not do much
for performance vs keeping the key, but helps replace old code).
* Uses a more modern C++ iterator API, deprecates the old one.
* Supports custom allocator (in case there is a wish to use a paged one).
This class aims to unify all the associative template usage and replace it by this one:
* Map<> (whereas key order does not matter, which is 99% of cases)
* HashMap<>
* OrderedHashMap<>
* OAHashMap<>
2022-05-12 11:21:29 +02:00
Rémi Verschelde
f626e8ef91
Merge pull request #60396 from vnen/gdscript-self-lambda
2022-04-27 13:11:24 +02:00
George Marques
01d13ab2c1
GDScript: Allow using self in lambdas
2022-04-24 21:49:02 -03:00
PastMoments
b3704e664d
Fixes GDScript define nested dictionary and array as constants #50285
2022-04-19 08:57:23 -04:00
George Marques
4710e2b278
GDScript: Add support for static method calls in native types
2022-04-06 14:14:38 -03:00
Rémi Verschelde
a647fb3e62
Fix typos with codespell
...
Using codespell 2.2-dev from current git.
Fix a couple incorrect uses of gendered pronouns.
2022-03-31 14:07:29 +02:00
George Marques
be718285f7
GDScript: Fix issues with completion and super
calls
...
- Make call errors use the call node instead of the calle, which will be
empty on super calls.
- Don't allow `super()` to be used within lambdas.
2022-03-30 11:58:29 -03:00
Yuri Roubinsky
c14043b166
Prevent NARROWING_CONVERSION warning for int(float) function in GDScript
2022-03-22 09:17:00 +03:00
Yuri Rubinsky
6cba2143de
Merge pull request #59056 from Chaosus/gds_fix_extends_crash
2022-03-22 08:27:03 +03:00
Yuri Roubinsky
5a99aa3b3a
Fix default value count checking for inherited function
2022-03-14 18:00:42 +03:00
Yuri Roubinsky
d009d96a92
Prevent crash due to empty error message on empty extends in GDScript
2022-03-12 09:46:51 +03:00
K. S. Ernest (iFire) Lee
2eaadb1b52
Restore building web platform by enclosing resolve_function_signature.
2022-03-07 00:35:11 -08:00
George Marques
1ebcb58e69
GDScript: Check if method signature matches the parent
...
To guarantee polymorphism, a method signature must be compatible with
the parent. This checks if:
1. Return type is the same.
2. The subclass method takes at least the same amount of parameters.
3. The matching parameters have the same type.
4. If the subclass takes more parameters, all of the extra ones have a
default value.
5. If the superclass has default values, so must have the subclass.
There's a few test cases to ensure this holds up.
2022-03-06 11:16:20 -03:00
Rémi Verschelde
bb8c4acdc9
Merge pull request #58185 from V-Sekai/explicit_variant_assignment_fix
2022-03-04 14:56:38 +01:00
Rémi Verschelde
d31aaed172
Merge pull request #58626 from groud/fix_gdscript_analyser_crash
2022-03-04 14:15:59 +01:00
Max Hilbrunner
57838fc0ee
Merge pull request #58262 from Sauermann/fix-range-doc
...
Describe usage of float in range documentation
2022-03-03 13:12:29 +01:00
Gilles Roudière
7ae988ce5e
Fix a crash in GDScriptAnalyzer when a script class's file is not found
2022-02-28 12:20:00 +01:00
SaracenOne
b6aa4ed55d
Fixes cyclic detection from variables assigning themselves to themselves in autocomplete, and restricts initialization of variables from other variables which have not been declared above it in class body
2022-02-22 01:21:21 +00:00
Markus Sauermann
bac8e451c0
Describe usage of float in range documentation
2022-02-18 00:59:22 +01:00
SaracenOne
d45c3cdd1d
Fix error when assigning to an explicitly annotated variant from an ambiguous source
2022-02-16 13:25:27 +00:00
Rémi Verschelde
317cd0b19a
Refactor some object type checking code with cast_to
...
Less stringly typed logic, and less String allocations and comparisons.
2022-02-08 10:08:34 +01:00
Rémi Verschelde
89eb6d372d
Merge pull request #57591 from vnen/gdscript-enum-fixes
2022-02-04 13:49:15 +01:00
George Marques
ceafdf347e
GDScript: Treat enum values as int and enum types as dictionary
...
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.
2022-02-03 13:32:34 -03:00
George Marques
ad6e2e82a9
GDScript: Consolidate behavior for assigning enum types
...
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.
2022-02-03 13:32:16 -03:00
cdemirer
28ac4d8b7d
Fix crash with non-constant keys in match statement Dictionary pattern
2022-01-26 04:10:07 +08:00
Rémi Verschelde
4cfade6212
Merge pull request #55995 from Xwdit/enum_fix
...
Fix enum int comparison
2022-01-17 20:20:16 +01:00
Rémi Verschelde
1989120d3f
Merge pull request #56194 from cdemirer/fix-operation-result-type-inference
2022-01-10 17:18:32 +01:00
Rémi Verschelde
4acc819f9b
Merge pull request #56232 from V-Sekai/invalid_explicit_variant_assign_fix
2022-01-10 17:12:56 +01:00
Rémi Verschelde
cc7f634066
Merge pull request #56260 from cdemirer/fix-type-mutation-upon-assignment-with-operation
2022-01-10 17:12:34 +01:00
Rémi Verschelde
6d4ed65f4c
Merge pull request #56483 from vnen/gdscript-warning-annotation
...
Add annotation to ignore warnings
2022-01-05 09:05:56 +01:00
George Marques
fd643c903d
GDScript: Add annotation to ignore warnings
2022-01-04 09:32:43 -03:00
Rémi Verschelde
fe52458154
Update copyright statements to 2022
...
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
cdemirer
067b4c8c07
Fix type mutation upon compound assignment
2021-12-27 03:32:22 +08:00
SaracenOne
b22c805dbe
Fix 'Compiler bug: unresolved assign' on explicitly annotated variants.
2021-12-25 00:53:57 +00:00
cdemirer
455cc07f90
Fix operation result type inference
2021-12-23 20:45:24 +08:00
Xwdit
0430e26e6d
Fix enum int comparison
...
Fix enum int comparison
2021-12-16 16:14:14 +01:00
Gilles Roudière
ab8119b5f6
Avoid a crash in the gdscript analyser
2021-12-14 15:54:25 +01:00
Yuri Roubinsky
566895732c
Fix shadowed global identifier warning duplication
2021-12-13 11:54:23 +03:00
kobewi
4682f22293
Improve various texts
2021-11-23 12:20:57 +01:00
Benjamin Navarro
560d9a4cc0
Fix incorrect debug check for setters
...
the check read the return type of the setter, which doesn't exist and
lead to a segmentation fault. Now we check the first function parameter.
Probably a bad copy/paste of the getter case
2021-10-18 09:01:16 +02:00
Rémi Verschelde
3f888966c0
Merge pull request #53843 from vnen/gdscript-typed-array-subscript-constant
...
Fix inferred typed array marked as constant
2021-10-15 16:49:29 +02:00
George Marques
540821a264
GDScript: Fix inferred typed array marked as constant
2021-10-15 10:40:50 -03:00
George Marques
84abb9a76c
GDScript: Fix typing for await expression
...
Don't grab the type of the awaited value unless it's constant (which
makes it synchronous) or call (which always use the proper return type).
2021-10-14 20:30:06 -03:00
George Marques
749d89ae38
GDScript: Remove error when coroutine is called without await
...
In the case the call happens as a statement, since the return value
isn't used in this case.
2021-10-14 20:12:01 -03:00
George Marques
bf322bacdd
Merge pull request #53726 from briansemrau/gd-outer-class
...
GDScript 2.0: Access outer scope classes
2021-10-14 10:12:52 -03:00
Brian Semrau
0ff0f64cd4
GDScript: Access outer scope classes
2021-10-13 22:39:12 -04:00
Rémi Verschelde
e4288bf728
Merge pull request #53720 from vnen/gdscript-typed-array-custom-class
2021-10-12 16:51:50 +02:00
George Marques
34288b24a6
GDScript: Fix typed array with custom classes
2021-10-12 10:41:04 -03:00
George Marques
45f546c1d8
GDScript: Make setter parameter type same as variable type
2021-10-12 09:39:23 -03:00
ZuBsPaCe
551ceb590b
GDScript: Report property type errors
...
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
2021-10-08 22:06:15 +02:00
George Marques
3a856b4fcc
GDScript: Use getter return type for the property type
...
The PropertyInfo hints are more relevant for the inspector. The getter
return type is more reliable and less likely to be incorrect and it is
what's going to be called in the end.
2021-10-07 20:22:19 -03:00
Rémi Verschelde
98b81ad35c
Merge pull request #53479 from vnen/gdscript-subscript-object-self
2021-10-06 19:48:23 +02:00
George Marques
1f55bd190c
GDScript: Allow subscript on self and object types
2021-10-06 12:01:34 -03:00
George Marques
6bdb28f5e4
GDScript: Avoid hard errors on inferred types
...
Since inference isn't always correct, they are now treated as unsafe
instead of errors.
This also removes inferred type when a variable is reassigned. Since
it's not aware of branching, the types might become invalid in a later
context.
2021-10-06 11:42:19 -03:00
George Marques
7725ebf3d2
GDScript: Use path cache when checking preloaded scripts
...
The path itself might not always be set in some cases, especially when
the script is just created and is already in the resource cache. Using
get_path() in this case gets the correct resource path.
This also adds a null check for safety in case the path is incorrect or
missing, to avoid a crash in the engine.
2021-10-04 20:48:39 -03:00
Rémi Verschelde
4a4995524c
Merge pull request #53338 from briansemrau/gdscript-handle-for-with-null-list
2021-10-04 17:11:43 +02:00
kobewi
cb28469281
Allow void as return type for constructors
2021-10-03 21:16:54 +02:00
Brian Semrau
dc046e5cbe
GDScript Check for null list in for
loop
2021-10-02 13:53:56 -04:00
Lightning_A
c63b18507d
Use range iterators for Map
2021-09-30 15:09:12 -06:00
Rémi Verschelde
d2b8560d7a
Revert "GdScript: Use reduced constant expression result when doing binary operations. Fixes #50293 "
...
This reverts commit 6207708607
.
It broke a GDScript test (which didn't exist back when the PR was made,
so was missed prior to the merge).
It choked on:
```
prints("a", test_instance.a, test_instance.a == Named.VALUE_A)
```
With:
```
Invalid operands "VALUE_A (enum value)" and "int" for "==" operator.
```
2021-09-30 18:57:59 +02:00
Rémi Verschelde
7f8e50801e
Merge pull request #51818 from MarianoGnu/gdscript2-enum-fixes
2021-09-30 18:35:49 +02:00
George Marques
72c07708e8
GDScript: Don't allow builtin type names as identifiers
2021-09-29 11:23:16 -03:00
George Marques
5107f9190b
GDScript: Remove conversion assign mistakenly done when unneeded
2021-09-21 11:58:57 -03:00
George Marques
b8fdeb6467
Merge pull request #51671 from RandomShaper/fix_gdscript_crash
...
Fix some GDScript bugs
2021-09-17 12:29:40 -03:00
George Marques
4e69341c01
GDScript: Avoid inferred types from giving hard errors
2021-09-17 11:52:30 -03:00
George Marques
a5c299630d
Merge pull request #50456 from Blackiris/fix-extends-parent-relative
...
Fix extends with relative path to parent script
2021-09-15 11:12:24 -03:00
Rémi Verschelde
c23823ac54
Merge pull request #52582 from jmb462/Prevent-non-explicit-inferring-parameter-from-null
2021-09-15 15:50:42 +02:00
Rémi Verschelde
45d9df2e63
Merge pull request #52632 from vnen/autoload-global-script-class-conflict
...
Disallow class names to be the same as global names
2021-09-13 21:10:50 +02:00
Rémi Verschelde
0c2ab55a58
Merge pull request #52100 from vnen/gdscript-access-outer-constants
...
GDScript: Allow access to outer constant and enum values
2021-09-13 18:04:35 +02:00
George Marques
2e5fa124f4
Disallow class names to be the same as global names
...
Also forbid autoloads to have the same name as global script class.
2021-09-13 10:51:29 -03:00
jmb462
b9219bedf7
Prevent non explicit inferring parameter from null
2021-09-11 21:11:10 +02:00
Pedro J. Estébanez
7c79e361f5
Fix parameter type resolution in GDScript
2021-09-11 11:35:25 +02:00
Pedro J. Estébanez
d72f12a561
Implement iterator variable typing in GDScript
2021-09-11 11:35:25 +02:00
George Marques
6da061faf5
Merge pull request #49897 from Blackiris/fix-dollar-point-crash-on-editor
...
Fix crash when writing $. in the editor
2021-09-10 10:55:11 -03:00
Julien Nguyen
a92d2c447b
Fix extends with relative path to parent script
2021-09-05 00:11:04 +02:00
Max Hilbrunner
8c82e305ba
Merge pull request #52329 from ZuBsPaCe/gdscript-unused-private-class-variable-fix
...
GDScript: Fix for UNUSED_PRIVATE_CLASS_VARIABLE
2021-09-03 10:04:11 +02:00
ZuBsPaCe
c76ad6b158
GDScript: Count usages of member variables.
...
Otherwise private member variables will always lead to UNUSED_PRIVATE_CLASS_VARIABLE.
2021-09-03 07:44:46 +02:00
SaracenOne
84852585b9
Check for GDScript member and class naming conflicts in a variety of conditions.
2021-09-02 07:16:06 +01:00
Wilson E. Alvarez
d11c1afc04
Rename String::is_rel_path to String::is_relative_path
2021-08-29 20:41:29 -04:00
George Marques
4918df4527
GDScript: Allow access to outer constant and enum values
2021-08-24 14:45:51 -03:00
George Marques
2e84a46a0f
GDScript: Make singleton functions be seen as static
...
Since those can be called without an instance.
2021-08-20 10:52:58 -03:00
George Marques
1c8b076502
GDScript: Fix calling builtin static functions
2021-08-18 18:58:41 -03:00
George Marques
47545aeb1a
GDScript: Fix issue when calling new()
on its own
2021-08-18 18:56:21 -03:00
George Marques
2ba4ee9198
GDScript: Fix inner classes and preloaded scripts as types
2021-08-18 18:56:21 -03:00
Mariano Suligoy
6207708607
GdScript: Use reduced constant expression result when doing binary operations. Fixes #50293
2021-08-18 09:19:09 -03:00
Mariano Suligoy
70c5feb32c
Accept non unnamed enums as valid values for enums. Fixes #49357
2021-08-17 19:44:27 -03:00
Mariano Suligoy
7f37e2987a
When analyzing GdScript sources, consider Enums as Dictionaries. Fixes #45558
2021-08-17 19:44:27 -03:00
Max Hilbrunner
5161c97c9c
Remove underscore hacks
...
Way less cruft. :)
Co-authored-by: Ignacio Roldán Etcheverry <neikeq@users.noreply.github.com>
2021-08-17 16:10:28 +02:00
Aaron Franke
4e6efd1b07
Use C++ iterators for Lists in many situations
2021-07-23 17:38:28 -04:00
Julien Nguyen
bf8795c7af
Fix crash when writing $. in the editor
2021-07-08 20:49:57 +02:00
Lightning_A
e28fd07b2b
Rename instance()
->instantiate()
when it's a verb
2021-06-19 20:49:18 -06:00
Rémi Verschelde
a9c53fa599
Merge pull request #49287 from reduz/expose-variant-internal-binders
...
Make some Variant internal functions public.
2021-06-19 01:11:03 +02:00
George Marques
c4fcc678df
Merge pull request #49449 from SpectralDragon/fix-enum-equal-operation
...
Fix equal operation for typed enums
2021-06-18 17:18:44 -03:00
George Marques
b5f1e88b2e
GDScript: Fix setting type of operator return value
...
Also write type adjust when needed for binary operators.
2021-06-18 13:09:35 -03:00
Pedro J. Estébanez
04688b92ff
Rename Reference to RefCounted
2021-06-11 18:48:42 +02:00
Rémi Verschelde
9e328bb5b7
Core: Move DirAccess and FileAccess to core/io
...
File handling APIs are typically considered part of I/O, and we did have most
`FileAccess` implementations in `core/io` already.
2021-06-11 14:52:39 +02:00
Владислав Прусаков
6449c5f246
Fix equal operation for typed enums
2021-06-09 02:52:21 +03:00
Marcel Admiraal
8acd13a456
Rename Quat to Quaternion
2021-06-04 18:14:32 +01:00
Aaron Franke
08a85352fb
Rename Variant TRANSFORM to TRANSFORM3D
...
Also _transform to _transform3d
2021-06-03 07:30:01 -04:00
Rémi Verschelde
364ea7f280
Merge pull request #49114 from vnen/gdscript-fix-self-function-type-check
...
GDScript: Fix function signature check for self calls
2021-05-26 20:59:17 +02:00
George Marques
a23fc45727
GDScript: Fix function signature check for self calls
2021-05-26 15:33:18 -03:00
George Marques
c7459e3855
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.
2021-05-26 14:09:00 -03:00
George Marques
ec783dd885
GDScript: Add support for builtin static method calls
2021-05-16 11:54:33 -03:00
George Marques
9ed0f0384c
GDScript: Fix crash when base of an attribute is invalid
...
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.
2021-04-28 11:09:40 -03:00
George Marques
c201b212c7
GDScript: Implement lambdas compilation and runtime
2021-04-28 11:09:38 -03:00
George Marques
3155368093
GDScript: Add lambdas to the type analyzer
...
- Lambdas are always callables (no specific signature match).
- Captures from the current context are evaluated.
2021-04-28 10:56:16 -03:00
George Marques
c6e66a43b0
GDScript: Add lambda syntax parsing
...
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")
2021-04-28 10:56:16 -03:00
George Marques
c7511de02e
GDScript: Fix resolution of dictionary keys
...
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.
2021-04-23 15:42:33 -03:00
Rémi Verschelde
737f09895d
Merge pull request #47131 from vnen/gdscript-export-fix
...
Fix a few issues with @export in GDScript
2021-03-30 15:12:04 +02:00
George Marques
5d9585d83b
GDScript: Fix array type check on constants
...
They mistakenly pointing to the wrong union member (variable instead of
constant).
2021-03-30 09:09:13 -03:00
George Marques
577a17980d
Move GDSript annotation application after type-checking
...
This ensures that annotations that rely on the datatype (such as
@export) can validated it timely, allowing compound expressions instead
of only literal values.
2021-03-30 08:29:36 -03:00
George Marques
85e316a5d5
Add typed arrays to GDScript
...
- 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.
2021-03-29 10:45:48 -03:00
Rémi Verschelde
51992250e6
Merge pull request #43176 from mateosss/crash-uninit-const
...
Fix crash by adding nullcheck for uninitialized constants
2021-01-11 14:00:54 +01:00
Rémi Verschelde
8363c44265
Merge pull request #44719 from ThakeeNathees/assert-argument-bug-fixed
...
GDScript assert message parsing bug fixed
2021-01-11 13:51:44 +01:00
Rémi Verschelde
a2021588ca
Merge pull request #44672 from ThakeeNathees/array-dict-const-fold-bug-fix
...
Array/Dictionary marked as not safe to const fold
2021-01-11 13:51:31 +01:00
Rémi Verschelde
aaf6725150
Merge pull request #44889 from ThakeeNathees/builtin-invalid-call-crash-fix
...
GDScript invalid method call on built-in crash fix
2021-01-11 13:51:07 +01:00
Thakee Nathees
01c11ec29b
GDScript builtin invalid function call crash fix
...
Fix : #44852
2021-01-03 18:44:01 +05:30
Rémi Verschelde
b5334d14f7
Update copyright statements to 2021
...
Happy new year to the wonderful Godot community!
2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.
We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)
Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
Marcel Admiraal
5b937d493f
Rename empty() to is_empty()
2020-12-28 10:39:56 +00:00
Thakee Nathees
ebade0e454
GDScript assert message parsing bug fixed
...
Fix : #43540
2020-12-27 13:13:50 +05:30
Thakee Nathees
16bb01adfb
Array/Dictionary marked as not safe to const fold
...
Fix : #44459
2020-12-25 12:33:55 +05:30
Rémi Verschelde
abfc528439
Merge pull request #43890 from vnen/gdscript-builtin-functions-refactor
...
GDScript: Refactor builtin functions
2020-12-15 20:51:38 +01:00
Rémi Verschelde
9c30c83aee
Merge pull request #44011 from KoBeWi/red_roses_minus_blue_violets
...
Fix subtracting colors and quats
2020-12-03 14:44:52 +01:00
Tomasz Chabora
4c232e4222
Fix subtracting colors and quats
2020-12-03 14:22:12 +01:00
Rémi Verschelde
d1231be1c8
Merge pull request #41095 from ThakeeNathees/GDScript-Documentation
...
GDScript(2.0) Documentation generation system
2020-12-02 14:15:38 +01:00
George Marques
a604e72dc9
GDScript: Don't construct ref values in compiler
...
Values that are passed by reference are not suited for being constructed
at compile time because in this case they would be shared across all the
construction statements.
2020-11-30 09:42:22 -03:00
Thakee Nathees
d0e7d9b62f
Documentation generation for GDScript
...
- ClassDoc added to GDScript and property reflection data were extracted
from parse tree
- GDScript comments are collected from tokenizer for documentation and
applied to the ClassDoc by the GDScript compiler
- private docs were excluded (name with underscore prefix and doesn't
have any doc comments)
- default values (of non exported vars), arguments are extraced from the
parser
- Integrated with GDScript 2.0 and new enums were added.
- merge conflicts fixed
2020-11-29 19:45:36 +05:30
Rémi Verschelde
9f9b269d32
Merge pull request #43914 from ThakeeNathees/range-argument-type-bug-fix
...
GDScript: range function type check bug fixed
2020-11-27 15:08:02 +01:00
Thakee Nathees
f0613a91be
GDScript range function typecheck bug fixed
...
Fix : #43586
2020-11-27 18:23:35 +05:30
Rémi Verschelde
ed2f84735b
Merge pull request #43895 from vnen/gdscript-operators-fix
...
GDScript: Improve handling of operators
2020-11-26 21:19:31 +01:00
George Marques
0cb185927c
GDScript: Improve handling of operators
...
- Use the new functions in Variant to determine the validity and resulting
type of operators.
- Split the operator function in codegen between binary and unary, since
the unary ones have now a special requirement of having the second
argument to be the NIL type when requesting info.
2020-11-26 14:41:55 -03:00
George Marques
627ca7f30e
GDScript: Don't clear depended parsers too soon
...
It can wait until the analyzer itself is destructed, otherwise other
phases might be using freed parsers.
2020-11-26 14:14:29 -03:00
George Marques
817fb3d702
GDScript: Give an error if dependency can't be parsed
...
Otherwise this may lead to a crash when the dependency is not present.
2020-11-26 12:27:48 -03:00
George Marques
c7b6a7adcc
GDScript: Refactor builtin functions
...
They are now called "utility functions" to avoid confusion with methods
of builtin types, and be consistent with the naming in Variant.
Core utility functions are now available in GDScript. The ones missing
in core are added specifically to GDScript as helpers for convenience.
Some functions were remove when there are better ways to do, reducing
redundancy and cleaning up the global scope.
2020-11-26 12:05:42 -03:00
George Marques
fb3dc2670a
GDScript: Fix range() being treated as array when optimized out
...
The call of range() in a for loop is optimized to use int or vectors, to
avoid allocating an array, however the type was set as array still. With
the new typed VM this is an issue as the type mismatch the actual value,
resulting in wrong instructions to be selected.
2020-11-25 11:35:07 -03:00
Rémi Verschelde
9d2e8f2f27
Variant: Rename Type::_RID to Type::RID
...
The underscore prefix was used to avoid the conflict between the `RID` class
name and the matching enum value in `Variant::Type`.
This can be fixed differently by prefixing uses of the `RID` class in `Variant`
with the scope resolution operator, as done already for `AABB`.
2020-11-09 16:29:04 +01:00
reduz
221a2a1742
Refactored variant constructor logic
2020-11-09 08:54:43 -03:00
reduz
127458ed17
Reorganized core/ directory, it was too fatty already
...
-Removed FuncRef, since Callable makes it obsolete
-Removed int_types.h as its obsolete in c++11+
-Changed color names code
2020-11-07 20:17:12 -03:00
reduz
05de7ce6ca
Refactored variant setters/getters
...
-Discern between named, indexed and keyed
-Get direct access to functions for typed GDScript and GDNative bindings
-Small changes to some classes in order to work with the new setget binder
2020-11-07 15:16:15 -03:00
Rémi Verschelde
bd13e82080
Merge pull request #41516 from Lunatoid/allow-object-new
...
Fixed ParseError when calling Object.new()
2020-11-03 13:08:48 +01:00
Mateo de Mayo
f388177aed
Fix crash by adding nullcheck for uninitialized constants
2020-10-29 01:11:19 -03:00
George Marques
96884ef41e
Merge pull request #41983 from ThakeeNathees/array-const-folding-bug-fix
...
Array/Dictionary Nodes no more reduced to array/dictionary variant
2020-10-20 15:43:07 -03:00
Rémi Verschelde
3e78963bb9
Fix typos with codespell
...
Using codespell 1.17.1.
Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
curvelinear
dof
doubleclick
fave
findn
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
```
2020-09-18 13:44:25 +02:00
Thakee Nathees
3886a2f9f6
Array/Dictinoary no more reduced to array/dictionary variant
...
Fix : #41377
Fix : #20436
Fix : #41953
2020-09-11 19:46:20 +05:30
Rémi Verschelde
2410016638
Merge pull request #41709 from ThakeeNathees/dictionary-indexing-bug-fix
...
Fixed parser error when indexing a dictionary.
2020-09-08 21:38:14 +02:00
Thakee Nathees
89489a3cac
GDScript: parameter infer type bug fix
...
Fix : #41772
2020-09-06 13:26:52 +05:30
Thakee Nathees
4fc14e8e11
fixed parser error when indexing a dictionary.
...
Fix : #41707
2020-09-03 18:04:54 +05:30
Lunatoid
07053d0c6a
Fixed ParseError when calling Object.new()
...
Fixes #41462 where calling Object.new() in GDScript gave an error.
I fixed it by adding exclusion when checking if the name is a builtin
type to exclude objects with a comment detailing why.
2020-09-02 00:11:58 +02:00
George Marques
745ca3059d
Change GDScript compiler to use codegen abstraction
2020-09-01 14:36:22 -03:00
George Marques
a889084864
GDScript: Don't mark function parameters as constant
...
They can be reassigned as if it were a local variable.
2020-09-01 09:26:28 -03:00
George Marques
c8e10aa20b
GDScript: Properly set class inheritance for global classes
2020-09-01 09:26:28 -03:00
George Marques
f8fa5e4738
GDScript: Fix analysis of singleton dependencies
...
Sometimes a singleton might depend on another before they are fully
compiled so we can't rely on globals in this case.
2020-09-01 09:26:28 -03:00
George Marques
1ddb9b1a52
GDScript: Don't try to parse constant scripts that aren't valid
...
Since it's likely that they won't parse correctly.
2020-09-01 09:26:27 -03:00
George Marques
b2b45987d0
GDScript: Show error when there's an inheritance cycle
2020-08-26 16:01:08 -03:00
George Marques
8ccf88a206
GDScript: Fix issues when deriving from other scripts
2020-08-26 14:50:27 -03:00
George Marques
ca90c9c9a9
GDScript: Properly resolve external inner classes from preload
...
This gets the correct parser and class node when resolving from a full
GDScript reference.
2020-08-23 12:55:27 -03:00
George Marques
58f5c2bab6
Merge pull request #41238 from MarianoGnu/gdscript-export-resource
...
Fix GdScript Analyzier not detecting Resource subclass correctly
2020-08-23 11:04:52 -03:00
George Marques
a880f590e4
GDScript: Make subscript access be properly type checked
2020-08-19 14:35:26 -03:00
George Marques
cd3f51c67c
GDScript: Check duplicate keys in dictionaries and enums
2020-08-19 11:14:16 -03:00
George Marques
f9ad0b30fa
GDScript: Allow preload() to be used with constant expressions
2020-08-19 10:45:00 -03:00
George Marques
35176247af
GDScript: Allow enum values to be set to constant expressions
...
Also allow them to access previous values wihout referencing the enum.
2020-08-18 17:44:20 -03:00