Skip to content

Compiler doesn't accept methods with overloaded nativeptr variants #7428

@realvictorprm

Description

@realvictorprm

Please provide a succinct description of the issue.

The compiler thinks that the type nativeptr<uint16> is equal to nativeptr<int64> for overloading members which is wrong.

Repro steps

Provide the steps required to reproduce the problem:

type IGL =
    abstract member Color3 : nativeptr<uint16>->unit
    abstract member Color3 : nativeptr<int64>->unit

If possible attach a zip file with the repro case. This often makes it easier for others to reproduce.
The zip file should ideally represent the situation just before the call/step that is problematic.

Expected behavior

This compiles to

public interface IGL{
   public void Color3(ushort* p1);
   public void Color3(long* p1);
}

Actual behavior

Microsoft (R) F# Interactive version 10.4.0 for F# 4.6
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> type IGL =
-     abstract member Color3 : nativeptr<uint16>->unit
-     abstract member Color3 : nativeptr<int64>->unit
- ;;

      abstract member Color3 : nativeptr<int64>->unit
  --------------------^^^^^^

stdin(3,21): error FS0438: Duplicate method. The method 'Color3' has the same name and signature as another method in type 'IGL' once tuples, functions, units of measure and/or provided types are erased.

Provide a description of the actual behaviour observed.

Known workarounds

None so far.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area-Compiler-CheckingType checking, attributes and all aspects of logic checkingBugImpact-Low(Internal MS Team use only) Describes an issue with limited impact on existing code.

    Type

    Projects

    Status

    New

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions