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
George Marques
99d4ea8c79
GDScript: Allow supertype objects to be assigned to a subtype variable
...
It allows `get_node()` to be used with typed variables
This is marked as unsafe to warn the user.
2020-08-18 15:12:51 -03:00
George Marques
8bc9b3a2ae
GDScript: Allow implicit type conversion when constructing variants
...
Incidentally fix error message when no valid constructor is found which
was missing an end parenthesis.
2020-08-18 13:12:18 -03:00
George Marques
f374021d52
GDSript: Prevent crash when completing unary operators
2020-08-17 20:49:04 -03:00
George Marques
d45e1befe3
GDScript: Fix wrong argument check for formatting operator
2020-08-17 19:49:54 -03:00
Mariano Suligoy
a8c01df647
Fix GdScript Analyzier not detecting Resource subclass correctly
2020-08-13 19:46:57 -03:00
George Marques
9413446b2d
Merge pull request #41104 from vnen/gdscript-assignment-tidy
...
Tidy up assignment operator check
2020-08-12 08:54:48 -03:00
Rémi Verschelde
cf05486d8e
Merge pull request #41055 from snichols/null-callee-fix
...
Fix crash with null callee
2020-08-11 15:15:43 +02:00
George Marques
69c81309cc
Merge pull request #40673 from ThakeeNathees/gdscript-op-eval-validation
...
GDScript operator evaluation validation bug fix
2020-08-08 10:52:40 -03:00
George Marques
1f14068727
Merge pull request #40951 from bruvzg/gds_cleanup
...
[GDScript] Add static HashMap cleanup.
2020-08-08 10:44:57 -03:00
George Marques
3aef60591b
GDScript: Tidy up assignment operator check
...
The operator is already gathered by the parser, no need to do it again
in the analyzer.
2020-08-08 10:37:51 -03:00
Thakee Nathees
38c7d080e8
GDScript: unsafe arithmetic assignment bug fix
...
Fix : #41051
2020-08-06 11:12:26 +05:30
Stephen Nichols
8a13be50ab
Fixing null callee crash.
2020-08-05 14:41:46 -05:00
George Marques
9adf6d3441
Merge pull request #40690 from ThakeeNathees/arithmetic-assign-type-check-bug-fix
...
GDScript arithmetic assignment type check bug fix
2020-08-03 09:26:09 -03:00
unknown
561af0c17d
Fixed tiny grammar issues in error messages
2020-08-03 14:03:28 +05:30
bruvzg
ee973f5b90
[GDScript] Add static HashMap cleanup.
2020-08-01 22:08:12 +03:00
Lyuma
68566b7bec
GDScript: Fix crash caused by inconsistent get_member
2020-07-29 02:56:03 -07:00
George Marques
04f46aea8d
GDScript: Fix crash on 'await' completion
2020-07-27 17:17:39 -03:00
Thakee Nathees
194c2aa7e2
GDScript: "Object" datatype changed from BUILTIN to NATIVE
...
Fix : #40656
2020-07-26 08:00:55 +05:30
Thakee Nathees
5ba46ddf8e
GDScript arithmetic assignment type check bug fixed
...
Fix : #40686
2020-07-26 06:46:13 +05:30
Thakee Nathees
04dfb78d23
GDScript operator evaluation validation bug fix
...
Fix : #40665
2020-07-24 23:32:29 +05:30
George Marques
a0f54cb95e
Wrap up GDScript 2.0 base implementation
2020-07-22 11:07:51 -03:00
George Marques
aa09b4f85d
Reintroduce code completion
2020-07-20 11:38:40 -03:00
George Marques
dadfcd8aba
Added support for enums to be used as types in GDScript
2020-07-20 11:38:40 -03:00
George Marques
95c0909290
Add warning checks in GDScript analyzer
...
Reenable checking those when validating code.
2020-07-20 11:38:40 -03:00
George Marques
9a76ab8b6a
Add new GDScript type checker
2020-07-20 11:38:40 -03:00
George Marques
5d6e853806
New GDScript tokenizer and parser
...
Sometimes to fix something you have to break it first.
This get GDScript mostly working with the new tokenizer and parser but
a lot of things isn't working yet. It compiles and it's usable, and that
should be enough for now.
Don't worry: other huge commits will come after this.
2020-07-20 11:38:39 -03:00