|
@@ -168,6 +168,32 @@ namespace Godot.SourceGenerators
|
|
|
location?.SourceTree?.FilePath));
|
|
|
}
|
|
|
|
|
|
+ public static void ReportExportedMemberIsIndexer(
|
|
|
+ GeneratorExecutionContext context,
|
|
|
+ ISymbol exportedMemberSymbol
|
|
|
+ )
|
|
|
+ {
|
|
|
+ var locations = exportedMemberSymbol.Locations;
|
|
|
+ var location = locations.FirstOrDefault(l => l.SourceTree != null) ?? locations.FirstOrDefault();
|
|
|
+
|
|
|
+ string message = $"Attempted to export indexer property: " +
|
|
|
+ $"'{exportedMemberSymbol.ToDisplayString()}'";
|
|
|
+
|
|
|
+ string description = $"{message}. Indexer properties can't be exported." +
|
|
|
+ " Remove the '[Export]' attribute.";
|
|
|
+
|
|
|
+ context.ReportDiagnostic(Diagnostic.Create(
|
|
|
+ new DiagnosticDescriptor(id: "GD0105",
|
|
|
+ title: message,
|
|
|
+ messageFormat: message,
|
|
|
+ category: "Usage",
|
|
|
+ DiagnosticSeverity.Error,
|
|
|
+ isEnabledByDefault: true,
|
|
|
+ description),
|
|
|
+ location,
|
|
|
+ location?.SourceTree?.FilePath));
|
|
|
+ }
|
|
|
+
|
|
|
public static void ReportSignalDelegateMissingSuffix(
|
|
|
GeneratorExecutionContext context,
|
|
|
INamedTypeSymbol delegateSymbol)
|