Skip to content

Duplicate Methods are Generated if Generic Parameter Name Changes #280

@JasonBock

Description

@JasonBock

Describe the bug
An overload of an abstract method that changes the generic parameter name causes Rocks to generate duplicates.

To Reproduce

var code =
  """
  using Rocks;
  using System;
  
  #nullable enable
  
  public abstract class Proxy<A>
  {
    public abstract Proxy<B> Bind<B>(Func<B> f);
  }      

  public class M<A>
    : Proxy<A>
  {
    public override Proxy<S> Bind<S>(Func<S> f) => new M<S>();
  }
  
  public static class Test
  {
    public static void Generate()
    {
      var rock = Rock.Create<M<object>>();
    }
  }
  """;

Expected behavior
Rocks works - only one Bind() is generated.

Additional context
This was found in LanguageExt.Pipes.M<,,,,,>

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions