Browse Source

Fixed the duplicated names pass check for conversion operators.

pull/236/head
Elias Holzer 11 years ago committed by triton
parent
commit
f88d59d9cf
  1. 11
      src/Generator/Passes/CheckDuplicatedNamesPass.cs

11
src/Generator/Passes/CheckDuplicatedNamesPass.cs

@ -50,7 +50,14 @@ namespace CppSharp.Passes @@ -50,7 +50,14 @@ namespace CppSharp.Passes
{
var @params = function.Parameters.Where(p => p.Kind != ParameterKind.IndirectReturnType)
.Select(p => p.QualifiedType.ToString());
var signature = string.Format("{0}({1})", Name,string.Join( ", ", @params));
// Include the conversion type in case of conversion operators
var method = function as Method;
if (method != null &&
method.IsOperator &&
(method.OperatorKind == CXXOperatorKind.Conversion ||
method.OperatorKind == CXXOperatorKind.ExplicitConversion))
@params = @params.Concat(new[] { method.ConversionType.ToString() });
var signature = string.Format("{0}({1})", Name, string.Join( ", ", @params));
if (Count == 0)
Count++;
@ -66,8 +73,6 @@ namespace CppSharp.Passes @@ -66,8 +73,6 @@ namespace CppSharp.Passes
if (Count < methodCount+1)
Count = methodCount+1;
var method = function as Method;
if (function.IsOperator)
{
// TODO: turn into a method; append the original type (say, "signed long") of the last parameter to the type so that the user knows which overload is called

Loading…
Cancel
Save