From 5548def7257e84943f16cad6e95191b00d50a404 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 17 Oct 2021 12:04:24 +0200 Subject: [PATCH] #2533 --- TestSuite/errors/err0422.pas | 3 ++- TestSuite/errors/err0423.pas | 3 ++- TestSuite/errors/err0424.pas | 3 ++- TestSuite/errors/err0429.pas | 3 ++- TestSuite/errors/err0430.pas | 3 ++- TestSuite/errors/err0431.pas | 10 ++++++++++ TestSuite/errors/err0432.pas | 7 +++++++ TestSuite/errors/err0433.pas | 8 ++++++++ .../TreeConversion/compilation_context.cs | 2 +- bin/TestRunner.exe | Bin 42496 -> 43520 bytes bin/TestRunner.pas | 12 +++++++++++- 11 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 TestSuite/errors/err0431.pas create mode 100644 TestSuite/errors/err0432.pas create mode 100644 TestSuite/errors/err0433.pas diff --git a/TestSuite/errors/err0422.pas b/TestSuite/errors/err0422.pas index db02b58e2..1b137fe97 100644 --- a/TestSuite/errors/err0422.pas +++ b/TestSuite/errors/err0422.pas @@ -1,4 +1,5 @@ -function f(i: integer): string; +//!GetType не объявлен в типе function(i: integer): string +function f(i: integer): string; begin end; diff --git a/TestSuite/errors/err0423.pas b/TestSuite/errors/err0423.pas index cd79e4a88..88447fb35 100644 --- a/TestSuite/errors/err0423.pas +++ b/TestSuite/errors/err0423.pas @@ -1,4 +1,5 @@ -function f(i: integer): integer; +//!Ожидался порядковый или строковый тип +function f(i: integer): integer; begin end; diff --git a/TestSuite/errors/err0424.pas b/TestSuite/errors/err0424.pas index 68d6dd24e..473683e21 100644 --- a/TestSuite/errors/err0424.pas +++ b/TestSuite/errors/err0424.pas @@ -1,4 +1,5 @@ -procedure p1(o: T); +//!Невозможно инстанцировать, так как тип IEnumerable не наследован от string +procedure p1(o: T); where T: string; begin o.Length.Println; diff --git a/TestSuite/errors/err0429.pas b/TestSuite/errors/err0429.pas index 7a00a4cba..80ab3c12a 100644 --- a/TestSuite/errors/err0429.pas +++ b/TestSuite/errors/err0429.pas @@ -1,4 +1,5 @@ -unit err0429; +//!Класс t1 абстрактный и не может иметь атрибут sealed, потому что метод p1 не реализован +unit err0429; type t0 = partial abstract class diff --git a/TestSuite/errors/err0430.pas b/TestSuite/errors/err0430.pas index 9841ad8d9..8b6f558fb 100644 --- a/TestSuite/errors/err0430.pas +++ b/TestSuite/errors/err0430.pas @@ -1,4 +1,5 @@ -unit err0430; +//!Класс t1 абстрактный и не может иметь атрибут sealed, потому что метод p1 не реализован +unit err0430; interface type diff --git a/TestSuite/errors/err0431.pas b/TestSuite/errors/err0431.pas new file mode 100644 index 000000000..57f91484b --- /dev/null +++ b/TestSuite/errors/err0431.pas @@ -0,0 +1,10 @@ +//!Неизвестное имя 't1' +unit err0431; + +uses err0432; + +type + t3 = class(err0432.t1) + end; + +end. \ No newline at end of file diff --git a/TestSuite/errors/err0432.pas b/TestSuite/errors/err0432.pas new file mode 100644 index 000000000..d71662771 --- /dev/null +++ b/TestSuite/errors/err0432.pas @@ -0,0 +1,7 @@ +//exclude +{$savepcu false} +unit err0432; + +uses err0433; + +end. \ No newline at end of file diff --git a/TestSuite/errors/err0433.pas b/TestSuite/errors/err0433.pas new file mode 100644 index 000000000..8e427e10b --- /dev/null +++ b/TestSuite/errors/err0433.pas @@ -0,0 +1,8 @@ +//exclude +{$savepcu false} +unit err0433; + +type + t1 = class end; + +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/compilation_context.cs b/TreeConverter/TreeConversion/compilation_context.cs index c9b47966f..38c3586c5 100644 --- a/TreeConverter/TreeConversion/compilation_context.cs +++ b/TreeConverter/TreeConversion/compilation_context.cs @@ -871,7 +871,7 @@ namespace PascalABCCompiler.TreeConverter int num = names.names.Count - 1; if (di is namespace_node) { - si = (di as namespace_node).find(names.names[num].name); + si = (di as namespace_node).findOnlyInNamespace(names.names[num].name); if (si == null && throw_error) AddError(new UndefinedNameReference(names.names[num].name, syntax_tree_visitor.get_location(names.names[num]))); } diff --git a/bin/TestRunner.exe b/bin/TestRunner.exe index 2fffa8aa5d7457455003d14e76e21afe9230a885..cf9c79ee284515d6e0685764cbbd3eea714c8fdf 100644 GIT binary patch delta 14719 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 delta 13828 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 diff --git a/bin/TestRunner.pas b/bin/TestRunner.pas index dcc54a4c6..c4010e4cf 100644 --- a/bin/TestRunner.pas +++ b/bin/TestRunner.pas @@ -45,7 +45,13 @@ begin var content := &File.ReadAllText(files[i]); if content.StartsWith('//winonly') and IsUnix then continue; - + if content.StartsWith('//exclude') then + continue; + var errorMessage := ''; + if content.StartsWith('//!') then + begin + errorMessage := content.Substring(3, content.IndexOf(System.Environment.NewLine)-3).Trim; + end; var co: CompilerOptions := new CompilerOptions(files[i], CompilerOptions.OutputType.ConsoleApplicaton); co.Debug := true; co.OutputDirectory := TestSuiteDir + PathSeparator + 'errors'; @@ -70,6 +76,10 @@ begin raise new Exception('Compilation of ' + files[i] + ' failed' + System.Environment.NewLine + comp.ErrorsList[0].ToString()); System.Windows.Forms.MessageBox.Show('Compilation of ' + files[i] + ' failed' + System.Environment.NewLine + comp.ErrorsList[0].ToString()); end; + if (errorMessage <> '') and (comp.ErrorsList[0].Message.Trim <> errorMessage) then + begin + System.Windows.Forms.MessageBox.Show('Wrong error message in file ' + files[i] + ', should '+errorMessage+', is '+comp.ErrorsList[0].Message); + end; end; if i mod 50 = 0 then System.GC.Collect();