From b0a074500b8598151c353043f7e2193cdf6efbfd 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, 7 Jan 2018 13:33:42 +0100 Subject: [PATCH] bug fix #638 --- TestSuite/errors/{err231.pas => err0231.pas} | 0 TestSuite/errors/err0232.pas | 5 +++++ TestSuite/errors/err0233.pas | 5 +++++ .../TreeConversion/syntax_tree_visitor.cs | 15 ++++++++------- 4 files changed, 18 insertions(+), 7 deletions(-) rename TestSuite/errors/{err231.pas => err0231.pas} (100%) create mode 100644 TestSuite/errors/err0232.pas create mode 100644 TestSuite/errors/err0233.pas diff --git a/TestSuite/errors/err231.pas b/TestSuite/errors/err0231.pas similarity index 100% rename from TestSuite/errors/err231.pas rename to TestSuite/errors/err0231.pas diff --git a/TestSuite/errors/err0232.pas b/TestSuite/errors/err0232.pas new file mode 100644 index 000000000..cb190d781 --- /dev/null +++ b/TestSuite/errors/err0232.pas @@ -0,0 +1,5 @@ +function f1(b:byte):byte; begin end; + +begin + var f := f1.ToString(); +end. \ No newline at end of file diff --git a/TestSuite/errors/err0233.pas b/TestSuite/errors/err0233.pas new file mode 100644 index 000000000..75d7ee4f9 --- /dev/null +++ b/TestSuite/errors/err0233.pas @@ -0,0 +1,5 @@ +function f1(b:byte):byte; begin end; + +begin + var f := f1.ToString; +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 4051577c1..7d0fcab82 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -4877,6 +4877,9 @@ namespace PascalABCCompiler.TreeConverter expression_node exp = (expression_node)sn; if (exp is typed_expression) try_convert_typed_expression_to_function_call(ref exp); + location subloc = get_location(id_right); + if (exp is typed_expression) + AddError(new UndefinedNameReference(id_right.name, subloc)); SyntaxTree.operator_name_ident oni_right = id_right as SyntaxTree.operator_name_ident; if (oni_right != null) { @@ -4891,12 +4894,6 @@ namespace PascalABCCompiler.TreeConverter } } - - //definition_node ddn=check_name_node_type(id_right.name,si,get_location(id_right), - // general_node_type.function_node,general_node_type.variable_node); - - location subloc = get_location(id_right); - if (sil == null) { AddError(new UndefinedNameReference(id_right.name, subloc)); @@ -9253,6 +9250,10 @@ namespace PascalABCCompiler.TreeConverter { if (en is typed_expression) try_convert_typed_expression_to_function_call(ref en); + if (en is typed_expression) + { + AddError(new MemberIsNotDeclaredInType(id_right, get_location(id_right), en.type)); + } SymbolInfoList sil = en.type.find_in_type(id_right.name, context.CurrentScope); if (sil == null) { @@ -9260,7 +9261,7 @@ namespace PascalABCCompiler.TreeConverter } try_convert_typed_expression_to_function_call(ref en); - + switch (mot) { case motivation.address_reciving: