bug fix #1080
This commit is contained in:
parent
ed0a1b2407
commit
e361705095
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "4";
|
||||
public const string Build = "2";
|
||||
public const string Revision = "1830";
|
||||
public const string Revision = "1837";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=4
|
||||
%REVISION%=1830
|
||||
%COREVERSION%=2
|
||||
%REVISION%=1837
|
||||
%MINOR%=4
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// This CSharp output file generated by Gardens Point LEX
|
||||
// Version: 1.1.3.301
|
||||
// Machine: DESKTOP-A6LT9RI
|
||||
// DateTime: 11.10.2018 17:14:45
|
||||
// DateTime: 11.10.2018 17:41:30
|
||||
// UserName: ?????????
|
||||
// GPLEX input file <ABCPascal.lex>
|
||||
// GPLEX frame file <embedded resource>
|
||||
|
|
|
|||
|
|
@ -3642,7 +3642,7 @@ default_expr
|
|||
;
|
||||
|
||||
tuple
|
||||
: tkRoundOpen expr_l1 tkComma expr_l1_list lambda_type_ref tkRoundClose // lambda_type_ref optional_full_lambda_fp_list íóæíî îñòàâèòü ÷òîáû íå áûëî êîíôëèêòîâ ñ ãðàììàòèêîé ëÿìáä
|
||||
: tkRoundOpen expr_l1 tkComma expr_l1_list lambda_type_ref optional_full_lambda_fp_list tkRoundClose // lambda_type_ref optional_full_lambda_fp_list íóæíî îñòàâèòü ÷òîáû íå áûëî êîíôëèêòîâ ñ ãðàììàòèêîé ëÿìáä
|
||||
{
|
||||
/*if ($5 != null)
|
||||
parsertools.AddErrorFromResource("BAD_TUPLE",@5);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -227,6 +227,8 @@ script=
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.4.2.1830'
|
||||
!define VERSION '3.4.2.1837'
|
||||
|
|
|
|||
|
|
@ -8395,6 +8395,12 @@ begin
|
|||
Result := Self;
|
||||
end;
|
||||
|
||||
function Print(Self: int64): int64; extensionmethod;
|
||||
begin
|
||||
PABCSystem.Print(Self);
|
||||
Result := Self;
|
||||
end;
|
||||
|
||||
function Print(Self: real): real; extensionmethod;
|
||||
begin
|
||||
PABCSystem.Print(Self);
|
||||
|
|
@ -8425,6 +8431,12 @@ begin
|
|||
Result := Self;
|
||||
end;
|
||||
|
||||
function Println(Self: int64): int64; extensionmethod;
|
||||
begin
|
||||
PABCSystem.Println(Self);
|
||||
Result := Self;
|
||||
end;
|
||||
|
||||
function Println(Self: real): real; extensionmethod;
|
||||
begin
|
||||
PABCSystem.Println(Self);
|
||||
|
|
@ -8450,7 +8462,6 @@ begin
|
|||
end;
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//>> Методы расширения последовательностей # Extension methods for sequence of T
|
||||
//------------------------------------------------------------------------------
|
||||
|
|
|
|||
19
TestSuite/lambda_closure_class_fields_6.pas
Normal file
19
TestSuite/lambda_closure_class_fields_6.pas
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
procedure Invoke(p: procedure);
|
||||
begin end;
|
||||
|
||||
type
|
||||
WH = class
|
||||
Width,Height: real;
|
||||
end;
|
||||
C = class
|
||||
gr: WH;
|
||||
end;
|
||||
|
||||
B = class(C)
|
||||
property Width: real
|
||||
write Invoke(procedure->begin gr.Width := value end);
|
||||
end;
|
||||
|
||||
begin
|
||||
Assert(1=1)
|
||||
end.
|
||||
|
|
@ -177,7 +177,8 @@ namespace TreeConverter.LambdaExpressions.Closure
|
|||
si.sym_info.semantic_node_type == semantic_node_type.class_field
|
||||
;
|
||||
//trjuk, chtoby ne perelopachivat ves kod. zamenjaem ident na self.ident
|
||||
if ((si.sym_info.semantic_node_type == semantic_node_type.class_field || si.sym_info.semantic_node_type == semantic_node_type.common_event || si.sym_info.semantic_node_type == semantic_node_type.common_property_node) && InLambdaContext)
|
||||
// Использую этот трюк для нестатических полей предков - они не захватываются из-за плохого алгоритма захвата
|
||||
if ((si.sym_info.semantic_node_type == semantic_node_type.class_field && !(si.sym_info as class_field).IsStatic || si.sym_info.semantic_node_type == semantic_node_type.common_event || si.sym_info.semantic_node_type == semantic_node_type.common_property_node) && InLambdaContext)
|
||||
{
|
||||
dot_node dn = new dot_node(new ident("self", id.source_context), new ident(id.name, id.source_context), id.source_context);
|
||||
bool ok = true;
|
||||
|
|
|
|||
Loading…
Reference in a new issue