Skip to content

Commit dda3336

Browse files
authored
Merge branch 'dev' into fix/compiler-forward-contract-deps
2 parents 8155773 + 44f765d commit dda3336

File tree

15 files changed

+2901
-78
lines changed

15 files changed

+2901
-78
lines changed

docs/CSharpSyntaxCheckList.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,9 +734,11 @@ Note: These methods are supported for both bool and bool? types unless otherwise
734734
8. **String Manipulation:**
735735
- [x] `string.ToUpper()`: Converts the string to uppercase.
736736
- [x] `string.ToLower()`: Converts the string to lowercase.
737-
- [x] `string.Trim()`: Removes leading and trailing whitespace.
737+
- [x] `string.Trim()`: Removes leading and trailing whitespace (supports `char` or single-element constant `char[]`).
738+
- [x] `string.TrimStart()`: Removes leading whitespace (supports `char` or single-element constant `char[]`).
739+
- [x] `string.TrimEnd()`: Removes trailing whitespace (supports `char` or single-element constant `char[]`).
738740
9. **String Splitting:**
739-
- [x] `string.Split(delimiters)`: Splits a string into an array of substrings based on specified delimiters.
741+
- [x] `string.Split(...)`: Supported for `char`/`string` separators and single-element `char[]`/`string[]` separators. `StringSplitOptions` must be `None` or `RemoveEmptyEntries`, and `count` must remain at the default value.
740742
10. **String Replacement:**
741743
- [x] `string.Replace(oldValue, newValue)`: Replaces all occurrences of `oldValue` with `newValue`.
742744
11. **String Empty or Null Check:**

src/Neo.Compiler.CSharp/MethodConvert/System/SystemCall.Register.cs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,10 +391,45 @@ private static void RegisterStringHandlers()
391391
RegisterHandler((string s) => s.ToString(), HandleStringToString);
392392

