1
0
Fork 0
Commit Graph

599 Commits

Author SHA1 Message Date
rune-scape 154049ce17 StringName Dictionary keys
also added 'is_string()' method to Variant
and refactored many String type comparisons to use it instead
2024-08-29 13:39:27 -07:00
Danil Alexeev c1322d41e6
GDScript: Replace `assert()` with `Utils.check()` in tests 2024-08-28 17:41:52 +03:00
Rémi Verschelde 4e051ff6f7
Merge pull request #78178 from dalexeev/gds-add-non-tool-extends-tool-error
GDScript: Add warning if non-`@tool` class extends `@tool` class
2024-08-28 13:14:13 +02:00
HolonProduction c824403853 Autocompletion: enable string literal completion in subscripts 2024-08-27 13:02:09 +02:00
Rémi Verschelde 58505b0bce
Merge pull request #94082 from HolonProduction/completion-force
Autocompletion: Rework argument options string literal completion
2024-08-20 10:01:52 +02:00
rune-scape 6e8fa6dd50 GDScript: Fix common mismatched external parser errors 2024-07-31 12:54:16 -07:00
Rémi Verschelde b2facc018a
Merge pull request #94730 from dalexeev/gds-fix-while-locals-clearing
GDScript: Fix locals clearing after exiting `while` block
2024-07-26 13:44:09 +02:00
A Thousand Ships 8f3e2c96eb
[Core] Fix `Variant::construct` of `Object`
Variant type was not updated correctly causing leaks in ref-counted
2024-07-25 12:25:29 +02:00
Danil Alexeev 5350e1beaa
GDScript: Fix locals clearing after exiting `while` block 2024-07-25 12:10:37 +03:00
Rémi Verschelde 77e18da5ff
Merge pull request #94674 from dalexeev/gds-fix-incorrect-setter-call-for-ref-types
GDScript: Fix incorrect setter call for reference types
2024-07-24 10:17:45 +02:00
Danil Alexeev 8c82fd15d2
GDScript: Fix incorrect setter call for reference types 2024-07-24 10:37:35 +03:00
rune-scape 298904d74e GDScriptTestRunner: Fix compiler error output 2024-07-23 12:59:22 -07:00
Danil Alexeev 638148a184
GDScript: Fix false positive cases of `ENUM_VARIABLE_WITHOUT_DEFAULT` 2024-07-22 21:45:01 +03:00
Rémi Verschelde c2b91e2986
Merge pull request #94327 from HolonProduction/underscore_identifier
GDScript: Restore support for `Token::UNDERSCORE` in identifiers
2024-07-17 11:44:01 +02:00
Rémi Verschelde aefd91ae42
Merge pull request #94138 from vnen/gdscript-simple-setter-chain-call-setter
GDScript: Call setter on simple setter chain without getter
2024-07-17 11:43:15 +02:00
HolonProduction 06e732c3ed GDScript: Restore support for `Token::UNDERSCORE` in identifiers 2024-07-15 10:04:11 +02:00
George Marques 87c90a573c
GDScript: Call setter on simple setter chain without getter
Fixes a bug where a member variable was being set directly before
calling the setter.
2024-07-09 13:01:59 -03:00
Rémi Verschelde 92320c9b73
Merge pull request #94025 from dalexeev/gds-fix-implicit-cast-typed-array-param
GDScript: Fix implicit cast to typed array when passing parameter
2024-07-09 16:47:20 +02:00
Rémi Verschelde daba91d8c6
Merge pull request #93897 from akien-mga/vformat-better-error-message
Core: Improve `vformat` error reporting on `sprintf` failure
2024-07-09 00:03:17 +02:00
A Thousand Ships f68ab70a6a
[GDScript] Fix `get_method` for lambda self `Callable`s 2024-07-08 18:01:54 +02:00
HolonProduction 0abd0ae364 Autocompletion: rework argument options string literal completion 2024-07-08 17:53:36 +02:00
Danil Alexeev b4cb7ec2bb
GDScript: Fix implicit cast to typed array when passing parameter 2024-07-07 13:43:09 +03:00
A Thousand Ships aa28782be3
[GDScript] Fix `get_argument_count` for lambda `Callable`s 2024-07-05 13:53:56 +02:00
Rémi Verschelde 496b7b8482
Core: Improve vformat error reporting on sprintf failure
And fix a few occurrences of formatting errors that led me to this.
2024-07-04 10:54:55 +02:00
Danil Alexeev 3f52871f70
GDScript: Add warning if non-`@tool` class extends `@tool` class 2024-07-04 10:31:01 +03:00
Danil Alexeev d15ed0bcbb
GDScript: Fix false positive `CONFUSABLE_CAPTURE_REASSIGNMENT` warnings 2024-06-28 16:41:32 +03:00
Danil Alexeev 68898dbcc9
GDScript: Add `CONFUSABLE_CAPTURE_REASSIGNMENT` warning 2024-06-28 11:12:01 +03:00
Rémi Verschelde de59dca156
Merge pull request #93384 from dalexeev/gds-fix-non-global-class-export
GDScript: Fix non-global class export
2024-06-21 13:55:23 +02:00
Rémi Verschelde 5ac2631af7
Merge pull request #92688 from HolonProduction/autocompletion-batch-2
Add more autocompletion tests
2024-06-21 10:14:13 +02:00
Danil Alexeev 24b6edcd38
GDScript: Fix non-global class export 2024-06-20 14:30:12 +03:00
HolonProduction 51f74af2ac Autocompletion: Add support for string name option in more places 2024-06-12 20:38:43 +02:00
PreslavPetrov 653a8b113a Register the export info correctly when a global class script is used as the variable type for Node 2024-06-03 13:28:17 +01:00
HolonProduction 48e297c144 Add more autocompletion tests 2024-06-02 15:52:21 +02:00
Danil Alexeev 18d8838051
GDScript: Fix subscript resolution on constant non-metatype GDScript base 2024-05-30 17:37:05 +03:00
Danil Alexeev 4b692959de
GDScript: Fix lambdas capturing non-local variables 2024-05-22 10:07:31 +03:00
Rémi Verschelde 6761923f4f
Merge pull request #90716 from dalexeev/gds-fix-export-annotation-issues
GDScript: Fix some export annotation issues
2024-05-19 11:21:00 +02:00
Danil Alexeev 7dd801c580
GDScript: Fix `STANDALONE_EXPRESSION` warning for `preload()` 2024-05-17 10:33:01 +03:00
kobewi 413c11357d Use Core/Scene stringnames consistently 2024-05-13 23:41:07 +02:00
Danil Alexeev 76b2d85c9f
GDScript: Fix some export annotation issues 2024-05-13 17:49:06 +03:00
A Thousand Ships a0dbdcc3ab
Replace `find` with `contains/has` where applicable
* Replaces `find(...) != -1` with `contains` for `String`
* Replaces `find(...) == -1` with `!contains` for `String`
* Replaces `find(...) != -1` with `has` for containers
* Replaces `find(...) == -1` with `!has` for containers
2024-05-08 12:37:42 +02:00
Rémi Verschelde 7d03b1de0b
Style: Trim trailing whitespace and ensure newline at EOF
Found by apply the file_format checks again via #91597.
2024-05-08 10:12:46 +02:00
Rémi Verschelde 4b070e8031
Fix various typos with codespell
Using 2.2.7.dev217+g10c2abcf.

