Skip to content

Commit 71c7506

Browse files
committed
Unescape quoted reserved word in Swift Metadata dictionary
1 parent 5c0defa commit 71c7506

3 files changed

Lines changed: 43 additions & 2 deletions

File tree

src/ServiceStack/NativeTypes/Swift/SwiftGenerator.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,10 @@ private void AddTypeExtension(ref StringBuilderWrapper sbExt, MetadataType type,
472472
}
473473
}
474474

475-
sbExt.AppendLine("Type<{0}>.{1}(\"{2}\", get: {{ $0.{2} }}, set: {{ $0.{2} = $1 }}),".Fmt(
476-
typeName, fnName, prop.Name.SafeToken().PropertyStyle()));
475+
var propName = prop.Name.SafeToken().PropertyStyle();
476+
var unescapedName = propName.UnescapeReserved();
477+
sbExt.AppendLine("Type<{0}>.{1}(\"{2}\", get: {{ $0.{3} }}, set: {{ $0.{3} = $1 }}),".Fmt(
478+
typeName, fnName, unescapedName, propName));
477479
}
478480
sbExt = sbExt.UnIndent();
479481
sbExt.AppendLine("])");
@@ -1057,6 +1059,13 @@ public static string PropertyStyle(this string name)
10571059
: propName;
10581060
}
10591061

1062+
public static string UnescapeReserved(this string name)
1063+
{
1064+
return string.IsNullOrEmpty(name)
1065+
? name
1066+
: name.TrimStart('`').TrimEnd('`');
1067+
}
1068+
10601069
public static string AddGenericConstraints(this string typeDef)
10611070
{
10621071
return typeDef

tests/Check.ServiceInterface/NativeTypesTestService.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,15 @@ public object Any(HelloPatch request)
236236
{
237237
return new HelloVerbResponse { Result = HttpMethods.Patch };
238238
}
239+
240+
public void Any(HelloReturnVoid request)
241+
{
242+
}
243+
244+
public object Any(EnumRequest request)
245+
{
246+
return new EnumResponse { Operator = request.Operator };
247+
}
239248
}
240249

241250
public class GetUserSession : IReturn<CustomUserSession>

tests/Check.ServiceModel/CodeGenTestTypes.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,29 @@ public class HelloPatch : IReturn<HelloVerbResponse>, IPatch
544544
public int Id { get; set; }
545545
}
546546

547+
public class HelloReturnVoid : IReturnVoid
548+
{
549+
public int Id { get; set; }
550+
}
551+
552+
public class EnumRequest : IReturn<EnumResponse>, IPut
553+
{
554+
public ScopeType Operator { get; set; }
555+
}
556+
557+
public class EnumResponse
558+
{
559+
public ScopeType Operator { get; set; }
560+
}
561+
562+
[DataContract]
563+
public enum ScopeType
564+
{
565+
[EnumMember]
566+
Global = 1,
567+
[EnumMember]
568+
Sale = 2,
569+
}
547570
}
548571

549572

0 commit comments

Comments
 (0)