From c785cafe681cdae20e4fdd88167e84fb5dd0d42e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Mon, 25 Apr 2016 20:37:57 +0200 Subject: [PATCH] bug fix #144 --- .../ParserTools/DefaultLanguageInformation.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/ParserTools/ParserTools/DefaultLanguageInformation.cs b/ParserTools/ParserTools/DefaultLanguageInformation.cs index 6facc0774..b21e8a545 100644 --- a/ParserTools/ParserTools/DefaultLanguageInformation.cs +++ b/ParserTools/ParserTools/DefaultLanguageInformation.cs @@ -409,9 +409,9 @@ namespace PascalABCCompiler.Parsers return ctn.FullName; if (!no_alias) { - if (ctn.Name.Contains("Func`")) + if (ctn.Name.Contains("Func`") || ctn.Name.Contains("Predicate`")) return getLambdaRepresentation(ctn, true, new List()); - else if (ctn.Name.Contains("Action`") || ctn.Name.Contains("Predicate`")) + else if (ctn.Name.Contains("Action`")) return getLambdaRepresentation(ctn, false, new List()); else if (ctn.Name == "IEnumerable`1") return "sequence of " + GetShortTypeName(ctn.GetGenericArguments()[0], false); @@ -822,9 +822,9 @@ namespace PascalABCCompiler.Parsers { if (!noalias) { - if (ctn.Name.Contains("Func`")) + if (ctn.Name.Contains("Func`") || ctn.Name.Contains("Predicate`")) return getLambdaRepresentation(ctn, true, new List()); - else if (ctn.Name.Contains("Action`") || ctn.Name.Contains("Predicate`")) + else if (ctn.Name.Contains("Action`")) return getLambdaRepresentation(ctn, false, new List()); else if (ctn.Name == "IEnumerable`1") return "sequence of " + GetShortTypeName(ctn.GetGenericArguments()[0], false); @@ -1081,7 +1081,13 @@ namespace PascalABCCompiler.Parsers else if (parameters.Count > 1) sb.Append(parameters[0] + "->" + parameters[1]); else if (parameters.Count == 1) - sb.Append("()->"+parameters[0]); + { + if (t.Name == "Predicate`1") + sb.Append(parameters[0] + "->boolean"); + else + sb.Append("()->" + parameters[0]); + } + } else if (parameters.Count > 0) { @@ -1510,9 +1516,9 @@ namespace PascalABCCompiler.Parsers else return "sequence of " + (generic_args.Count>0?generic_args[0]:GetShortTypeName(tt, false)); } - else if (t.Name.Contains("Func`")) + else if (t.Name.Contains("Func`") || t.Name.Contains("Predicate`")) return getLambdaRepresentation(t, true, generic_args, generic_param_args); - else if (t.Name.Contains("Action`") || t.Name.Contains("Predicate`")) + else if (t.Name.Contains("Action`") ) return getLambdaRepresentation(t, false, generic_args, generic_param_args); } string name = GetShortTypeName(t);