Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions TUnit.Core.SourceGenerator/Generators/AotConverterGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
var stackTrace = ex.StackTrace ?? "No stack trace";
throw new InvalidOperationException($"NullReferenceException in ScanTestParameters: {ex.Message}\nStack: {stackTrace}", ex);
}
catch (Exception ex) when (ex is not OperationCanceledException)
{
throw new InvalidOperationException($"Error in AotConverterGenerator.ScanTestParameters: {ex.GetType().Name}: {ex.Message}", ex);
}
})
.Combine(enabledProvider)
.WithTrackingName(ParseAotConverter);
Expand All @@ -88,12 +92,14 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
new DiagnosticDescriptor(
id: "TUNITGEN001",
title: "TUnit.AotConverterGenerator Failed",
messageFormat: "Generator failed with exception: {0}",
messageFormat: "AotConverterGenerator failed: {0}: {1}",
category: "TUnit.Generator",
defaultSeverity: DiagnosticSeverity.Error,
isEnabledByDefault: true,
description: e.ToString()),
Location.None));
Location.None,
e.GetType().Name,
e.Message));
}
});
}
Expand Down Expand Up @@ -544,31 +550,37 @@ private void GenerateConverters(SourceProductionContext context, EquatableArray<
{
if (conversion.SourceType == null || conversion.TargetType == null)
{
var sourceDisplay = conversion.SourceType?.DisplayString ?? "null";
var targetDisplay = conversion.TargetType?.DisplayString ?? "null";
context.ReportDiagnostic(Diagnostic.Create(
new DiagnosticDescriptor(
id: "TUNITGEN002",
title: "Null type in conversion",
messageFormat: "Skipping converter generation: SourceType={0}, TargetType={1}",
messageFormat: "Skipping converter generation: SourceType={0}, TargetType={1}. Check test data sources that use implicit conversions between these types.",
category: "TUnit.Generator",
defaultSeverity: DiagnosticSeverity.Warning,
isEnabledByDefault: true),
Location.None,
conversion.SourceType?.DisplayString ?? "null",
conversion.TargetType?.DisplayString ?? "null"));
sourceDisplay,
targetDisplay));
continue;
}
}
catch (Exception ex)
{
var sourceDisplay = conversion.SourceType?.DisplayString ?? "unknown";
var targetDisplay = conversion.TargetType?.DisplayString ?? "unknown";
context.ReportDiagnostic(Diagnostic.Create(
new DiagnosticDescriptor(
id: "TUNITGEN003",
title: "Error checking conversion types",
messageFormat: "Error during null check: {0}",
messageFormat: "Error checking conversion types (SourceType={0}, TargetType={1}): {2}",
category: "TUnit.Generator",
defaultSeverity: DiagnosticSeverity.Warning,
isEnabledByDefault: true),
Location.None,
sourceDisplay,
targetDisplay,
ex.ToString()));
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,13 @@ private static void GenerateHookFile(SourceProductionContext context, (HookModel
var descriptor = new DiagnosticDescriptor(
"THG001",
"Hook metadata generation failed",
"Failed to generate hook metadata for {0}: {1}",
"Failed to generate hook metadata for {0} (at {1}:{2}): {3}",
"TUnit",
DiagnosticSeverity.Error,
isEnabledByDefault: true);

var hookName = $"{hook.MinimalTypeName}.{hook.MethodName}";
context.ReportDiagnostic(Diagnostic.Create(descriptor, Location.None, hookName, ex.Message));
context.ReportDiagnostic(Diagnostic.Create(descriptor, Location.None, hookName, hook.FilePath, hook.LineNumber, ex.Message));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,8 @@ private static void GenerateTestMethodSource(SourceProductionContext context, Te
var methodName = testMethod?.MethodSymbol?.Name ?? "Unknown";
var className = testMethod?.TypeSymbol?.Name ?? "Unknown";

var location = testMethod?.MethodSymbol?.Locations.FirstOrDefault() ?? Location.None;

context.ReportDiagnostic(Diagnostic.Create(
new DiagnosticDescriptor(
"TUNIT0999",
Expand All @@ -293,7 +295,7 @@ private static void GenerateTestMethodSource(SourceProductionContext context, Te
"TUnit",
DiagnosticSeverity.Error,
true),
Location.None,
location,
className,
methodName,
ex.ToString())); // Use ToString() to get full stack trace for debugging
Expand Down
Loading