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();