Had to add `colour` to the ignore list as we used it as an alias/keyword for the
documentation of color-related APIs.
Also ignore recommendations to change `thirdparty` to either `third-party` or
`third party`, which are correct but we use the former fairly consistently.
2024-05-07 10:08:42 +02:00
A Thousand Ships 955d5affa8
Reduce and prevent unnecessary random-access to `List`
Random-access access to `List` when iterating is `O(n^2)` (`O(n)` when
accessing a single element)

* Removed subscript operator, in favor of a more explicit `get`
* Added conversion from `Iterator` to `ConstIterator`
* Remade existing operations into other solutions when applicable
2024-05-04 16:08:55 +02:00
K. S. Ernest (iFire) Lee f9b488508c
Add PackedVector4Array Variant type
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-05-03 00:58:27 +02:00
Rémi Verschelde 76f642b962
Merge pull request #91412 from dalexeev/gds-fix-non-static-access-in-static-context
GDScript: Fix access non-static members in static context
2024-05-02 17:31:39 +02:00
Rémi Verschelde a7029e4c8a
Merge pull request #91364 from vnen/gdscript-implicit-ready-base-first
GDScript: Call implicit ready on base script first
2024-05-02 17:31:32 +02:00
George Marques 99b702ea3d
GDScript: Call implicit ready on base script first
It is generally expected that the base class is called before the
inherited clas. This commit implements this behavior for the implicit
ready function (`@onready` annotation) to make it consistent with the
expectations.
2024-05-02 11:25:52 -03:00
Danil Alexeev 8122a27eac
GDScript: Fix access non-static members in static context 2024-05-01 19:55:40 +03:00
A Thousand Ships c4e24d2b3b
[GDScript] Correctly report invalid read-only access 2024-05-01 12:28:47 +02:00
Rémi Verschelde 731ea17dd4
Merge pull request #91192 from vnen/gdscript-validated-native-static-calls
GDScript: Perform validated calls with static methods
2024-05-01 09:55:04 +02:00
Rémi Verschelde 273a643145
Merge pull request #89647 from AThousandShips/read_only_dict
[Core] Fix property access on read-only `Dictionary`
2024-05-01 09:54:48 +02:00
Danil Alexeev 2778069025
GDScript: Fix object iterator opcodes 2024-04-26 09:21:55 +03:00
George Marques 7ca038effa
GDScript: Perform validated calls with static methods
When the types are validated at compile time, this type of call runs
faster. It is already used for instance methods, this adds this
optimization to native static methods as well.
2024-04-25 21:19:40 -03:00
Danil Alexeev 4136ed7fc8
GDScript: Fix test `reset_uninit_local_vars.gd` failure 2024-04-24 20:49:52 +03:00
Rémi Verschelde 69a23e64e4
Merge pull request #89990 from dalexeev/gds-reset-uninit-local-vars
GDScript: Fix uninitialized local variables not being reset
2024-04-24 18:54:56 +02:00
Rémi Verschelde 6b28cb6721
Merge pull request #89884 from HolonProduction/tests-batch-2
Completion Tests: Add script to owner
2024-04-23 19:10:57 +02:00
A Thousand Ships ec29c3e784
[Core] Fix property access on read-only `Dictionary` 2024-04-22 13:57:34 +02:00
Rémi Verschelde 978d206f34
Merge pull request #90794 from vnen/gdscript-no-unused-constant-warning-with-underscore
GDScript: Suppress unused constant warning with underscore
2024-04-18 15:17:13 +02:00
George Marques a3b3a20ac0
GDScript: Suppress unused constant warning with underscore
The warning message mentions that local constants prefixed with `_` does
not generate the warning. This commit actually implements this warning
suppression.
2024-04-18 09:58:23 -03:00
George Marques f9048fcd7d
GDScript: Warn when enum variable has no default
The default will always be set to `0`, so if it's not a valid value in
the enum, the warning is shown.
2024-04-16 11:46:59 -03:00
Rémi Verschelde 684e7aa37a
Merge pull request #89472 from dalexeev/gds-fix-bin-tokenizer-continuation-lines
GDScript: Fix continuation lines in `GDScriptTokenizerBuffer`
2024-04-15 18:14:38 +02:00
George Marques 030995c10d
GDScript: Allow casting enum to int
An enum value is always an integer so the cast is valid. The code here
now consider this case to avoid giving an error message.
2024-04-12 11:49:21 -03:00
Aiden Storey 74177d79c9
Fix multiline array/dictionary match statements
Currently array and dictionary expressions cannot be spread over
multiple lines in match statements.

