Commit graph

105 commits

Author SHA1 Message Date
Raul Santos
f685c69bd4
C#: Add analyzer release tracking
Fixes diagnostic RS2008.
2024-02-19 19:47:40 +01:00
Raul Santos
fe280ef9ae
C#: Various fixes to generic scripts
- Report a diagnostic when there are multiple classes that match the script file name in the same script since that will result in a duplicate path key in the bimap and it's not allowed.
- Fix InspectorPlugin to handle empty paths in case the project was built with a previous version of Godot that used empty paths for generic scripts.
- Add tests for the new diagnostic GD0003.
2024-02-19 06:33:13 +01:00
Paul Joannon
5981886fb7
Clean diagnostic rules
Move the following diagnostics into static readonly fields: GD0101, GD0102, GD0103, GD0104, GD0105, GD0106, GD0107, GD0201, GD0202, GD0203, GD0301, GD0302, GD0303, GD0401, GD0402.

To be more consistent, the titles for the following diagnostics were modified: GD0101, GD0105, GD0106, GD0302, GD0303, GD0401, GD0402. A subsequent update of the documentation repo is needed.

Tests for the following diagnostics were created: GD0201, GD0202, GD0203.
2024-02-18 16:47:20 +01:00
Raul Santos
7b348708e8
C#: Use SymbolEqualityComparer
Use `SymbolEqualityComparer` to compare symbols and fix `RS1024` warning.
2024-02-14 17:33:06 +01:00
Raul Santos
5815d1c8c8
Improve handling of generic C# types
- Create CSharpScript for generic C# types.
  - `ScriptPathAttributeGenerator` registers the path for the generic type definition.
  - `ScriptManagerBridge` lookup uses the generic type definition that was registered by the generator.
  - Constructed generic types use a virtual `csharp://` path so they can be registered in the map and loaded as if there was a different file for each constructed type, even though they all share the same real path.
  - This allows getting the base type for a C# type that derives from a generic type.
- Shows base scripts in the _Add Node_ and _Create Resource_ dialogs even when they are generic types.
  - `get_global_class_name` implementation was moved to C# and now always returns the base type even if the script is not a global class (this behavior matches GDScript).
- Create `CSharpScript::TypeInfo` struct to hold all the type information about the C# type that corresponds to the `CSharpScript`, and use it as the parameter in `UpdateScriptClassInfo` to avoid adding more parameters.
2024-02-08 18:31:13 +01:00
Rémi Verschelde
85b2c947b2
Merge pull request #87518 from paulloz/dotnet/fix-warnings
Clean a number of C# warnings
2024-01-26 11:46:37 +01:00
Paul Joannon
46b3096570
Clean a bunch of C# warnings
- `[Obsolete]` tag generated in the middle of documentation comments
- Potential `null` values in generators
- Obsolete call to `GetEditorInterface()`
- We don't want `Godot.Collections.Array` to end with `Collection`
- A few culture specifications and use of `AsSpan` instead of `SubString` in `StringExtensions`
- Disable CA1716 in GodotSharp
2024-01-26 09:38:33 +01:00
Alberto Vilches
692412562d C#: Fix to allow usage of [MustBeVariant] in generic typed attributes 2024-01-21 22:29:29 +01:00
Mikael Klasson
a2b183067c fix: use correct number in GD0103 link 2023-12-27 20:30:59 +09:00
Rémi Verschelde
d76c1d0e51
Bump version to 4.3-dev
The essential doesn't change.

