Skip to content

ILLink: FormatException when building a diagnostic message #93800

@vitek-karas

Description

@vitek-karas

Repro:

dotnet new console

app.csproj:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net8.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <PublishTrimmed>true</PublishTrimmed>
        <WarningsAsErrors>false</WarningsAsErrors>
        <NoWarn>NU1605;NU1603;NU1701</NoWarn>
        <TrimmerSingleWarn>false</TrimmerSingleWarn>
    </PropertyGroup>

    <ItemGroup>
        <TrimmerRootAssembly Include="AltV.Net.Shared" />

        <PackageReference Include="AltV.Net.Shared" Version="14.0.2-dev" />
    </ItemGroup>
</Project>

dotnet publish

Stacktrace from the build:

  Unhandled exception. System.FormatException: Index (zero based) must be greater than or equal to zero and less than t
  he size of the argument list.
     at System.Text.ValueStringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ReadOnlySpan`1 args)
     at System.String.FormatHelper(IFormatProvider provider, String format, ReadOnlySpan`1 args)
     at System.String.Format(String format, Object[] args)
     at ILLink.Shared.DiagnosticString.GetMessage(String[] args)
     at Mono.Linker.MessageContainer..ctor(MessageCategory category, DiagnosticId id, String subcategory, Nullable`1 or
  igin, String[] args)
     at Mono.Linker.MessageContainer.CreateWarningMessageContainer(LinkContext context, MessageOrigin origin, Diagnosti
  cId id, WarnVersion version, String subcategory, String[] args)
     at Mono.Linker.MessageContainer.CreateWarningMessage(LinkContext context, MessageOrigin origin, DiagnosticId id, W
  arnVersion version, String[] args)
     at Mono.Linker.LinkContext.LogWarning(MessageOrigin origin, DiagnosticId id, String[] args)
     at ILLink.Shared.TrimAnalysis.DiagnosticContext.AddDiagnostic(DiagnosticId id, String[] args)
     at ILLink.Shared.TrimAnalysis.DiagnosticContext.AddDiagnostic(DiagnosticId id, ValueWithDynamicallyAccessedMembers
   actualValue, ValueWithDynamicallyAccessedMembers expectedAnnotationsValue, String[] args)
     at ILLink.Shared.TrimAnalysis.RequireDynamicallyAccessedMembersAction.Invoke(ValueSet`1& value, ValueWithDynamical
  lyAccessedMembers targetValue)

/cc @LakshanF

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-Tools-ILLink.NET linker development as well as trimming analyzers

    Type

    No type

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions