Skip to content

Commit b5dc661

Browse files
Copilotlinkdotnet
andcommitted
Add defensive checks for interface name processing
Co-authored-by: linkdotnet <[email protected]>
1 parent 0e8ad24 commit b5dc661

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/bunit.generators.internal/Web.AngleSharp/WrapperElementGenerator.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Microsoft.CodeAnalysis;
2+
using System;
23
using System.Collections.Generic;
34
using System.Collections.Immutable;
45
using System.Linq;
@@ -10,7 +11,10 @@ internal static class WrapperElementGenerator
1011
{
1112
internal static string GenerateWrapperTypeSource(StringBuilder source, INamedTypeSymbol elm)
1213
{
13-
var name = $"{elm.Name.Substring(1)}Wrapper";
14+
// Element interface names start with 'I' (e.g., IElement -> ElementWrapper)
15+
var name = elm.Name.Length > 1 && elm.Name.StartsWith("I", StringComparison.Ordinal)
16+
? $"{elm.Name[1..]}Wrapper"
17+
: $"{elm.Name}Wrapper";
1418
var wrappedTypeName = elm.ToDisplayString(GeneratorConfig.SymbolFormat);
1519

1620
source.AppendLine("#nullable enable");

src/bunit.generators.internal/Web.AngleSharp/WrapperElementsGenerator.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,10 @@ private static void GenerateWrapperFactory(StringBuilder source, ImmutableArray<
110110

111111
foreach (var elm in elementTypes)
112112
{
113-
var wrapperName = $"{elm.Name.Substring(1)}Wrapper";
113+
// Element interface names start with 'I' (e.g., IElement -> ElementWrapper)
114+
var wrapperName = elm.Name.Length > 1 && elm.Name.StartsWith("I", StringComparison.Ordinal)
115+
? $"{elm.Name[1..]}Wrapper"
116+
: $"{elm.Name}Wrapper";
114117
source.AppendLine($"\t\t{elm.FullyQualifiedName} e => new {wrapperName}(e, elementFactory),");
115118
}
116119

0 commit comments

Comments
 (0)