Adding mutliline push/pop while parsing the pattern for bracket and
brace enables the ability for these to be multiline. This enables more
complex patterns to be matched without exceeding line limits.

Fixes #90372
2024-04-12 10:59:28 +02:00
Rémi Verschelde 67076c167d
Merge pull request #90448 from vnen/gdscript-infer-string-format
GDScript: Infer type with string format operator
2024-04-10 17:49:49 +02:00
Rémi Verschelde 8611fd8400
Merge pull request #90442 from vnen/gdscript-dont-warn-using-default-builtin
GDScript: Don't warn on unassigned for builtin-typed variables
2024-04-10 17:49:44 +02:00
George Marques 877802e252
GDScript: Don't warn on unassigned for builtin-typed variables
If the type of a variable is a built-in Variant type, then it will
automatically be assigned a default value based on the type. This means
that the explicit initialization may be unnecessary. Thus this commit
removes the warning in such case.

This also changes the meaning of the unassigned warning to happen when
the variable is used before being assigned, not when it has zero
assignments.
2024-04-10 11:59:57 -03:00
George Marques 4bdba718c5
GDScript: Infer type with string format operator
If the left value type is known to be String, assume the format operator
(`%`) will return a string, since it works with any type in the right
hand side. This is also used by type inference even if the right hand
type is unknown at compile time.
2024-04-10 11:49:30 -03:00
Danil Alexeev 02253b6b91
GDScript: Fix continuation lines in `GDScriptTokenizerBuffer` 2024-04-10 08:51:02 +03:00
Rémi Verschelde 9a9045cf7a
Merge pull request #89382 from dcaoc03/master
Fix enum autocompletion for core classes
2024-04-09 22:25:13 +02:00
Rémi Verschelde f8ca571efe
Merge pull request #84043 from dalexeev/gds-fix-unsafe-cast-warning
GDScript: Fix `UNSAFE_CAST` warning
2024-04-09 22:24:55 +02:00
kobewi 809c6817be Add tests for signal await with parameters 2024-04-08 19:12:01 +02:00
Danil Alexeev 27d7760f41
GDScript: Fix uninitialized local variables not being reset 2024-03-30 23:25:30 +03:00
HolonProduction d2c2194937 Completion Tests: Add script to owner 2024-03-25 16:17:44 +01:00
A Thousand Ships db455e5bee
[Core] Disconnect one-shot signals before calling callbacks
This prevents infinite recursion with one-shot connections emitting
themselves
2024-03-20 20:24:44 +01:00
Danil Alexeev d1e2afaae3
GDScript: Do not produce `UNUSED_SIGNAL` warning for common implicit uses 2024-03-19 17:43:10 +03:00
Diogo Costa 935ea10f3a Fixed enum autocompletion for core classes (Issue #88858)
Minor fix consisted in the use of [[fallthrough]] macro
2024-03-15 20:20:36 +00:00
Rémi Verschelde a1c476f9d7
Merge pull request #87680 from AThousandShips/the_angry_count
Add methods to get argument count of methods
2024-03-13 22:16:43 +01:00
Danil Alexeev ef1909fca3
GDScript: Fix `@warning_ignore` annotation issues 2024-03-12 19:00:06 +03:00
A Thousand Ships 59bcc2888c
Add methods to get argument count of methods
Added to:
* `Callable`s
* `Object`s
* `ClassDB`
* `Script(Instance)`s
2024-03-10 11:02:43 +01:00
Rémi Verschelde 0acc4276b6
Merge pull request #82952 from AbelToy/gds-export-array
Allow `@export`ed Arrays to set property hints for their elements
2024-03-06 09:49:53 +01:00
Abel Toy 882441a0ad
Support Array and PackedArray in @export_* 2024-03-06 16:17:54 +09:00
A Thousand Ships 1e61e42250
[GDScript] Fix some test file paths 2024-03-04 19:11:28 +01:00
Rémi Verschelde 7be96a55c4
Merge pull request #86973 from HolonProduction/tests-batch-1
Add tests for `get_node` autocompletion
2024-03-04 13:32:55 +01:00
20kdc 24181d1055
GDScript: Adjust STATIC_CALLED_ON_INSTANCE warning to not default to the native type, and to not trigger on self-calls
Not defaulting to the native type rationale:

Defaulting to the native type is less than useful, as:

* There are very few native types that are extensible and have static methods.
* Defaulting to the native type does not account for a method being script-defined.

While the "real fix" would be to carefully track the source of the method, the get_function_signature method is already complicated enough.

This will at least ensure the resulting code should always be valid.

Not triggering on self-calls rationale:

Found in PR comment https://github.com/godotengine/godot/pull/85918#issuecomment-1935864459

```
static func example():
	pass

func example2():
	example() # self-call on static function
```

Disabling this warning on self-calls is:

* Consistent with other languages
* Important for anonymous classes (where the output code is unusable)
2024-03-01 17:14:59 +03:00
HolonProduction a2e7c64dc4 Cleanup 2024-03-01 13:06:37 +01:00
HolonProduction 1f42455e0a Debugging additions 2024-03-01 11:38:49 +01:00
HolonProduction fc7d7d3dae Add test for `get_node` autocompletion 2024-03-01 11:24:06 +01:00
Danil Alexeev d90c9db27f
Core: Add `Callable.create` static method for `Variant` callables 2024-02-29 10:45:00 +03:00
Rémi Verschelde 21ee3716c2
Merge pull request #82122 from dalexeev/gds-add-export-hidden-annotation
GDScript: Add `@export_storage` annotation
2024-02-27 21:22:49 +01:00
Rémi Verschelde 77666286b7
Merge pull request #88020 from emre0altan/match-null-crashes-GDScript-compiler
GDScript: Set `has_type` false if it is `BUILTIN` but `Variant::NIL`
2024-02-23 22:18:55 +01:00
A Thousand Ships d7a72d72e6
Fix running tests in template builds 2024-02-22 18:05:42 +01:00
emre0altan 081fa324fd set has_type false if it is BUILTIN but Variant::NIL 2024-02-11 13:47:12 +00:00
George Marques 72e5f8c31e
GDScript: Enable compression on export
Besides the regular option to export GDScript as binary tokens, this
also includes a compression option on top of it. The binary format
needs to encode some information which generally makes it bigger than
the source text. This option reduces that difference by using Zstandard
compression on the buffer.
2024-02-08 11:20:07 -03:00
George Marques b4d0a09f15
GDScript: Reintroduce binary tokenization on export
This adds back a function available in 3.x: exporting the GDScript
files in a binary form by converting the tokens recognized by the
tokenizer into a data format.

It is enabled by default on export but can be manually disabled. The
format helps with loading times since, the tokens are easily
reconstructed, and with hiding the source code, since recovering it
would require a specialized tool. Code comments are not stored in this
format.

The `--test` command can also include a `--use-binary-tokens` flag
which will run the GDScript tests with the binary format instead of the
regular source code by converting them in-memory before the test runs.
2024-02-08 11:20:05 -03:00
Rémi Verschelde 7223c5b54a
Fix various typos with codespell
Using 2.2.7.dev115+g0eb441d6.

Had to add `cancelled` to the ignore list, as it's a Wayland signal which
we're handling in our code, so we don't want codespell to fix that "typo".

Also includes the typo fix from #87927.

Co-authored-by: Divyanshu Shekhar <61140213+divshekhar@users.noreply.github.com>
2024-02-07 11:09:34 +01:00
Danil Alexeev 2bf25954b4
GDScript: Add `is not` operator 2024-02-04 17:36:53 +03:00
Rémi Verschelde 9572cf5ab2
Merge pull request #86823 from dalexeev/gds-utility-func-as-callable
GDScript: Allow utility functions to be used as `Callable`
2024-01-30 17:47:50 +01:00
Rémi Verschelde 745f8e112f
Revert "Add UID support to GDScript files"
This reverts commit c7f68a27ec.

We still think GDScript files need UIDs to allow safe refactoring,
but we're still debating what form those should take exactly.

So far there seems to be agreement that it shouldn't be done via an
annotation as implemented here, so we're reverting this one for now,
to revisit the feature in a future PR.
2024-01-29 21:00:26 +01:00
Rémi Verschelde baf87e2717
Merge pull request #87294 from vnen/allow-free-callable
Allow `free()` to be used as Callable
2024-01-18 16:35:14 +01:00
Rémi Verschelde d3003c48b3
Merge pull request #67132 from KoBeWi/This_commit_message_is_auto-generated._Do_not_modify_it-
Add UID support to GDScript files
2024-01-18 16:33:14 +01:00