From eb6e71c6e854a189ed792b2cc8fb9a5e7cabee6f Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Fri, 2 Sep 2011 14:21:55 +0200 Subject: [PATCH] handle method renaming in Template Extracter, add Clone -> clone --- .../CS2JTemplate/TranslationTemplate.cs | 22 ++------------ .../CS2JTransform/TemplateExtracter.g | 29 +++++++++++++++++-- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTemplate/TranslationTemplate.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTemplate/TranslationTemplate.cs index 7f9ebef..3ca558a 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTemplate/TranslationTemplate.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTemplate/TranslationTemplate.cs @@ -923,25 +923,9 @@ namespace Twiglet.CS2J.Translator.TypeRep else { methStr.Append("${this:16}."); } - // special for ToString -> toString - // special for Equals -> equals - // special for GetHashCode -> hashCode - if (JavaName == "ToString" && Params.Count == 0) - { - methStr.Append("toString"); - } - else if (JavaName == "Equals" && Params.Count == 1) - { - methStr.Append("equals"); - } - else if (JavaName == "GetHashCode" && Params.Count == 0) - { - methStr.Append("hashCode"); - } - else - { - methStr.Append(JavaName); - } + + methStr.Append(JavaName); + return methStr.ToString() + mkJavaParams(Params, ParamArray); } diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/TemplateExtracter.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/TemplateExtracter.g index 40876ef..247ca39 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/TemplateExtracter.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/TemplateExtracter.g @@ -165,6 +165,22 @@ scope NSContext { return ty.ToString(); } + private Dictionary methodRenames = null; + + protected Dictionary MethodRenames + { + get { + if (methodRenames == null) { + methodRenames = new Dictionary(); + methodRenames["ToString"] = "toString"; + methodRenames["Equals"] = "equals"; + methodRenames["GetHashCode"] = "getHashCode"; + methodRenames["Clone"] = "clone"; + } + return methodRenames; + } + } + } /******************************************************************************************** @@ -873,7 +889,10 @@ method_header [string returnType] returns [MethodRepTemplate meth]: { $meth = new MethodRepTemplate($returnType, $member_name.name, ($member_name.tyargs == null ? null : $member_name.tyargs.ToArray()), $fpl.paramlist); $meth.ParamArray = $fpl.paramarr; - if ($member_name.name != "Main" && Cfg.TranslatorMakeJavaNamingConventions) { + if (MethodRenames.ContainsKey($member_name.name)) { + $meth.JavaName = MethodRenames[$member_name.name]; + } + else if ($member_name.name != "Main" && Cfg.TranslatorMakeJavaNamingConventions) { $meth.JavaName = toJavaConvention(CSharpEntity.METHOD, $member_name.name); } } @@ -1227,10 +1246,14 @@ interface_method_declaration [string returnType]: '(' fpl=formal_parameter_list? ')' { MethodRepTemplate meth = new MethodRepTemplate($returnType, $identifier.text, (gal == null ? null : $gal.tyargs.ToArray()), $fpl.paramlist); meth.ParamArray = $formal_parameter_list.paramarr; - if ($identifier.text != "Main" && Cfg.TranslatorMakeJavaNamingConventions) { + if (MethodRenames.ContainsKey($identifier.text)) { + meth.JavaName = MethodRenames[$identifier.text]; + } + else if ($identifier.text != "Main" && Cfg.TranslatorMakeJavaNamingConventions) { meth.JavaName = toJavaConvention(CSharpEntity.METHOD, $identifier.text); } - ((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(meth); } + ((InterfaceRepTemplate)$NSContext::currentTypeRep).Methods.Add(meth); + } type_parameter_constraints_clauses? ';' { DebugDetail("Processing interface method declaration: " + $identifier.text); } ;