393393
RegisterHandler((string? s) => string.IsNullOrEmpty(s), HandleStringIsNullOrEmpty);
394+
RegisterHandler((string? s) => string.IsNullOrWhiteSpace(s), HandleStringIsNullOrWhiteSpace);
394395
RegisterHandler((string s, int startIndex, int length) => s.Substring(startIndex, length), HandleStringSubstring);
395396
RegisterHandler((string s, string value) => s.Contains(value), HandleStringContains);
397+
RegisterHandler((string s, string value) => s.StartsWith(value), HandleStringStartsWith);
396398
RegisterHandler((string s, string value) => s.EndsWith(value), HandleStringEndsWith);
397399
RegisterHandler((string s, string value) => s.IndexOf(value), HandleStringIndexOf);
400+
RegisterHandler((string s, string value) => s.LastIndexOf(value), HandleStringLastIndexOf);
401+
RegisterHandler((string strA, string strB) => string.Compare(strA, strB), HandleStringCompare);
402+
RegisterHandler((string s, char separator) => s.Split(separator, StringSplitOptions.None), HandleStringSplit);
403+
RegisterHandler<string, char, StringSplitOptions, string[]>((s, separator, options) => s.Split(separator, options), HandleStringSplit);
404+
SystemCallHandlers["string.Split(char, int, System.StringSplitOptions)"] = HandleStringSplit;
405+
SystemCallHandlers["string.Split(char, System.StringSplitOptions)"] = HandleStringSplit;
406+
SystemCallHandlers["string.Split(char[], System.StringSplitOptions)"] = HandleStringSplit;
407+
SystemCallHandlers["string.Split(char[], int, System.StringSplitOptions)"] = HandleStringSplit;
408+
SystemCallHandlers["string.Split(char[])"] = HandleStringSplit;
409+
SystemCallHandlers["string.Split(char[], int)"] = HandleStringSplit;
410+
SystemCallHandlers["string.Split(char[]?, System.StringSplitOptions)"] = HandleStringSplit;
411+
SystemCallHandlers["string.Split(char[]?, int, System.StringSplitOptions)"] = HandleStringSplit;
412+
SystemCallHandlers["string.Split(char[]?)"] = HandleStringSplit;
413+
SystemCallHandlers["string.Split(char[]?, int)"] = HandleStringSplit;
414+
RegisterHandler<string, string?, string[]>((s, separator) => s.Split(separator, StringSplitOptions.None), HandleStringSplit);
415+
RegisterHandler<string, string?, StringSplitOptions, string[]>((s, separator, options) => s.Split(separator, options), HandleStringSplit);
416+
SystemCallHandlers["string.Split(string?, int, System.StringSplitOptions)"] = HandleStringSplit;
417+
SystemCallHandlers["string.Split(string?[], System.StringSplitOptions)"] = HandleStringSplit;
418+
SystemCallHandlers["string.Split(string?[], int, System.StringSplitOptions)"] = HandleStringSplit;
419+
SystemCallHandlers["string.Split(string?[])"] = HandleStringSplit;
420+
SystemCallHandlers["string.Split(string?[], int)"] = HandleStringSplit;
421+
SystemCallHandlers["string.Split(string[], System.StringSplitOptions)"] = HandleStringSplit;
422+
SystemCallHandlers["string.Split(string[], int, System.StringSplitOptions)"] = HandleStringSplit;
423+
SystemCallHandlers["string.Split(string[])"] = HandleStringSplit;
424+
SystemCallHandlers["string.Split(string[], int)"] = HandleStringSplit;
425+
SystemCallHandlers["string.Split(string[]?, System.StringSplitOptions)"] = HandleStringSplit;
426+
SystemCallHandlers["string.Split(string[]?, int, System.StringSplitOptions)"] = HandleStringSplit;
427+
SystemCallHandlers["string.Split(string[]?)"] = HandleStringSplit;
428+
SystemCallHandlers["string.Split(string[]?, int)"] = HandleStringSplit;
429+
SystemCallHandlers["string.Split(string?[]?, System.StringSplitOptions)"] = HandleStringSplit;
430+
SystemCallHandlers["string.Split(string?[]?, int, System.StringSplitOptions)"] = HandleStringSplit;
431+
SystemCallHandlers["string.Split(string?[]?)"] = HandleStringSplit;
432+
SystemCallHandlers["string.Split(string?[]?, int)"] = HandleStringSplit;
398433
RegisterHandler((string s, int index) => s[index], HandleStringPickItem);
399434
RegisterHandler((string s, int startIndex) => s.Substring(startIndex), HandleStringSubStringToEnd);
400435
RegisterHandler((string? s1, string? s2) => string.Concat(s1, s2), HandleStringConcat);
@@ -403,7 +438,29 @@ private static void RegisterStringHandlers()
403438
RegisterHandler((string s) => s.ToUpper(), HandleStringToUpper);
404439
RegisterHandler((string s) => s.Trim(), HandleStringTrim);
405440
RegisterHandler((string s, char trimChar) => s.Trim(trimChar), HandleStringTrimChar);
441+
RegisterHandler<string, char[], string>((s, trimChars) => s.Trim(trimChars), HandleStringTrimCharArray);
442+
SystemCallHandlers["string.Trim(char[])"] = HandleStringTrimCharArray;
443+
SystemCallHandlers["string.Trim(char[]?)"] = HandleStringTrimCharArray;
444+
SystemCallHandlers["string.Trim(params char[])"] = HandleStringTrimCharArray;
445+
SystemCallHandlers["string.Trim(params char[]?)"] = HandleStringTrimCharArray;
446+
RegisterHandler((string s) => s.TrimStart(), HandleStringTrimStart);
447+
RegisterHandler((string s, char trimChar) => s.TrimStart(trimChar), HandleStringTrimStartChar);
448+
RegisterHandler<string, char[], string>((s, trimChars) => s.TrimStart(trimChars), HandleStringTrimStartCharArray);
449+
SystemCallHandlers["string.TrimStart(char[])"] = HandleStringTrimStartCharArray;
450+
SystemCallHandlers["string.TrimStart(char[]?)"] = HandleStringTrimStartCharArray;
451+
SystemCallHandlers["string.TrimStart(params char[])"] = HandleStringTrimStartCharArray;
452+
SystemCallHandlers["string.TrimStart(params char[]?)"] = HandleStringTrimStartCharArray;
453+
RegisterHandler((string s) => s.TrimEnd(), HandleStringTrimEnd);
454+
RegisterHandler((string s, char trimChar) => s.TrimEnd(trimChar), HandleStringTrimEndChar);
455+
RegisterHandler<string, char[], string>((s, trimChars) => s.TrimEnd(trimChars), HandleStringTrimEndCharArray);
456+
SystemCallHandlers["string.TrimEnd(char[])"] = HandleStringTrimEndCharArray;
457+
SystemCallHandlers["string.TrimEnd(char[]?)"] = HandleStringTrimEndCharArray;
458+
SystemCallHandlers["string.TrimEnd(params char[])"] = HandleStringTrimEndCharArray;
459+
SystemCallHandlers["string.TrimEnd(params char[]?)"] = HandleStringTrimEndCharArray;
406460
RegisterHandler((string s, string oldValue, string newValue) => s.Replace(oldValue, newValue), HandleStringReplace);
461+
RegisterHandler((string s, int startIndex) => s.Remove(startIndex), HandleStringRemove);
462+
RegisterHandler((string s, int startIndex, int count) => s.Remove(startIndex, count), HandleStringRemove);
463+
RegisterHandler((string s, int startIndex, string value) => s.Insert(startIndex, value), HandleStringInsert);
407464
RegisterHandler((string s) => s.Length, HandleStringLength);
408465
}
409466

0 commit comments

Comments
 (0)