This commit is contained in:
miks1965 2018-07-03 17:12:29 +03:00
parent 7dc08b2475
commit 0a5e542167
7 changed files with 71 additions and 25 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3"; public const string Major = "3";
public const string Minor = "4"; public const string Minor = "4";
public const string Build = "0"; public const string Build = "0";
public const string Revision = "1685"; public const string Revision = "1687";
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;

View file

@ -1,4 +1,4 @@
%COREVERSION%=0 %COREVERSION%=0
%REVISION%=1685 %REVISION%=1687
%MINOR%=4 %MINOR%=4
%MAJOR%=3 %MAJOR%=3

View file

@ -2,7 +2,7 @@
// This CSharp output file generated by Gardens Point LEX // This CSharp output file generated by Gardens Point LEX
// Version: 1.1.3.301 // Version: 1.1.3.301
// Machine: DESKTOP-A6LT9RI // Machine: DESKTOP-A6LT9RI
// DateTime: 03.07.2018 13:20:55 // DateTime: 03.07.2018 16:35:18
// UserName: ????????? // UserName: ?????????
// GPLEX input file <ABCPascal.lex> // GPLEX input file <ABCPascal.lex>
// GPLEX frame file <embedded resource> // GPLEX frame file <embedded resource>

View file

@ -842,13 +842,13 @@ const_factor
var i64 = $2 as int64_const; var i64 = $2 as int64_const;
if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1)
{ {
$$ = new int32_const(Int32.MinValue); $$ = new int32_const(Int32.MinValue,@$);
break; break;
} }
var ui64 = $2 as uint64_const; var ui64 = $2 as uint64_const;
if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1)
{ {
$$ = new int64_const(Int64.MinValue); $$ = new int64_const(Int64.MinValue,@$);
break; break;
} }
if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1)
@ -1506,15 +1506,31 @@ object_type
foreach (var prop in ccnt) foreach (var prop in ccnt)
{ {
var td = prop.property_type; var td = prop.property_type;
if (prop.accessors.read_accessor != null && prop.accessors.read_accessor.pr != null) var ra = prop.accessors.read_accessor;
if (ra != null && ra.pr != null)
{ {
(prop.accessors.read_accessor.pr.proc_header as function_header).return_type = td; (ra.pr.proc_header as function_header).return_type = td;
cm.Add(prop.accessors.read_accessor.pr); cm.Add(ra.pr);
if (prop.attr == definition_attribute.Static)
{
ra.pr.proc_header.class_keyword = true;
procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static);
pa.source_context = ra.pr.proc_header.source_context;
ra.pr.proc_header.proc_attributes = new procedure_attributes_list(pa);
} }
if (prop.accessors.write_accessor != null && prop.accessors.write_accessor.pr != null) }
var wa = prop.accessors.write_accessor;
if (wa != null && wa.pr != null)
{ {
prop.accessors.write_accessor.pr.proc_header.parameters.params_list[0].vars_type = td; wa.pr.proc_header.parameters.params_list[0].vars_type = td;
cm.Add(prop.accessors.write_accessor.pr); cm.Add(wa.pr);
if (prop.attr == definition_attribute.Static)
{
wa.pr.proc_header.class_keyword = true;
procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static);
pa.source_context = wa.pr.proc_header.source_context;
wa.pr.proc_header.proc_attributes = new procedure_attributes_list(pa);
}
} }
} }
if (cm.Count>0) if (cm.Count>0)
@ -3474,13 +3490,13 @@ factor
var i64 = $2 as int64_const; var i64 = $2 as int64_const;
if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1)
{ {
$$ = new int32_const(Int32.MinValue); $$ = new int32_const(Int32.MinValue,@$);
break; break;
} }
var ui64 = $2 as uint64_const; var ui64 = $2 as uint64_const;
if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1)
{ {
$$ = new int64_const(Int64.MinValue); $$ = new int64_const(Int64.MinValue,@$);
break; break;
} }
if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1)

View file

@ -2,7 +2,7 @@
// GPPG version 1.3.6 // GPPG version 1.3.6
// Machine: DESKTOP-A6LT9RI // Machine: DESKTOP-A6LT9RI
// DateTime: 03.07.2018 13:20:56 // DateTime: 03.07.2018 16:35:18
// UserName: ????????? // UserName: ?????????
// Input file <ABCPascal.y> // Input file <ABCPascal.y>
@ -3168,13 +3168,13 @@ public partial class GPPGParser: ShiftReduceParser<PascalABCSavParser.Union, Lex
var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const; var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const;
if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1)
{ {
CurrentSemanticValue.ex = new int32_const(Int32.MinValue); CurrentSemanticValue.ex = new int32_const(Int32.MinValue,CurrentLocationSpan);
break; break;
} }
var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const; var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const;
if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1)
{ {
CurrentSemanticValue.ex = new int64_const(Int64.MinValue); CurrentSemanticValue.ex = new int64_const(Int64.MinValue,CurrentLocationSpan);
break; break;
} }
if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1)
@ -3792,15 +3792,31 @@ public partial class GPPGParser: ShiftReduceParser<PascalABCSavParser.Union, Lex
foreach (var prop in ccnt) foreach (var prop in ccnt)
{ {
var td = prop.property_type; var td = prop.property_type;
if (prop.accessors.read_accessor != null && prop.accessors.read_accessor.pr != null) var ra = prop.accessors.read_accessor;
if (ra != null && ra.pr != null)
{ {
(prop.accessors.read_accessor.pr.proc_header as function_header).return_type = td; (ra.pr.proc_header as function_header).return_type = td;
cm.Add(prop.accessors.read_accessor.pr); cm.Add(ra.pr);
if (prop.attr == definition_attribute.Static)
{
ra.pr.proc_header.class_keyword = true;
procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static);
pa.source_context = ra.pr.proc_header.source_context;
ra.pr.proc_header.proc_attributes = new procedure_attributes_list(pa);
} }
if (prop.accessors.write_accessor != null && prop.accessors.write_accessor.pr != null) }
var wa = prop.accessors.write_accessor;
if (wa != null && wa.pr != null)
{ {
prop.accessors.write_accessor.pr.proc_header.parameters.params_list[0].vars_type = td; wa.pr.proc_header.parameters.params_list[0].vars_type = td;
cm.Add(prop.accessors.write_accessor.pr); cm.Add(wa.pr);
if (prop.attr == definition_attribute.Static)
{
wa.pr.proc_header.class_keyword = true;
procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static);
pa.source_context = wa.pr.proc_header.source_context;
wa.pr.proc_header.proc_attributes = new procedure_attributes_list(pa);
}
} }
} }
if (cm.Count>0) if (cm.Count>0)
@ -5661,13 +5677,13 @@ public partial class GPPGParser: ShiftReduceParser<PascalABCSavParser.Union, Lex
var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const; var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const;
if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1)
{ {
CurrentSemanticValue.ex = new int32_const(Int32.MinValue); CurrentSemanticValue.ex = new int32_const(Int32.MinValue,CurrentLocationSpan);
break; break;
} }
var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const; var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const;
if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1)
{ {
CurrentSemanticValue.ex = new int64_const(Int64.MinValue); CurrentSemanticValue.ex = new int64_const(Int64.MinValue,CurrentLocationSpan);
break; break;
} }
if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1)

View file

@ -1 +1 @@
!define VERSION '3.4.0.1685' !define VERSION '3.4.0.1687'

View file

@ -0,0 +1,14 @@
type
t1=class
class v: byte;
class property a: byte read v
write
begin
v := value;
end;
end;
begin
t1.a := 1;
Assert(t1.a=1);
end.