summaryrefslogtreecommitdiff
path: root/modules/gdscript/gdscript_analyzer.cpp
AgeCommit message (Collapse)Author
2021-04-28GDScript: Fix crash when base of an attribute is invalidGeorge Marques
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-28GDScript: Implement lambdas compilation and runtimeGeorge Marques
2021-04-28GDScript: Add lambdas to the type analyzerGeorge Marques
- Lambdas are always callables (no specific signature match). - Captures from the current context are evaluated.
2021-04-28GDScript: Add lambda syntax parsingGeorge Marques
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-23GDScript: Fix resolution of dictionary keysGeorge Marques
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-03-30Merge pull request #47131 from vnen/gdscript-export-fixRémi Verschelde
Fix a few issues with @export in GDScript
2021-03-30GDScript: Fix array type check on constantsGeorge Marques
They mistakenly pointing to the wrong union member (variable instead of constant).
2021-03-30Move GDSript annotation application after type-checkingGeorge Marques
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-29Add typed arrays to GDScriptGeorge Marques
- 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-01-11Merge pull request #43176 from mateosss/crash-uninit-constRémi Verschelde
Fix crash by adding nullcheck for uninitialized constants
2021-01-11Merge pull request #44719 from ThakeeNathees/assert-argument-bug-fixedRémi Verschelde
GDScript assert message parsing bug fixed
2021-01-11Merge pull request #44672 from ThakeeNathees/array-dict-const-fold-bug-fixRémi Verschelde
Array/Dictionary marked as not safe to const fold
2021-01-11Merge pull request #44889 from ThakeeNathees/builtin-invalid-call-crash-fixRémi Verschelde
GDScript invalid method call on built-in crash fix
2021-01-03GDScript builtin invalid function call crash fixThakee Nathees
Fix: #44852
2021-01-01Update copyright statements to 2021Rémi Verschelde
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 🎆
2020-12-28Rename empty() to is_empty()Marcel Admiraal
2020-12-27GDScript assert message parsing bug fixedThakee Nathees
Fix: #43540
2020-12-25Array/Dictionary marked as not safe to const foldThakee Nathees
Fix: #44459
2020-12-15Merge pull request #43890 from vnen/gdscript-builtin-functions-refactorRémi Verschelde
GDScript: Refactor builtin functions
2020-12-03Merge pull request #44011 from KoBeWi/red_roses_minus_blue_violetsRémi Verschelde
Fix subtracting colors and quats
2020-12-03Fix subtracting colors and quatsTomasz Chabora
2020-12-02Merge pull request #41095 from ThakeeNathees/GDScript-DocumentationRémi Verschelde
GDScript(2.0) Documentation generation system
2020-11-30GDScript: Don't construct ref values in compilerGeorge Marques
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-29Documentation generation for GDScriptThakee Nathees
- 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-27Merge pull request #43914 from ThakeeNathees/range-argument-type-bug-fixRémi Verschelde
GDScript: range function type check bug fixed
2020-11-27GDScript range function typecheck bug fixedThakee Nathees
Fix: #43586
2020-11-26Merge pull request #43895 from vnen/gdscript-operators-fixRémi Verschelde
GDScript: Improve handling of operators
2020-11-26GDScript: Improve handling of operatorsGeorge Marques
- 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-26GDScript: Don't clear depended parsers too soonGeorge Marques
It can wait until the analyzer itself is destructed, otherwise other phases might be using freed parsers.
2020-11-26GDScript: Give an error if dependency can't be parsedGeorge Marques
Otherwise this may lead to a crash when the dependency is not present.
2020-11-26GDScript: Refactor builtin functionsGeorge Marques
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-25GDScript: Fix range() being treated as array when optimized outGeorge Marques
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-09Variant: Rename Type::_RID to Type::RIDRémi Verschelde
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-09Refactored variant constructor logicreduz
2020-11-07Reorganized core/ directory, it was too fatty alreadyreduz
-Removed FuncRef, since Callable makes it obsolete -Removed int_types.h as its obsolete in c++11+ -Changed color names code
2020-11-07Refactored variant setters/gettersreduz
-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-03Merge pull request #41516 from Lunatoid/allow-object-newRémi Verschelde
Fixed ParseError when calling Object.new()
2020-10-29Fix crash by adding nullcheck for uninitialized constantsMateo de Mayo
2020-10-20Merge pull request #41983 from ThakeeNathees/array-const-folding-bug-fixGeorge Marques
Array/Dictionary Nodes no more reduced to array/dictionary variant
2020-09-18Fix typos with codespellRémi Verschelde
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-11Array/Dictinoary no more reduced to array/dictionary variantThakee Nathees
Fix: #41377 Fix: #20436 Fix: #41953
2020-09-08Merge pull request #41709 from ThakeeNathees/dictionary-indexing-bug-fixRémi Verschelde
Fixed parser error when indexing a dictionary.
2020-09-06GDScript: parameter infer type bug fixThakee Nathees
Fix: #41772
2020-09-03fixed parser error when indexing a dictionary.Thakee Nathees
Fix: #41707
2020-09-02Fixed ParseError when calling Object.new()Lunatoid
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-01Change GDScript compiler to use codegen abstractionGeorge Marques
2020-09-01GDScript: Don't mark function parameters as constantGeorge Marques
They can be reassigned as if it were a local variable.
2020-09-01GDScript: Properly set class inheritance for global classesGeorge Marques
2020-09-01GDScript: Fix analysis of singleton dependenciesGeorge Marques
Sometimes a singleton might depend on another before they are fully compiled so we can't rely on globals in this case.
2020-09-01GDScript: Don't try to parse constant scripts that aren't validGeorge Marques
Since it's likely that they won't parse correctly.