Skip to content

[String] Split method overloaddefinitions order causes error #2790

@lucdekens

Description

@lucdekens

The Split method shows OverloadDefinitions in this order
OverloadDefinitions

string[] Split(char separator)
string[] Split(char separator, System.StringSplitOptions options)
string[] Split(char separator, int count, System.StringSplitOptions options)
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string separator)
string[] Split(string separator, System.StringSplitOptions options)
string[] Split(string separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)

When one tries to use the Count parameter, it is first interpreted as a System.StringSplitOptions value.
Since enum values are [int] under the cover I guess.

As a result, this $t.Split(' ',6) will produce the following error:

Cannot convert argument "options", with value: "6", for "Split" to type "System.StringSplitOptions": "Cannot convert value "6" to type
"System.StringSplitOptions" due to enumeration values that are not valid. Specify one of the following enumeration values and try again. The
possible enumeration values are "None,RemoveEmptyEntries"."
At line:1 char:1

  • $t.split(' ',6)
  •   + CategoryInfo          : NotSpecified: (:) [], MethodException
      + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
    
    

When the Count parameter is cast to [int], no issue ($t.Split(' ',[int]6)

In PS v5.1, the overloaddefinitions have a different order, and this issue doesn't appear.
OverloadDefinitions

string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)

The Crontab demo module experiences this error as well in line 38 in Crontab.psm1.

I tested with v6.0.0-alpha.13

Metadata

Metadata

Assignees

No one assigned

    Labels

    Issue-Discussionthe issue may not have a clear classification yet. The issue may generate an RFC or may be reclassifResolution-FixedThe issue is fixed.WG-Languageparser, language semantics

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions