binding-tools-for-swift
binding-tools-for-swift copied to clipboard
[DylibBinder] Generic Parameter Issue
In DynamicXmlTests - TestGenericMethodInGenericClass the Generic parameters get a little wonky.
DylibBinder's xml
<?xml version="1.0" encoding="utf-8"?>
<xamreflect version="1.0">
<modulelist>
<module name="SomeModule" swiftVersion="5.0">
<typedeclaration kind="class" name="Foo" accessibility="Public" isDeprecated="false" isUnavailable="false" isObjC="false" isFinal="false">
<members>
<func name=".ctor" returnType="SomeModule.Foo<T0>" isProperty="false" hasThrows="false" isStatic="false" isMutating="false" operatorKind="None" accessibility="Public" isDeprecated="false" isUnavailable="false" isFinal="false" isOptional="false" isRequired="false" isConvenienceInit="false" objcSelector="" isPossiblyIncomplete="false">
<parameterlists>
<parameterlist index="0">
<parameter index="0" type="inout SomeModule.Foo<T0>.Type" publicName="" privateName="self" isVariadic="false" />
</parameterlist>
<parameterlist index="1">
<parameter index="0" type="T0" publicName="a" privateName="a" isVariadic="false" />
</parameterlist>
</parameterlists>
</func>
<func name=".nctor" returnType="SomeModule.Foo<T0>" isProperty="false" hasThrows="false" isStatic="false" isMutating="false" operatorKind="None" accessibility="Public" isDeprecated="false" isUnavailable="false" isFinal="false" isOptional="false" isRequired="false" isConvenienceInit="false" objcSelector="" isPossiblyIncomplete="false">
<parameterlists>
<parameterlist index="0">
<parameter index="0" type="inout SomeModule.Foo<T0>.Type" publicName="" privateName="self" isVariadic="false" />
</parameterlist>
<parameterlist index="1">
<parameter index="0" type="T0" publicName="a" privateName="a" isVariadic="false" />
</parameterlist>
</parameterlists>
</func>
<func name="printIt" returnType="()" isProperty="false" hasThrows="false" isStatic="false" isMutating="false" operatorKind="None" accessibility="Public" isDeprecated="false" isUnavailable="false" isFinal="false" isOptional="false" isRequired="false" isConvenienceInit="false" objcSelector="" isPossiblyIncomplete="false">
<parameterlists>
<parameterlist index="0">
<parameter index="0" type="inout SomeModule.Foo<T0>" publicName="" privateName="self" isVariadic="false" />
</parameterlist>
<parameterlist index="1">
<parameter index="0" type="U0" publicName="a" privateName="a" isVariadic="false" />
</parameterlist>
</parameterlists>
<GenericParameterCollection>
<param name="U0" />
</GenericParameterCollection>
</func>
</members>
<GenericParameterCollection>
<param name="T0" />
</GenericParameterCollection>
</typedeclaration>
<func name="Foo" returnType="SomeModule.Foo<T0>" isProperty="false" hasThrows="false" isStatic="false" isMutating="false" operatorKind="None" accessibility="Public" isDeprecated="false" isUnavailable="false" isFinal="false" isOptional="false" isRequired="false" isConvenienceInit="false" objcSelector="" isPossiblyIncomplete="false">
<parameterlists>
<parameterlist index="0">
<parameter index="0" type="T0" publicName="a" privateName="a" isVariadic="false" />
</parameterlist>
</parameterlists>
</func>
</module>
</modulelist>
</xamreflect>
SwiftInterfaceParser's xml
<xamreflect version="1.0">
<modulelist>
<module name="SomeModule" swiftVersion="5.3.2">
<typedeclaration kind="class" name="Foo" accessibility="Public" isObjC="false" isFinal="true" isDeprecated="false" isUnavailable="false">
<members>
<func name=".ctor" returnType="SomeModule.Foo<T>" accessibility="Public" isStatic="true" hasThrows="false" isFinal="false" isOptional="false" isConvenienceInit="false" isDeprecated="false" isUnavailable="false" isRequired="false" isProperty="false" isMutating="false" operatorKind="None" objcSelector="initWithA:">
<parameterlists>
<parameterlist index="0">
<parameter type="SomeModule.Foo<T>.Type" index="0" publicName="self" privateName="self" isVariadic="false" />
</parameterlist>
<parameterlist index="1">
<parameter index="0" type="T" publicName="a" privateName="a" isVariadic="false" />
</parameterlist>
</parameterlists>
</func>
<func name="printIt" returnType="()" accessibility="Public" isStatic="false" hasThrows="false" isFinal="false" isOptional="false" isConvenienceInit="false" isDeprecated="false" isUnavailable="false" isRequired="false" isProperty="false" isMutating="false" operatorKind="None" objcSelector="printItWithA:">
<genericparameters>
<param name="T" />
<param name="U" />
</genericparameters>
<parameterlists>
<parameterlist index="0">
<parameter type="SomeModule.Foo<T>" index="0" publicName="self" privateName="self" isVariadic="false" />
</parameterlist>
<parameterlist index="1">
<parameter index="0" type="U" publicName="a" privateName="a" isVariadic="false" />
</parameterlist>
</parameterlists>
</func>
<func name=".dtor" returnType="()" accessibility="public" isStatic="false" hasThrows="false" isFinal="false" isOptional="false" isConvenienceInit="false" isDeprecated="false" isUnavailable="false" isRequired="false" isProperty="false" isMutating="false" operatorKind="None" objcSelector="dealloc">
<attributes>
<attribute name="objc" />
</attributes>
<parameterlists>
<parameterlist index="0">
<parameter type="SomeModule.Foo<T>.Type" index="0" publicName="self" privateName="self" isVariadic="false" />
</parameterlist>
<parameterlist index="1" />
</parameterlists>
</func>
</members>
<genericparameters>
<param name="T" />
</genericparameters>
</typedeclaration>
</module>
</modulelist>
</xamreflect>
Error: // wrong signature //Expected string length 48 but was 43. Strings differ at index 29. // Expected: "Public SomeModule.Foo.printIt<T, U> (a: U) -> ()" // But was: "Public SomeModule.Foo.printIt (a: U0) -> ()" // ----------------------------------------^