ocean (they/them)
9eb4d1e4bf
Fix inability to assign null regression
...
Co-authored-by: Dmitry Maganov <vonagam@gmail.com>
2023-02-17 11:45:56 -05:00
Yuri Sizov
6e0dd6beca
Merge pull request #72925 from vonagam/fix-enum-typed-array-error
...
GDScript: Fix error about enum typed arrays
2023-02-17 16:47:50 +03:00
Rémi Verschelde
68807165f4
Merge pull request #73398 from anvilfolk/fix-getter
...
Fix unset getter return types resulting in strange behavior
2023-02-17 00:31:42 +01:00
ocean (they/them)
c45970739e
Fix crash by freed object assign to typed variable
2023-02-16 15:17:46 -05:00
ocean (they/them)
94dfac8da7
Add return type for GDScript getters
2023-02-15 17:54:38 -05:00
Dmitrii Maganov
9cb2da89d6
GDScript: Fix usage of ints with typed array of floats
2023-02-13 22:06:38 +02:00
Dmitrii Maganov
cedc5fa823
GDScript: Fix error about enum typed arrays
2023-02-09 00:31:40 +02:00
Rémi Verschelde
98921d8fba
Revert "Remove script class checks when getting function signature"
...
This reverts commit 0fef203b1f
.
This introduced some other issues, as discussed in #72144 .
2023-02-07 16:28:52 +01:00
Adam Scott
0fef203b1f
Remove script class checks when getting function signature
2023-02-07 11:48:10 +01:00
Yuri Sizov
945207885b
Merge pull request #72546 from vonagam/fix-typed-array-can-reference
...
GDScript: Fix can_reference check for typed arrays
2023-02-06 23:32:47 +03:00
Yuri Sizov
c0edea37ef
Merge pull request #72677 from dalexeev/gds-await-infer-type
...
GDScript: Fix `await` type inference
2023-02-06 23:32:28 +03:00
Yuri Sizov
7b86a082be
Merge pull request #72804 from vnen/gdscript-no-onready-without-node
...
GDScript: Fix inheritance check of @onready for inner classes
2023-02-06 23:03:44 +03:00
Danil Alexeev
685db28e29
GDScript: Fix await
type inference
2023-02-06 23:02:14 +03:00
Dmitrii Maganov
8400308ab3
GDScript: Fix can_reference check for typed arrays
2023-02-06 22:00:16 +02:00
George Marques
ed5ddab7e5
GDScript: Fix inheritance check of @onready for inner classes
2023-02-06 14:52:13 -03:00
Rémi Verschelde
2fdaf2919c
GDScript: Fix recently merged test not ignoring warnings
2023-02-06 18:19:34 +01:00
Yuri Sizov
d201df1ffa
Merge pull request #72512 from vonagam/fix-ternary-type-source
...
GDScript: Fix type certainty for result of ternary operator
2023-02-06 19:41:27 +03:00
George Marques
3941af3d91
GDScript: Don't allow @onready without inheriting Node
2023-02-06 10:45:38 -03:00
Yuri Sizov
13f0158e49
Merge pull request #72608 from vnen/gdscript-warning-default-error
...
GDScript: Add warnings that are set to error by default (take 2)
2023-02-05 16:00:26 +03:00
George Marques
273bf7210f
GDScript: Add warnings that are set to error by default
...
- Adds a list of default levels for all warning so they can be set
individually.
- Add warnings set by default to error for:
- Using `get_node()` without `@onready`.
- Using `@onready` together with `@export`.
- Inferring a static type with a Variant value.
- Overriding a native engine method.
- Adjust how annotations to ignore warnings are treated so they also
apply to method parameters.
- Clean up a bit how ignored warnings are set. There were two sets but
only one was actually being used.
- Set all warnings to the `WARN` level for tests, so they they can be
properly tested.
- Fix enum types in native methods signatures being set to `int`.
- Fix native enums being treated as Dictionary by mistake.
- Make name of native enum types use the class they are defined in, not
the direct super class of the script. This ensures they are always
equal even when coming from different sources.
- Fix error for signature mismatch that was only showing the first
default argument as having a default. Now it shows for all.
2023-02-02 12:07:25 -03:00
George Marques
5fc7918594
GDScript: Improve usability of setter chains
...
- Consider PackedArrays non-shared since they are copied on C++/script
boundaries.
- Add error messages in the analyzer when assigning to read-only
properties.
- Add specific error message at runtime when assignment fails because
the property is read-only.
2023-02-02 10:20:35 -03:00
Dmitrii Maganov
1a810ff45e
GDScript: Fix type certainty for result of ternary operator
2023-02-01 14:52:29 +02:00
Rémi Verschelde
afe3b94ab2
Revert "GDScript: Add warnings that are set to error by default"
...
This reverts commit a166833bfa
.
This caused multiple regressions.
Needs to be redone with more testing before merge.
Fixes #72501 .
2023-02-01 10:54:22 +01:00
George Marques
a166833bfa
GDScript: Add warnings that are set to error by default
...
- Adds a list of default levels for all warning so they can be set
individually.
- Add warnings set by default to error for:
- Using `get_node()` without `@onready`.
- Using `@onready` together with `@export`.
- Inferring a static type with a Variant value.
- Overriding a native engine method.
- Adjust how annotations to ignore warnings are treated so they also
apply to method parameters.
- Clean up a bit how ignored warnings are set. There were two sets but
only one was actually being used.
- Set all warnings to the `WARN` level for tests, so they they can be
properly tested.
- Fix enum types in native methods signatures being set to `int`.
- Fix native enums being treated as Dictionary by mistake.
- Make name of native enum types use the class they are defined in, not
the direct super class of the script. This ensures they are always
equal even when coming from different sources.
- Fix error for signature mismatch that was only showing the first
default argument as having a default. Now it shows for all.
2023-02-01 00:05:14 -03:00
George Marques
a47d4d57ca
GDScript: Allow void functions to return calls to other void functions
2023-01-31 11:37:30 -03:00
Dmitrii Maganov
5909f9f075
GDScript: Fix issues with typed arrays
2023-01-31 11:54:41 +02:00
Dmitrii Maganov
011b3895db
GDScript: Fix vararg method calls with exact arguments
2023-01-30 19:38:07 +02:00
Rémi Verschelde
a3dae9e548
Merge pull request #72285 from vnen/gdscript-variable-match
...
GDScript: Allow variables in match patterns
2023-01-29 02:45:48 +01:00
Rémi Verschelde
4011a0915e
Merge pull request #71844 from vonagam/fix-constant-conversions
...
GDScript: Fix constant conversions
2023-01-29 02:18:57 +01:00
George Marques
c68b2358d5
GDScript: Allow variables in match patterns
...
To restore an ability available in 3.x and reduce compatibility changes.
2023-01-28 19:53:27 -03:00
Dmitrii Maganov
31e0ae2012
GDScript: Fix constant conversions
2023-01-29 00:01:53 +02:00
Dmitrii Maganov
6194a7e0fa
GDScript: Fix implicit conversions for function returns
2023-01-28 23:56:07 +02:00
Rémi Verschelde
218bef90af
GDScript: Fix test from #69163 after annotations change
2023-01-28 17:01:19 +01:00
Rémi Verschelde
cc6e8379d4
Merge pull request #69163 from vonagam/variant-safe-lines
...
GDScript: Fix wrong marking of some lines related to Variant as unsafe
2023-01-28 15:40:19 +01:00
Danil Alexeev
b004f8180e
GDScript: Allow constant expressions in annotations
2023-01-25 18:43:56 +03:00
Rémi Verschelde
41e5f5b093
Merge pull request #71349 from vonagam/disallow-infer-on-weak
...
GDScript: Disallow type inference with untyped initializer
2023-01-25 14:42:20 +01:00
George Marques
7548e043fc
Add support for Unicode identifiers in GDScript
...
This is using an adapted version of UAX#31 to not rely on the ICU
database (which isn't available in builds without TextServerAdvanced).
It allows most characters used in diverse scripts but not everything.
2023-01-21 13:39:40 -03:00
ocean (they/them)
4854e723be
Fix unnammed enum crash regression
2023-01-18 09:35:48 -05:00
Dmitrii Maganov
a1e0281b45
GDScript: Disallow type inference with untyped initializer
2023-01-13 20:51:29 +02:00
Dmitrii Maganov
40613ebd21
GDScript: Fix typing of iterator in for loop
2023-01-13 15:36:11 +02:00
Rémi Verschelde
aaa5158ff9
Merge pull request #70733 from vonagam/fix-assigning-untyped
...
GDScript: Fix some issues with assignments that involve untyped things
2023-01-12 20:08:55 +01:00
Dmitrii Maganov
274d49790d
GDScript: Fix extending abstract classes, forbid their construction
2023-01-12 17:47:10 +02:00
Dmitrii Maganov
ef81b344be
GDScript: Fix wrong marking of some lines related to Variant as unsafe
2023-01-12 17:21:33 +02:00
Dmitrii Maganov
38c214d483
GDScript: Fix some issues with assignments that involve untyped things
2023-01-12 17:07:45 +02:00
Dmitrii Maganov
5980abbcec
GDScript: Fix getting type from PropertyInfo for Variant arguments
2023-01-12 16:47:06 +02:00
Adam Scott
44d1d72af1
Add GDScript .editorconfig
rules
...
- Uniformize `.gd` unit test files indentation to tabs (where needed)
2023-01-10 12:25:35 -05:00
Rémi Verschelde
c894edd4cb
Merge pull request #71140 from vonagam/fix-const-index-subscript-type
...
GDScript: Fix type for index subscript on constant
2023-01-10 07:58:29 +01:00
Dmitrii Maganov
ff505c9875
GDScript: Fix type for index subscript on constant
2023-01-10 07:10:00 +02:00
Adam Scott
fb175d92da
Fix GDScript base and outer classes, signals and functions lookup order
...
- Add outer class lookup test
- Add signal lookup test
Co-authored-by: Dmitrii Maganov <vonagam@gmail.com>
2023-01-09 20:12:10 -05:00
Rémi Verschelde
d3fc9d9e41
Merge pull request #71051 from vonagam/consts-are-deep-start
...
GDScript: Begin making constants deep, not shallow or flat
2023-01-09 23:22:59 +01:00
ocean (they/them)
366ec895b1
Assorted enum and native type fixes
2023-01-09 11:08:07 -05:00
Dmitrii Maganov
5e2ac1a31e
GDScript: Begin making constants deep, not shallow or flat
2023-01-08 07:29:10 +02:00
Dmitrii Maganov
532ffc30bd
GDScript: Fix typing of lambda functions
2023-01-06 16:38:22 +02:00
Dmitrii Maganov
10e364bf43
GDScript: Fix array as default value for parameter
2023-01-06 06:25:55 +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
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
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
Rémi Verschelde
ae4c025da9
Merge pull request #69991 from rune-scape/cast-type
...
GDScript: Fix cast producing null
2022-12-23 09:22:21 +01: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
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
rune-scape
213c94b42f
Fix enum value regression
2022-12-16 22:48:25 -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
7d0d6aa16f
GDScript: Fix cast producing null
2022-12-12 19:57:26 -05:00
rune-scape
08449ab16e
Fix String type compatibility being too permissive
2022-12-12 07:27:41 -05:00
Adam Scott
65a49bad5a
Fix constant base typing in extended GDScript class
2022-12-10 13:39:45 -05:00
rune-scape
e79be6ce07
Unify String and StringName
2022-12-05 21:46:47 -05:00
kobewi
d1e4146462
Improve parent signature error
2022-12-01 15:16:16 +01: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
Hugo Locurcio
291d3aaabe
Improve null and object printing to avoid confusion with arrays
...
- Use different syntax for object printing to avoid confusion with arrays.
- Print null as `<null>` to avoid confusion with a string `"null"`.
- Display `<empty>` in editor resource pickers to avoid confusion
with array-based properties.
2022-08-31 15:31:49 +02: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
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
CalebJohn
06a2d83e30
Add regression test for gdscript valid function signature
...
Previously, there was an issue where the gdscript analyzer incorrectly
riased a validation error for code that had a default Dictionary, Array,
or custom type.
2022-05-03 12:46:09 -07:00
PastMoments
b3704e664d
Fixes GDScript define nested dictionary and array as constants #50285
2022-04-19 08:57:23 -04: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
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
strank
960a26f6c0
GDScript: Fix parsing default parameter values from function calls
2022-01-13 19:28:39 -05:00
George Marques
fd643c903d
GDScript: Add annotation to ignore warnings
2022-01-04 09:32:43 -03:00
George Marques
540821a264
GDScript: Fix inferred typed array marked as constant
2021-10-15 10:40:50 -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