Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion tests/generator-Tests/Unit-Tests/CodeGenerationOptionsTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MonoDroid.Generation;
using NUnit.Framework;

Expand Down Expand Up @@ -79,5 +80,17 @@ public void GetTypeReferenceName_Nullable ()

Assert.AreEqual ("uint", opt.GetTypeReferenceName (primitive_uint));
}

[Test, TestCaseSource (nameof (ReservedKeywords))]
[SetCulture ("cs-CZ")]
public void GetSafeIdentifierCultureInvariant (string keyword)
{
var opt = new CodeGenerationOptions ();

Assert.AreEqual ($"{keyword}_", opt.GetSafeIdentifier (keyword));
}

private static IEnumerable<TestCaseData> ReservedKeywords
=> TypeNameUtilities.reserved_keywords.Select (keyword => new TestCaseData (keyword));
}
}
15 changes: 14 additions & 1 deletion tests/generator-Tests/Unit-Tests/TypeNameUtilitiesTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MonoDroid.Generation;
using NUnit.Framework;

Expand All @@ -19,5 +20,17 @@ public void MangleName ()
Assert.AreEqual ("byte_var", TypeNameUtilities.MangleName ("byte_var"));
Assert.AreEqual ("foo", TypeNameUtilities.MangleName ("foo"));
}

[Test, TestCaseSource (nameof (ReservedKeywords))]
[SetCulture ("cs-CZ")]
public void MangleNameCutlureInvariant (string keyword)
{
Assert.AreEqual ($"@{keyword}", TypeNameUtilities.MangleName (keyword));
}

private static IEnumerable<TestCaseData> ReservedKeywords
=> TypeNameUtilities.reserved_keywords
.Where (keyword => keyword != "event") // "event" is a special case which is mapped to "e" instead of "@event"
.Select (keyword => new TestCaseData (keyword));
}
}
2 changes: 1 addition & 1 deletion tools/generator/CodeGenerationOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ public string GetSafeIdentifier (string name)
// (ReturnValue.ToNative() takes an argument which could be either an expression or mere symbol.)
if (name [name.Length-1] != ')' && !name.Contains ('.') && !name.StartsWith ("@", StringComparison.Ordinal)) {
if (!IdentifierValidator.IsValidIdentifier (name) ||
Array.BinarySearch (TypeNameUtilities.reserved_keywords, name) >= 0) {
Array.BinarySearch (TypeNameUtilities.reserved_keywords, name, StringComparer.Ordinal) >= 0) {
name = name + "_";
}
}
Expand Down
4 changes: 2 additions & 2 deletions tools/generator/Utilities/TypeNameUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ public static string MangleName (string name)
{
if (name == "event")
return "e";
if (Array.BinarySearch (reserved_keywords, name) >= 0)

if (Array.BinarySearch (reserved_keywords, name, StringComparer.Ordinal) >= 0)
return "@" + name;

return name;
Expand Down