fix #2316
This commit is contained in:
parent
e959c17d07
commit
f06367a056
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
||||||
public const string Major = "3";
|
public const string Major = "3";
|
||||||
public const string Minor = "7";
|
public const string Minor = "7";
|
||||||
public const string Build = "1";
|
public const string Build = "1";
|
||||||
public const string Revision = "2709";
|
public const string Revision = "2710";
|
||||||
|
|
||||||
public const string MainVersion = Major + "." + Minor;
|
public const string MainVersion = Major + "." + Minor;
|
||||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
%MINOR%=7
|
|
||||||
%REVISION%=2709
|
|
||||||
%COREVERSION%=1
|
%COREVERSION%=1
|
||||||
|
%REVISION%=2710
|
||||||
|
%MINOR%=7
|
||||||
%MAJOR%=3
|
%MAJOR%=3
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
3.7.1.2709
|
3.7.1.2710
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
!define VERSION '3.7.1.2709'
|
!define VERSION '3.7.1.2710'
|
||||||
|
|
|
||||||
|
|
@ -50,25 +50,41 @@ type
|
||||||
public
|
public
|
||||||
[PrintAttribute(0, -16)]
|
[PrintAttribute(0, -16)]
|
||||||
property Name: string read _name;
|
property Name: string read _name;
|
||||||
|
[PrintAttribute(' ', 1, -3)]
|
||||||
|
property Gender: ТипПола read getGender;
|
||||||
|
[PrintAttribute(' ', 2, 3, 'd')]
|
||||||
|
property Height: integer read _height;
|
||||||
|
[PrintAttribute(' ',3, 2, 'd')]
|
||||||
|
property Cls: integer read _cls;
|
||||||
|
[PrintAttribute(' ', 4, -5)]
|
||||||
|
property InSunSchool: boolean read _inSunSchool;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{Ученик = auto class
|
||||||
|
private
|
||||||
|
_name: string;
|
||||||
|
_gender: ТипПола;
|
||||||
|
_height: integer;
|
||||||
|
_cls: integer;
|
||||||
|
_inSunSchool: boolean;
|
||||||
|
function getGender: ТипПола := _gender;
|
||||||
|
public
|
||||||
[PrintAttribute(0, -16)]
|
[PrintAttribute(0, -16)]
|
||||||
property Фамилия: string read _name;
|
property Фамилия: string read _name;
|
||||||
[PrintAttribute(' ', 1, -3)]
|
[PrintAttribute(' ', 1, -3)]
|
||||||
property Gender: ТипПола read getGender;
|
|
||||||
[PrintAttribute(' ', 1, -3)]
|
|
||||||
property Пол: ТипПола read getGender;
|
property Пол: ТипПола read getGender;
|
||||||
[PrintAttribute(' ', 2, 3, 'd')]
|
[PrintAttribute(' ', 2, 3, 'd')]
|
||||||
property Height: integer read _height;
|
|
||||||
[PrintAttribute(' ', 2, 3, 'd')]
|
|
||||||
property Рост: integer read _height;
|
property Рост: integer read _height;
|
||||||
[PrintAttribute(' ',3, 2, 'd')]
|
[PrintAttribute(' ',3, 2, 'd')]
|
||||||
property Cls: integer read _cls;
|
|
||||||
[PrintAttribute(' ',3, 2, 'd')]
|
|
||||||
property Класс: integer read _cls;
|
property Класс: integer read _cls;
|
||||||
[PrintAttribute(' ', 4, -5)]
|
[PrintAttribute(' ', 4, -5)]
|
||||||
property InSunSchool: boolean read _inSunSchool;
|
|
||||||
[PrintAttribute(' ', 4, -5)]
|
|
||||||
property УчитсяВКШ: boolean read _inSunSchool;
|
property УчитсяВКШ: boolean read _inSunSchool;
|
||||||
|
end;}
|
||||||
|
Ученик = auto class
|
||||||
|
Фамилия: string;
|
||||||
|
Класс, Рост: integer;
|
||||||
|
Пол: ТипПола;
|
||||||
|
УчитсяВКШ: boolean;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GenderToТипПола(a: string): ТипПола := a = 'Муж' ? Муж : Жен;
|
function GenderToТипПола(a: string): ТипПола := a = 'Муж' ? Муж : Жен;
|
||||||
|
|
@ -266,7 +282,18 @@ begin
|
||||||
.Select(w->new Country(w[0],w[1],w[2].ToInteger,w[3])).ToArray;
|
.Select(w->new Country(w[0],w[1],w[2].ToInteger,w[3])).ToArray;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ЗаполнитьМассивУчеников: array of Pupil;
|
function ЗаполнитьМассивУчеников: array of Ученик;
|
||||||
|
begin
|
||||||
|
var fname := 'c:\Program files (x86)\PascalABC.NET\Files\Databases\Ученики.csv';
|
||||||
|
if fname = '' then
|
||||||
|
raise new System.ApplicationException('Не найден массив учеников Databases\Ученики.csv');
|
||||||
|
Result := ReadLines(fname)
|
||||||
|
.Select(s->s.ToWords(';'))
|
||||||
|
.Select(w->new Ученик(w[0],w[1].ToInteger,w[4].ToInteger,GenderToТипПола(w[2]),
|
||||||
|
InSunschoolToBoolean(w[3]))).ToArray;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetPupils: array of Pupil;
|
||||||
begin
|
begin
|
||||||
var fname := 'c:\Program files (x86)\PascalABC.NET\Files\Databases\Ученики.csv';
|
var fname := 'c:\Program files (x86)\PascalABC.NET\Files\Databases\Ученики.csv';
|
||||||
if fname = '' then
|
if fname = '' then
|
||||||
|
|
@ -277,8 +304,6 @@ begin
|
||||||
InSunschoolToBoolean(w[3]))).ToArray;
|
InSunschoolToBoolean(w[3]))).ToArray;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GetPupils: array of Pupil := ЗаполнитьМассивУчеников;
|
|
||||||
|
|
||||||
function GetFitness: array of Fitness;
|
function GetFitness: array of Fitness;
|
||||||
begin
|
begin
|
||||||
var fname := 'Fitness.tst';
|
var fname := 'Fitness.tst';
|
||||||
|
|
|
||||||
7
TestSuite/match1.pas
Normal file
7
TestSuite/match1.pas
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
begin
|
||||||
|
match new string('d',1) with
|
||||||
|
//Ошибка времени выполнения: Индекс находился вне границ массива.
|
||||||
|
['d']: Assert(1=1);
|
||||||
|
else Assert(1=2);
|
||||||
|
end;
|
||||||
|
end.
|
||||||
|
|
@ -15955,10 +15955,12 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
var lbvr = nspr.expression as local_block_variable_reference;
|
||||||
|
|
||||||
//String 1 based
|
//String 1 based
|
||||||
if (parameters.expressions.Count == 1 &&
|
if (parameters.expressions.Count == 1 &&
|
||||||
nspr.property.comprehensive_type == SystemLibrary.SystemLibrary.string_type &&
|
nspr.property.comprehensive_type == SystemLibrary.SystemLibrary.string_type &&
|
||||||
!SemanticRules.NullBasedStrings)
|
!SemanticRules.NullBasedStrings && (lbvr == null || !lbvr.var.name.StartsWith("<>match")))
|
||||||
{
|
{
|
||||||
nspr.fact_parametres.AddElement(
|
nspr.fact_parametres.AddElement(
|
||||||
ConstructDecExpr(
|
ConstructDecExpr(
|
||||||
|
|
|
||||||
|
|
@ -50,25 +50,41 @@ type
|
||||||
public
|
public
|
||||||
[PrintAttribute(0, -16)]
|
[PrintAttribute(0, -16)]
|
||||||
property Name: string read _name;
|
property Name: string read _name;
|
||||||
|
[PrintAttribute(' ', 1, -3)]
|
||||||
|
property Gender: ТипПола read getGender;
|
||||||
|
[PrintAttribute(' ', 2, 3, 'd')]
|
||||||
|
property Height: integer read _height;
|
||||||
|
[PrintAttribute(' ',3, 2, 'd')]
|
||||||
|
property Cls: integer read _cls;
|
||||||
|
[PrintAttribute(' ', 4, -5)]
|
||||||
|
property InSunSchool: boolean read _inSunSchool;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{Ученик = auto class
|
||||||
|
private
|
||||||
|
_name: string;
|
||||||
|
_gender: ТипПола;
|
||||||
|
_height: integer;
|
||||||
|
_cls: integer;
|
||||||
|
_inSunSchool: boolean;
|
||||||
|
function getGender: ТипПола := _gender;
|
||||||
|
public
|
||||||
[PrintAttribute(0, -16)]
|
[PrintAttribute(0, -16)]
|
||||||
property Фамилия: string read _name;
|
property Фамилия: string read _name;
|
||||||
[PrintAttribute(' ', 1, -3)]
|
[PrintAttribute(' ', 1, -3)]
|
||||||
property Gender: ТипПола read getGender;
|
|
||||||
[PrintAttribute(' ', 1, -3)]
|
|
||||||
property Пол: ТипПола read getGender;
|
property Пол: ТипПола read getGender;
|
||||||
[PrintAttribute(' ', 2, 3, 'd')]
|
[PrintAttribute(' ', 2, 3, 'd')]
|
||||||
property Height: integer read _height;
|
|
||||||
[PrintAttribute(' ', 2, 3, 'd')]
|
|
||||||
property Рост: integer read _height;
|
property Рост: integer read _height;
|
||||||
[PrintAttribute(' ',3, 2, 'd')]
|
[PrintAttribute(' ',3, 2, 'd')]
|
||||||
property Cls: integer read _cls;
|
|
||||||
[PrintAttribute(' ',3, 2, 'd')]
|
|
||||||
property Класс: integer read _cls;
|
property Класс: integer read _cls;
|
||||||
[PrintAttribute(' ', 4, -5)]
|
[PrintAttribute(' ', 4, -5)]
|
||||||
property InSunSchool: boolean read _inSunSchool;
|
|
||||||
[PrintAttribute(' ', 4, -5)]
|
|
||||||
property УчитсяВКШ: boolean read _inSunSchool;
|
property УчитсяВКШ: boolean read _inSunSchool;
|
||||||
|
end;}
|
||||||
|
Ученик = auto class
|
||||||
|
Фамилия: string;
|
||||||
|
Класс, Рост: integer;
|
||||||
|
Пол: ТипПола;
|
||||||
|
УчитсяВКШ: boolean;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GenderToТипПола(a: string): ТипПола := a = 'Муж' ? Муж : Жен;
|
function GenderToТипПола(a: string): ТипПола := a = 'Муж' ? Муж : Жен;
|
||||||
|
|
@ -266,7 +282,18 @@ begin
|
||||||
.Select(w->new Country(w[0],w[1],w[2].ToInteger,w[3])).ToArray;
|
.Select(w->new Country(w[0],w[1],w[2].ToInteger,w[3])).ToArray;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ЗаполнитьМассивУчеников: array of Pupil;
|
function ЗаполнитьМассивУчеников: array of Ученик;
|
||||||
|
begin
|
||||||
|
var fname := 'c:\Program files (x86)\PascalABC.NET\Files\Databases\Ученики.csv';
|
||||||
|
if fname = '' then
|
||||||
|
raise new System.ApplicationException('Не найден массив учеников Databases\Ученики.csv');
|
||||||
|
Result := ReadLines(fname)
|
||||||
|
.Select(s->s.ToWords(';'))
|
||||||
|
.Select(w->new Ученик(w[0],w[1].ToInteger,w[4].ToInteger,GenderToТипПола(w[2]),
|
||||||
|
InSunschoolToBoolean(w[3]))).ToArray;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetPupils: array of Pupil;
|
||||||
begin
|
begin
|
||||||
var fname := 'c:\Program files (x86)\PascalABC.NET\Files\Databases\Ученики.csv';
|
var fname := 'c:\Program files (x86)\PascalABC.NET\Files\Databases\Ученики.csv';
|
||||||
if fname = '' then
|
if fname = '' then
|
||||||
|
|
@ -277,8 +304,6 @@ begin
|
||||||
InSunschoolToBoolean(w[3]))).ToArray;
|
InSunschoolToBoolean(w[3]))).ToArray;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GetPupils: array of Pupil := ЗаполнитьМассивУчеников;
|
|
||||||
|
|
||||||
function GetFitness: array of Fitness;
|
function GetFitness: array of Fitness;
|
||||||
begin
|
begin
|
||||||
var fname := 'Fitness.tst';
|
var fname := 'Fitness.tst';
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue