From 43dca6a8db0db849dbf6055832a4accb5be09482 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: Sun, 14 Oct 2018 14:29:23 +0200 Subject: [PATCH] fix #1341 --- CodeCompletion/ExpressionVisitor.cs | 16 ++++++++++++++++ TestSuite/intellisense_tests/tuple6.pas | 3 +++ .../IB/CodeCompletion/TooltipServiceManager.cs | 5 +++++ 3 files changed, 24 insertions(+) create mode 100644 TestSuite/intellisense_tests/tuple6.pas diff --git a/CodeCompletion/ExpressionVisitor.cs b/CodeCompletion/ExpressionVisitor.cs index 1d42db20f..ccdfaf8fb 100644 --- a/CodeCompletion/ExpressionVisitor.cs +++ b/CodeCompletion/ExpressionVisitor.cs @@ -1586,9 +1586,18 @@ namespace CodeCompletion else suffix = ""; if (i > 0) + { returned_scope = returned_scope.FindNameOnlyInType(_template_type_reference.name.names[i].name + suffix); + if (returned_scope == null) + returned_scope = returned_scope.FindNameOnlyInType(_template_type_reference.name.names[i].name + suffix); + } else + { returned_scope = returned_scope.FindName(_template_type_reference.name.names[i].name + suffix); + if (returned_scope == null) + returned_scope = returned_scope.FindName(_template_type_reference.name.names[i].name); + } + if (returned_scope == null) return; } @@ -1890,5 +1899,12 @@ namespace CodeCompletion public override void visit(semantic_type_node stn) // SSM { } + public override void visit(tuple_node _tuple_node) + { + method_call mc = new method_call(); + mc.parameters = _tuple_node.el; + mc.dereferencing_value = new dot_node(new ident("Tuple"), new ident("Create")); + mc.visit(this); + } } } diff --git a/TestSuite/intellisense_tests/tuple6.pas b/TestSuite/intellisense_tests/tuple6.pas new file mode 100644 index 000000000..b231682b4 --- /dev/null +++ b/TestSuite/intellisense_tests/tuple6.pas @@ -0,0 +1,3 @@ +begin + var x := (1,2.3).Item2{@property Tuple<>.Item2: real; readonly;@}; +end. \ No newline at end of file diff --git a/VisualPascalABCNET/IB/CodeCompletion/TooltipServiceManager.cs b/VisualPascalABCNET/IB/CodeCompletion/TooltipServiceManager.cs index 8af45cd1f..7acf597d8 100644 --- a/VisualPascalABCNET/IB/CodeCompletion/TooltipServiceManager.cs +++ b/VisualPascalABCNET/IB/CodeCompletion/TooltipServiceManager.cs @@ -36,6 +36,11 @@ namespace VisualPascalABC List Errors = new List(); PascalABCCompiler.SyntaxTree.expression tree = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr, Errors, new List()); bool header = false; + if (Errors.Count > 0 && expr.IndexOf('<') != -1 && expr.IndexOf('>') != -1) + { + Errors.Clear(); + tree = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr.Replace("<","&<"), Errors, new List()); + } if (tree == null || Errors.Count > 0) { Errors.Clear();