From c8efdf5d531f2b9a9785018eec8ef06544368e4c 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: Wed, 3 Oct 2018 21:46:20 +0200 Subject: [PATCH] fix #1304 --- Parsers/PascalABCParserNewSaushkin/ABCPascal.cs | 2 +- Parsers/PascalABCParserNewSaushkin/ABCPascal.y | 2 ++ Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs | 4 +++- TestSuite/errors/err0289.pas | 5 +++++ TestSuite/errors/err0290.pas | 5 +++++ bin/Lng/Eng/PascalABCParser.dat | 3 ++- bin/Lng/Rus/PascalABCParser.dat | 2 ++ bin/Lng/Ukr/PascalABCParser.dat | 12 +++++++++++- 8 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 TestSuite/errors/err0289.pas create mode 100644 TestSuite/errors/err0290.pas diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs index 4dd2ccd67..c6cbf7f50 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs @@ -2,7 +2,7 @@ // This CSharp output file generated by Gardens Point LEX // Version: 1.1.3.301 // Machine: IVAN-PC -// DateTime: 03.10.2018 19:30:33 +// DateTime: 03.10.2018 21:42:41 // UserName: Ivan // GPLEX input file // GPLEX frame file diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y index bdea9868c..8d471d1ed 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y @@ -1669,6 +1669,8 @@ class_attributes1 } | class_attributes1 class_attribute { + if (((class_attribute)$1 & (class_attribute)$2) == (class_attribute)$2) + parsertools.AddErrorFromResource("ATTRIBUTE_REDECLARED",@2); $$ = ((class_attribute)$1) | ((class_attribute)$2); //$$ = $1; } diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs index de7ec6c2d..11a899cb8 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -2,7 +2,7 @@ // GPPG version 1.3.6 // Machine: IVAN-PC -// DateTime: 03.10.2018 19:30:35 +// DateTime: 03.10.2018 21:42:43 // UserName: Ivan // Input file @@ -3917,6 +3917,8 @@ public partial class GPPGParser: ShiftReduceParser class_attributes1, class_attribute { + if (((class_attribute)ValueStack[ValueStack.Depth-2].ob & (class_attribute)ValueStack[ValueStack.Depth-1].ob) == (class_attribute)ValueStack[ValueStack.Depth-1].ob) + parsertools.AddErrorFromResource("ATTRIBUTE_REDECLARED",LocationStack[LocationStack.Depth-1]); CurrentSemanticValue.ob = ((class_attribute)ValueStack[ValueStack.Depth-2].ob) | ((class_attribute)ValueStack[ValueStack.Depth-1].ob); //$$ = $1; } diff --git a/TestSuite/errors/err0289.pas b/TestSuite/errors/err0289.pas new file mode 100644 index 000000000..037138f1c --- /dev/null +++ b/TestSuite/errors/err0289.pas @@ -0,0 +1,5 @@ +type A = static static class +end; + +begin +end. \ No newline at end of file diff --git a/TestSuite/errors/err0290.pas b/TestSuite/errors/err0290.pas new file mode 100644 index 000000000..5118f522a --- /dev/null +++ b/TestSuite/errors/err0290.pas @@ -0,0 +1,5 @@ +type A = auto sealed auto class +end; + +begin +end. \ No newline at end of file diff --git a/bin/Lng/Eng/PascalABCParser.dat b/bin/Lng/Eng/PascalABCParser.dat index c78562596..938f26f18 100644 --- a/bin/Lng/Eng/PascalABCParser.dat +++ b/bin/Lng/Eng/PascalABCParser.dat @@ -66,4 +66,5 @@ TWO_NILS_IN_QUESTION_EXPR=The conditional expression cannot contain nil constant DOT_QUECTION_IN_SHORT_FUN=Expression with ?. cannot appear in a short function definition without a return value BAD_INT2=Too small int64 INVALID_INTERFACE_MEMBER=Interface members cannot have definitions -EXTENDED_INDEXED_PROPERTIES=Extended indexed properties are not realized \ No newline at end of file +EXTENDED_INDEXED_PROPERTIES=Extended indexed properties are not realized +ATTRIBUTE_REDECLARED=This attribute has been already applied to type \ No newline at end of file diff --git a/bin/Lng/Rus/PascalABCParser.dat b/bin/Lng/Rus/PascalABCParser.dat index 161870fa3..20f15afc9 100644 --- a/bin/Lng/Rus/PascalABCParser.dat +++ b/bin/Lng/Rus/PascalABCParser.dat @@ -26,6 +26,7 @@ ENDIF_ABSENT=Незакрытая директива $ifdef или $ifndef - о UNNECESSARY $else=Лишний $else TYPE_NAME_EXPECTED=Ожидался тип + EOF1=конец файла EOF=(конец файла) TKIDENTIFIER=идентификатор @@ -67,3 +68,4 @@ BAD_INT2=Слишком маленькое целое INVALID_INTERFACE_MEMBER=Члены интерфейса не могут иметь определение EXTENDED_INDEXED_PROPERTIES=Индексные свойства не могут быть расширенными TWO_STRING_LITERALS_IN_SUCCESSION=Две литеральные строковые константы не могут стоять подряд +ATTRIBUTE_REDECLARED=Повоторное применение атрибута diff --git a/bin/Lng/Ukr/PascalABCParser.dat b/bin/Lng/Ukr/PascalABCParser.dat index 8106b7702..f5dea2bfb 100644 --- a/bin/Lng/Ukr/PascalABCParser.dat +++ b/bin/Lng/Ukr/PascalABCParser.dat @@ -57,4 +57,14 @@ ONE_TYPE_PARAMETER_MUSTBE_WITHOUT_PARENTHESES=Одинокий типовий п USING_UNLOCAL_FOR_VARIABLE=Параметр циклу for в PascalABC.NET потрібно описувати в заголовку циклу USING_UNLOCAL_FOREACH_VARIABLE=Параметр циклу foreach потрібно описувати в заголовку циклу -OVERLOAD_IS_NOT_USED=overload не використовується в PascalABC.NET \ No newline at end of file +OVERLOAD_IS_NOT_USED=overload не використовується в PascalABC.NET +ONLY_BASE_ASSIGNMENT_FOR_TUPLE=Для кортежа допустимо только обычное присваивание := +BAD_FORMAT_STRING=Встречена неправильная форматная строка +TUPLE_ELEMENTS_COUNT_MUST_BE_LESSEQUAL_7=Количество элементов кортежа не должно быть больше 7 +TWO_NILS_IN_QUESTION_EXPR=Условное выражение не может содержать константы nil по обеим веткам +DOT_QUECTION_IN_SHORT_FUN=Выражение с ?. не может фигурировать в коротком определении функции без возвращаемого значения +BAD_INT2=Слишком маленькое целое +INVALID_INTERFACE_MEMBER=Члены интерфейса не могут иметь определение +EXTENDED_INDEXED_PROPERTIES=Индексные свойства не могут быть расширенными +TWO_STRING_LITERALS_IN_SUCCESSION=Две литеральные строковые константы не могут стоять подряд +ATTRIBUTE_REDECLARED=Повторное задание атрибута \ No newline at end of file