-- Samuel Beckett, Waiting for Godot
2023-11-29 23:00:27 +01:00
Rémi Verschelde
bf41c6bd34
Merge pull request #82918 from raulsntos/dotnet/only-node-can-export-node
C#: Report diagnostic for Node exports in a type that doesn't derive from Node
2023-10-27 11:36:33 +02:00
Raul Santos
fe078219fc
C#: Fix generated nested class order 2023-10-18 03:37:57 +02:00
Rémi Verschelde
ca09afd530
Merge pull request #80489 from raulsntos/dotnet/diagnostics
C#: Improve diagnostic messages and add help link
2023-10-17 23:59:17 +02:00
Raul Santos
aa4dba5b56
C#: Improve diagnostic messages and add help link
- Reword diagnostic messages.
- Add help link to diagnostics.
2023-10-17 19:45:09 +02:00
Raul Santos
bfe1a93023
C#: Report diagnostic for Node exports in a type that doesn't derive from Node 2023-10-06 19:03:18 +02:00
Rémi Verschelde
4410b0b0e1
Merge pull request #67304 from wscalf/master
Allow readonly and writeonly C# properties to be accessed from GDScript
2023-09-26 16:36:33 +02:00
Zae
67e1373e5a C#: make C# static methods accessible. 2023-09-20 22:49:33 +08:00
William Scalf
41cf94e8b6 Allow readonly and writeonly C# properties to be accessed from GDScript 2023-08-13 18:35:10 -04:00
Yuri Sizov
0a9006a5aa Merge pull request #79501 from raulsntos/dotnet/warnings/NU5128
C#: Suppress NU5128 warning
2023-08-02 21:36:51 +02:00
Yuri Sizov
b78fe83ed4 Merge pull request #79239 from raulsntos/dotnet/document-generated-members
C#: Document generated members
2023-07-25 21:51:20 +02:00
Yuri Sizov
f8f06d3d38
Merge pull request #78264 from magian1127/4.0StringName
C#: Add `PropertyHint.Enum` support to `Array<StringName>`
2023-07-18 12:19:37 +02:00
Raul Santos
f2e9cbf9e8
C#: Suppress NU5128 warning
Suppress dependencies of SourceGenerators package to fix NU5128.
2023-07-15 15:25:37 +02:00
Yuri Sizov
bb6879e7cc Merge pull request #79007 from 398utubzyt/dotnet/globalclass-analyzer
C#: Add a Roslyn analyzer for global classes
2023-07-14 18:49:16 +02:00
Raul Santos
12e4aa93b3
C#: Document generated members
Documents generated members and tries to discourage users from calling/overriding internal methods that only exist to be used by the engine.
2023-07-09 14:26:15 +02:00
398utubzyt
8e56c807cc C#: Add a Roslyn analyzer for global classes
Co-Authored-By: Raul Santos <raulsntos@gmail.com>
2023-07-07 16:37:16 -07:00
Rémi Verschelde
26a58976e7
Merge pull request #79094 from raulsntos/dotnet/fix-symbol-comparison
C#: Compare symbol names without null flow state
2023-07-07 08:35:20 +02:00
Raul Santos
671a5b4ea5
C#: Compare symbol names without null flow state 2023-07-06 16:10:14 +02:00
Rémi Verschelde
346f1ab86b
Bump version to 4.2-dev
Keep on waitin'
2023-07-05 22:07:03 +02:00
Raul Santos
48e20c628a
C#: Set PropertyInfo.class_name for method parameters 2023-06-16 23:19:38 +02:00
Magian
e8aeb6baa0 C# Array<StringName> support PropertyHint.Enum 2023-06-15 16:01:42 +08:00
Raul Santos
a1f454fee3
C#: Add global class support
Co-authored-by: willnationsdev <willnationsdev@gmail.com>
2023-05-29 19:04:02 +02:00
Raul Santos
a34207b812
Reorder PropertyHint enum to avoid breaking compat
Also syncs the Core enum with the C# enum for the source generators.
2023-05-12 01:48:07 +02:00
Alex de la Mare
8ab3295e57 Add fine-grained disabling of SourceGenerators
This allows manual testing and/or alternate source generators to
provide functionality without conflict.
2023-03-25 13:46:12 +11:00
Rémi Verschelde
5dccc940e7
Merge pull request #74375 from raulsntos/dotnet/ignore-explicit-interface-implementations
C#: Ignore explicit interface implementations
2023-03-05 13:39:45 +01:00
Raul Santos
f949e94991
C#: Encode GodotProjectDir as Base64 to prevent issues with special characters 2023-03-04 23:33:30 +01:00
Raul Santos
0372bd56b6
C#: Ignore explicit interface implementations 2023-03-04 19:16:48 +01:00
Rémi Verschelde
1c1524a651
Bump version to 4.1-dev
Can't stop, won't stop, they said, huh?
2023-03-01 01:44:37 +01:00
Treer
086ce855a8
Update modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/GodotPluginsInitializerGenerator.cs
Co-authored-by: Ignacio Roldán Etcheverry <neikeq@users.noreply.github.com>
2023-02-01 07:56:20 +11:00
Treer
273df44e1d Qualify Console's namespace to avoid mixup with plugin's objects
Avoid error when a plugin contains a class called "Console":
Godot.SourceGenerators\Godot.SourceGenerators.GodotPluginsInitializerGenerator\GodotPlugins.Game.generated.cs(32,25): error CS0117: 'Console' does not contain a definition for 'Error'
2023-01-31 16:23:17 +11:00
Raul Santos
1aceacaa6b
C#: Rename Object to GodotObject 2023-01-27 02:04:18 +01:00
Raul Santos
a968e51414
C#: Renames to follow .NET naming conventions
Renamed C# types and members to use PascalCase and follow .NET naming conventions.
2023-01-27 02:04:17 +01:00
Raul Santos
4788cb35c1
C#: Add global namespace to grouping property info 2023-01-27 01:15:19 +01:00
Rémi Verschelde
0d1b5f8832
Merge pull request #71356 from raulsntos/dotnet/get
C#: Lookup signals and methods in Get method
2023-01-27 00:13:13 +01:00
Rémi Verschelde
63b5adf8a8
Merge pull request #72057 from raulsntos/dotnet/fix-must-be-variant
C#: Annotate API with `[MustBeVariant]`
2023-01-26 23:00:30 +01:00
Raul Santos
256632a07e
C#: Skip documentation syntax in MustBeVariant analyzer 2023-01-25 17:29:08 +01:00
Aaron Franke
2a65f6812b
Add PROPERTY_USAGE_NEVER_DUPLICATE flag and use for script
Co-authored-by: Yakov Borevich <j.borevich@gmail.com>
2023-01-24 16:37:50 -06:00
Aaron Franke
2bc0bcbd26
PropertyUsage: Rename "DO_NOT_SHARE_ON_DUPLICATE" to "ALWAYS_DUPLICATE" 2023-01-24 16:05:07 -06:00
Raul Santos
a6ba914f15
C#: Lookup signals and methods in Get method
Allows to retrieve `Callable`s and `Signal`s using `Get` like it works in GDScript.
2023-01-13 22:19:25 +01:00
Juan Linietsky
0e0a6bb39b
Removed unused property hints and Object::get_translatable_strings()
* Remove unused `EditorPropertyMember` and related hints, previouly used by
  VisualScript. Such logic should be implemented in the VS module itself.
* As the above broke compatibility with the VS module, clean up the other
  hacks that were still in core in support of VisualScript.
* `PROPERTY_USAGE_INTERNATIONALIZED` was only used in Object's
  `get_translatable_strings()`, which is a legacy function not used anywhere.
  So both are removed.
* Reordered some usage flags after the above removal to minimize the diff.
* General clean up.

Fixes #30203.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2023-01-09 16:56:01 +01:00
Raul Santos
a43e8285a7
C#: Avoid generic types in the script path attribute generator
- Avoid generic types in `ScriptPathAttributeGenerator`, this
means they won't be added to the `[AssemblyHasScripts]` attribute
and a `[ScriptPath]` attribute won't be added to the class.
Since generic classes can't be used as scripts they shouldn't use
those attributes, this also makes CSharpScript consider those types
invalid since they won't be added to the script/type map.
- Avoid generic types in `ScriptManagerBridge.LookupScriptsInAssembly`.
- Set `outMethodsDest` in `ScriptManagerBridge.UpdateScriptClassInfo`.
2022-12-28 23:20:02 +01:00