Oxygene compiler mistakenly complains mismatch of abstract method

Island/Windows/Visual Studio. Latest Element Build.

The compiler mistakenly complains StochasticGradientDescent.ApplyGradient does NOT match its base class Optimizer.ApplyGradient - but they are indeed identical.


I guess this is a compiler bug?

  NotNull<T> = not nullable T;

  Output = public class
  end;

  Variable = public class
  end;

  OperationList = public class
  end;

  GradientAndVariablePair = Tuple of (Gradient: NotNull<Output>, Variable: NotNull<Variable>);

  Optimizer = public abstract class
  public
    method ApplyGradient(aGradientsAndVariables: NotNull<array of GradientAndVariablePair>): OperationList; abstract; virtual;
  end;

  StochasticGradientDescent = public sealed class(Optimizer)
  public
    method ApplyGradient(aGradientsAndVariables: NotNull<array of GradientAndVariablePair>): OperationList; override;
    begin
      result := new OperationList;
    end;
  end;

Test-20200226.7z (4.1 KB)

Thanks, logged as bugs://83997

bugs://83997 got closed with status fixed.