Commit Graph

610 Commits

Author SHA1 Message Date
277b24dfb7 Make core/ includes absolute, remove subfolders from include path
This allows more consistency in the manner we include core headers,
where previously there would be a mix of absolute, relative and
include path-dependent includes.
2018-09-12 09:52:22 +02:00
0faafa6f4d Fix crash when extending non-existing GDScript file
Fixes #21682 with a partial revert of #21411.
The ~Ref() destructor (from 'scriptres') already takes care
of freeing the 'script' resource.
2018-09-10 20:46:20 +02:00
f051f5110e Fixed scientific notaion not highlighting correctly, issue 21435 2018-09-08 13:42:11 +01:00
d227a9ae12 Fixed return type for get_stack() function call 2018-09-05 11:29:06 +01:00
f06b7d40c8 Merge pull request #21449 from vnen/gdscript-builtin-is
Allow `is` operator to test built-in types
2018-08-27 17:48:11 +02:00
5b87864385 Merge pull request #21369 from Noshyaar/exportflag
Deprecating bit flags export with no hint text
2018-08-27 17:47:21 +02:00
49cf675ef4 Merge pull request #21450 from vnen/gdscript-type-space
Remove space before colon on type hints
2018-08-27 10:42:19 +02:00
de45b18ddb GDScript: Remove space before colon on type hints 2018-08-26 13:43:13 -03:00
4b974a36b7 GDScript: Allow is operator to test built-in types 2018-08-26 13:31:23 -03:00
e4af39cbc0 Fixes several resource leaks in ...
- gdscript
- gdscript_compiler
- regex
- android/export
- gles3/rasterizer (scene and storage)
2018-08-26 09:19:02 +08:00
cee6d5620a Deprecating bit flags export with no hint text 2018-08-24 20:46:04 +07:00
52466d57e9 Make some debug prints verbose-only, remove others 2018-08-24 14:59:01 +02:00
94d662ad55 GDScript: Ignore unused arguments/local vars that start with _
Makes it simple to ignore particular arguments without adding special
comments, especially in engine-defined functions.
2018-08-21 20:29:43 -03:00
4d2b9a4b35 GDScript: Show warning messages only on debugger
Don't show on console/output anymore.
2018-08-21 20:29:33 -03:00
fdf18a4198 GDScript: Fix undefined behavior on GDScriptTokenizerBuffer 2018-08-21 13:54:52 -03:00
abbdb9d951 GDScript: Forbid invalid identifiers in match bindings
Also forbid shadowing a variable from an upper scope.
2018-08-21 13:38:18 -03:00
d97624e295 GDSCript: Fix cyclic class dependency detection 2018-08-21 13:14:11 -03:00
649c3bee3b Highlight multiline strings as strings instead of comments
Since multiline comments are not officially supported in GDScript, it is
more common to see multiline strings being used as strings rather than
as comments (which are actually standalone expressions here).

This closes #21142.
2018-08-19 13:47:57 +02:00
3ed9231117 Fix error spam from loading script class icons 2018-08-15 10:17:28 -05:00
6d9cc032e7 Add custom icons to script classes. 2018-08-14 14:18:05 -05:00
b4f579b5ba Merge pull request #20583 from neikeq/issue-15371
Fix case where exported properties value is lost
2018-08-14 21:08:56 +02:00
179e15f876 Remove usage console spam 2018-08-13 16:51:17 +03:00
eb48119821 Added system for GDScript warnings
- Count and panel per script.
- Ability to disable warnings per script using special comments.
- Ability to disable warnings globally using Project Settings.
- Option to treat enabled warnings as errors.
2018-08-10 16:00:47 -03:00
ba974b8d1e Allow some non-integer built-in constants in gdscript 2018-07-31 17:56:48 +02:00
f3c7527225 Fix case where exported properties value is lost
Fixes exported property modified values lost when creating a placeholder script instance with a failed script compilation

- Object set/get will call PlaceHolderScriptInstance's new fallback set/get methods as a last resort. This way, placeholder script instances can keep the values for storage or until the script is compiled successfuly.
- Script::can_instance() will only return true if a real script instance can be created. Otherwise, in the case of placeholder script instances, it will return false.
- Object::set_script(script) is now in charge of requesting the creation of placeholder script instances. It's no longer Script::instance_create(owner)'s duty.
- PlaceHolderScriptInstance has a new method set_build_failed(bool) to determine whether it should call into its script methods or not.
- Fixed a few problems during reloading of C# scripts.
2018-07-29 22:40:12 +02:00
e8da2a60b3 GDScript: Fix parse error in string formatting 2018-07-26 10:52:11 -03:00
0b78e4f9e3 GDScript: Add type inference syntax for function arguments 2018-07-25 21:06:35 -03:00
7db7b43cb0 GDScript: Fix type detection for String formatting operator 2018-07-25 20:50:13 -03:00
aeb0b3114d GDScript: Fix type detection on Object typed assign
Also make typed assigns a debug-only thing, so release builds are more
lenient on errors.
2018-07-25 20:50:12 -03:00
a3ae4a9510 GDScript: Allow accessing constants of outer classes 2018-07-25 20:50:12 -03:00
a62f4af7ba GDScript: Enable built-in function introspection in non-tools
Only for debug builds. Fix problems in non-tools targets.
2018-07-25 20:50:12 -03:00
3d6609303b GDScript: Fix bogus error when a cursor token is found on class 2018-07-25 20:50:12 -03:00
1ac9c0fe3a GDScript: Allow strict conversion when assigning typed variables 2018-07-25 20:50:12 -03:00
96ee93e8c7 GDScript: Fix mismatching between export hint and type hint 2018-07-25 20:50:12 -03:00
4cb17191b8 GDScript: Allow inherited method to add optional arguments
Also show the parent method signature in the error message.
2018-07-25 20:50:11 -03:00
cd6ad5462c GDScript: Fix returned value of get_default_argument_count() 2018-07-25 20:50:11 -03:00
65c069c8d9 GDScript: Fix main script detection 2018-07-25 20:50:11 -03:00
b7bd85e70c GDScript: Look up local scope first for detecting type 2018-07-25 20:50:11 -03:00
0e29f7974b Reduce unnecessary COW on Vector by make writing explicit
This commit makes operator[] on Vector const and adds a write proxy to it.  From
now on writes to Vectors need to happen through the .write proxy. So for
instance:

Vector<int> vec;
vec.push_back(10);
std::cout << vec[0] << std::endl;
vec.write[0] = 20;

Failing to use the .write proxy will cause a compilation error.

In addition COWable datatypes can now embed a CowData pointer to their data.
This means that String, CharString, and VMap no longer use or derive from
Vector.

_ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug
builds. This is a lot faster for Vector in the editor and while running tests.
The reason why this difference used to exist is because force-inlined methods
used to give a bad debugging experience. After extensive testing with modern
compilers this is no longer the case.
2018-07-26 00:54:16 +02:00
3e87ad5187 Rewrite code completion
- Use data type struct from the parser.
- Avail from type hints when type can't be guessed.
- Consider inner classes and other scripts when looking for candidates.
2018-07-20 21:55:18 -03:00
3445dca01d Add ability to infer variable type from assigned value
Syntax: var x : = 42
Infers the type of "x" to be an integer.
2018-07-20 21:55:18 -03:00
03746da73f Add editor highlight for type-safe lines
The line number is hightlighted to indicate that the line contains only
type-safe code.
2018-07-20 21:55:18 -03:00
a2305cd8b2 Fix line number detection in some parser nodes 2018-07-20 21:55:17 -03:00
75f395c2a0 Use type hints to improve completion
- Allow type hints to be completed.
- Use type information to infer completion candidates.
- Show typed function signature in tooltip.
- Add type hints when completing declaration from virtual functions
(optional).
2018-07-20 21:55:17 -03:00
95351ac867 Add syntax highlighting to type hints 2018-07-20 21:55:17 -03:00
e3d72d14ff Use type information to enable GDScript introspection
This makes the Script API provide accurate information when requesting
property or method info.
2018-07-20 21:55:17 -03:00
4b18c4e448 Add typed instructions to GDScript
- Typed assignment (built-in, native, and script).
- Cast (built-in conversion; native and script checks).
- Check type of functions arguments on call.
- Check type of members on set.
2018-07-20 21:55:17 -03:00
743053734f Add static type checks in the parser
- Resolve types for all identifiers.
- Error when identifier is not found.
- Match return type and error when not returning a value when it should.
- Check unreachable code (code after sure return).
- Match argument count and types for function calls.
- Determine if return type of function call matches the assignment.
- Do static type check with match statement when possible.
- Use type hints to determine export type.
- Check compatibility between type hint and explicit export type.
2018-07-20 21:55:16 -03:00
f7793fc5c9 Store type hint of declared identifiers 2018-07-20 21:55:16 -03:00
b7a00aead0 Move inheritance resolution to the parser 2018-07-20 21:55:16 -03:00