bug fix #940
This commit is contained in:
parent
7dc08b2475
commit
0a5e542167
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
%COREVERSION%=0
|
%COREVERSION%=0
|
||||||
%REVISION%=1685
|
%REVISION%=1687
|
||||||
%MINOR%=4
|
%MINOR%=4
|
||||||
%MAJOR%=3
|
%MAJOR%=3
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
!define VERSION '3.4.0.1685'
|
!define VERSION '3.4.0.1687'
|
||||||
|
|
|
||||||
14
TestSuite/static_ext_prop.pas
Normal file
14
TestSuite/static_ext_prop.pas
Normal 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.
|
||||||
Loading…
Reference in a new issue