diff --git a/Sources/Falko.Foundry.CSharp/Compilers/TypeElementCompiler.cs b/Sources/Falko.Foundry.CSharp/Compilers/TypeElementCompiler.cs index c27d3f6..ff7df8d 100644 --- a/Sources/Falko.Foundry.CSharp/Compilers/TypeElementCompiler.cs +++ b/Sources/Falko.Foundry.CSharp/Compilers/TypeElementCompiler.cs @@ -10,6 +10,9 @@ internal sealed class TypeElementCompiler : IElementCompiler { private const int MinimumTypeLength = 64; // average type name length + private static readonly int LeftRightAngleBracketsLength + = CSharpLanguageConstants.LeftAngleBracket.Length + CSharpLanguageConstants.RightAngleBracket.Length; + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Compile ( @@ -36,8 +39,6 @@ scoped in TypeElement element var genericTypes = element.GenericTypes; StructArgumentException.ThrowIfDefault(genericTypes, nameof(element.GenericTypes)); - var leftAngleBracket = CSharpLanguageConstants.LeftAngleBracket; - var rightAngleBracket = CSharpLanguageConstants.RightAngleBracket; var dot = CSharpLanguageConstants.Dot; var commaSpace = CSharpLanguageConstants.CommaSpace; @@ -47,10 +48,12 @@ scoped in TypeElement element var typeLength = typeNamespace.Length + typeName.Length + dotBetweenLength; var genericTypesCount = genericTypes.Length; - if (genericTypesCount is not 0) + var hasGenericTypes = genericTypesCount is not 0; + + if (hasGenericTypes) { - typeLength += leftAngleBracket.Length + rightAngleBracket.Length; // for generic type brackets - typeLength += checked(MinimumTypeLength * genericTypesCount); // for do fewer allocations when appending generic types + typeLength += LeftRightAngleBracketsLength; // for generic type brackets + typeLength += MinimumTypeLength * genericTypesCount; // for do fewer allocations when appending generic types typeLength += commaSpace.Length * (genericTypesCount - 1); // for comma and space between generic types } @@ -64,9 +67,9 @@ scoped in TypeElement element buffer.Append(typeName); - if (genericTypesCount is 0) return; + if (hasGenericTypes is false) return; - buffer.Append(leftAngleBracket); + buffer.Append(CSharpLanguageConstants.LeftAngleBracket); var genericTypesSpan = genericTypes.AsSpan(); var genericTypeIndex = 0; @@ -85,6 +88,6 @@ scoped in TypeElement element goto genericTypeAppendLoop; } - buffer.Append(rightAngleBracket); + buffer.Append(CSharpLanguageConstants.RightAngleBracket); } }