From c312107737a7369e59aff9f7fdfc33bae0d85d3e Mon Sep 17 00:00:00 2001 From: hadashiA Date: Tue, 1 Oct 2024 09:28:50 +0900 Subject: [PATCH] Add diagnostic descriptr --- VContainer.SourceGenerator/DiagnosticDescriptors.cs | 8 ++++++++ VContainer.SourceGenerator/Emitter.cs | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/VContainer.SourceGenerator/DiagnosticDescriptors.cs b/VContainer.SourceGenerator/DiagnosticDescriptors.cs index c5bbd8ac..6e772a48 100644 --- a/VContainer.SourceGenerator/DiagnosticDescriptors.cs +++ b/VContainer.SourceGenerator/DiagnosticDescriptors.cs @@ -85,5 +85,13 @@ static class DiagnosticDescriptors category: Category, defaultSeverity: DiagnosticSeverity.Warning, isEnabledByDefault: true); + + public static readonly DiagnosticDescriptor ConstructorNotFound = new( + id: "VCON0011", + title: "The any callbale constructor is not found. Cannot support to code generation.", + messageFormat: "Cannot find any constructor of '{0}' that can be called from internal. It cannot support source generator.", + category: Category, + defaultSeverity: DiagnosticSeverity.Warning, + isEnabledByDefault: true); } } diff --git a/VContainer.SourceGenerator/Emitter.cs b/VContainer.SourceGenerator/Emitter.cs index b885681f..da810017 100644 --- a/VContainer.SourceGenerator/Emitter.cs +++ b/VContainer.SourceGenerator/Emitter.cs @@ -250,6 +250,10 @@ public static bool TryEmitCreateInstanceMethod( if (constructorSymbol == null) { + context.ReportDiagnostic(Diagnostic.Create( + DiagnosticDescriptors.ConstructorNotFound, + typeMeta.GetLocation(), + typeMeta.TypeName)); return false; }