From f8eeacab5dbb136efaaadc8abde5163c1f44df50 Mon Sep 17 00:00:00 2001 From: triton Date: Fri, 3 May 2013 14:51:20 +0100 Subject: [PATCH] Check for missing operator overload parameters for all operator overloads. --- src/Generator/Passes/CheckOperatorsOverloads.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Generator/Passes/CheckOperatorsOverloads.cs b/src/Generator/Passes/CheckOperatorsOverloads.cs index 0c0bde8a..006edc60 100644 --- a/src/Generator/Passes/CheckOperatorsOverloads.cs +++ b/src/Generator/Passes/CheckOperatorsOverloads.cs @@ -1,4 +1,5 @@ using System.Linq; +using Cxxi.Generators.CSharp; namespace Cxxi.Passes { @@ -38,7 +39,19 @@ namespace Cxxi.Passes "Invalid operator overload {0}::{1}", @class.OriginalName, @operator.OperatorKind); @operator.ExplicityIgnored = true; + continue; } + + // Handle missing operator parameters + if (@operator.IsStatic) + @operator.Parameters = @operator.Parameters.Skip(1).ToList(); + + @operator.Parameters.Insert(0, new Parameter + { + Name = Helpers.GeneratedIdentifier("op"), + QualifiedType = new QualifiedType(new TagType(@class)), + Kind = ParameterKind.OperatorParameter + }); } } @@ -56,9 +69,6 @@ namespace Cxxi.Passes var overload = @class.FindOperator(existingKind).First(); var @params = overload.Parameters; - if (overload.IsStatic) - @params = @params.Skip(1).ToList(); - var method = new Method() { IsSynthetized = true,