From a3402b5bdef9d6e30ef8a3cd956749e7f404b542 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, 20 Jul 2015 20:37:47 +0200 Subject: [PATCH] fix for WDE bug fix in find references --- CodeCompletion/FindReferences.cs | 8 +++++-- bin/Lib/PABCSystem.pas | 41 ++++++++++++++++++++++++-------- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/CodeCompletion/FindReferences.cs b/CodeCompletion/FindReferences.cs index 07c21d31a..9aed43741 100644 --- a/CodeCompletion/FindReferences.cs +++ b/CodeCompletion/FindReferences.cs @@ -1526,7 +1526,11 @@ namespace CodeCompletion } public override void visit(ident_with_templateparams node) { - throw new NotImplementedException(); + node.name.visit(this); + foreach (type_definition td in node.template_params.params_list) + { + td.visit(this); + } } public override void visit(bracket_expr _bracket_expr) { @@ -1591,7 +1595,7 @@ namespace CodeCompletion } public override void visit(sequence_type _sequence_type) { - _sequence_type.visit(this); + _sequence_type.elements_type.visit(this); } public override void visit(modern_proc_type _modern_proc_type) { diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index 9b2477d6c..b9a18c3c5 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -1707,6 +1707,11 @@ var // Internal functions // ----------------------------------------------------- +function IsWDE: boolean; +begin + Result := AppDomain.CurrentDomain.GetData('_RedirectIO_SpecialArgs') <> nil; +end; + [System.Security.SecuritySafeCriticalAttribute] procedure AllocConsole; begin @@ -3654,17 +3659,34 @@ end;} procedure IOStandardSystem.read(var x: string); begin - var sb := new System.Text.StringBuilder; - // SSM 8.04.10 - var c := char(peek()); // первый раз может быть char(-1) - это значит, что в потоке ввода ничего нет, тогда мы читаем символ - while (c <> #13) and (c <> #10) do + if IsWDE then begin - c := read_symbol; - if (c <> #13) and (c <> #10) then // SSM 13.12.13 - sb.Append(c); - c := char(peek()); + var sb := new System.Text.StringBuilder; + var c := read_symbol; + if (c <> #13) and (c <> #10) then + sb.Append(c); + while (c <> #13) and (c <> #10) do + begin + c := read_symbol; + sb.Append(c); + c := char(peek()); + end; + x := sb.ToString; + end + else + begin + var sb := new System.Text.StringBuilder; + // SSM 8.04.10 + var c := char(peek()); // первый раз может быть char(-1) - это значит, что в потоке ввода ничего нет, тогда мы читаем символ + while (c <> #13) and (c <> #10) do + begin + c := read_symbol; + if (c <> #13) and (c <> #10) then // SSM 13.12.13 + sb.Append(c); + c := char(peek()); + end; + x := sb.ToString; end; - x := sb.ToString; end; @@ -7577,7 +7599,6 @@ end; var __initialized := false; - procedure __InitModule; begin var arg := Environment.GetCommandLineArgs();