From fe2df71ef535c7a9358cac48d6f4b3458d87ece9 Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 27 Apr 2017 12:34:17 +0000 Subject: [PATCH] * Fix bug ID #31718 git-svn-id: trunk@35966 - --- packages/fcl-passrc/src/pparser.pp | 2 +- packages/fcl-passrc/tests/tcexprparser.pas | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp index ec3197fc9a..d3cdaff816 100644 --- a/packages/fcl-passrc/src/pparser.pp +++ b/packages/fcl-passrc/src/pparser.pp @@ -1804,7 +1804,7 @@ begin ok:=false; try - if Last.Kind in [pekIdent,pekSelf] then + if Last.Kind in [pekIdent,pekSelf,pekNil] then begin while CurToken in [tkDot] do begin diff --git a/packages/fcl-passrc/tests/tcexprparser.pas b/packages/fcl-passrc/tests/tcexprparser.pas index a05fb6be23..a4a4f4958d 100644 --- a/packages/fcl-passrc/tests/tcexprparser.pas +++ b/packages/fcl-passrc/tests/tcexprparser.pas @@ -136,6 +136,8 @@ type procedure TestTypeCast2; Procedure TestCreate; procedure TestChainedPointers; + Procedure TestNilCaret; + Procedure TestExpCaret; end; implementation @@ -605,6 +607,24 @@ begin ParseModule; end; +procedure TTestExpressions.TestNilCaret; +begin + Source.Add('{$mode objfpc}'); + Source.Add('begin'); + Source.Add('FillChar(nil^,10,10);'); + Source.Add('end.'); + ParseModule; +end; + +procedure TTestExpressions.TestExpCaret; +begin + Source.Add('{$mode objfpc}'); + Source.Add('begin'); + Source.Add('A:=B^;'); + Source.Add('end.'); + ParseModule; +end; + procedure TTestExpressions.TestUnaryMinus; begin