From 051f8568b3f2433b9b675b0b959aa73cab721f93 Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 19 Mar 2017 09:44:58 +0000 Subject: [PATCH] * Fix nested comments (* *) style git-svn-id: trunk@35625 - --- packages/fcl-passrc/src/pscanner.pp | 12 +++++++++++- packages/fcl-passrc/tests/tcscanner.pas | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/fcl-passrc/src/pscanner.pp b/packages/fcl-passrc/src/pscanner.pp index 31f848e447..303dd8d0dc 100644 --- a/packages/fcl-passrc/src/pscanner.pp +++ b/packages/fcl-passrc/src/pscanner.pp @@ -1983,7 +1983,8 @@ begin TokenStart := TokenStr; FCurTokenString := ''; OldLength := 0; - while (TokenStr[0] <> '*') or (TokenStr[1] <> ')') do + NestingLevel:=0; + while (TokenStr[0] <> '*') or (TokenStr[1] <> ')') or (NestingLevel>0) do begin if TokenStr[0] = #0 then begin @@ -2002,7 +2003,16 @@ begin TokenStart:=TokenStr; end else + begin + If (msNestedComment in CurrentModeSwitches) then + begin + if (TokenStr[0] = '(') and (TokenStr[1] = '*') then + Inc(NestingLevel) + else if (TokenStr[0] = '*') and (TokenStr[1] = ')') and not PPIsSkipping then + Dec(NestingLevel); + end; Inc(TokenStr); + end; end; SectionLength := TokenStr - TokenStart; SetLength(FCurTokenString, OldLength + SectionLength); diff --git a/packages/fcl-passrc/tests/tcscanner.pas b/packages/fcl-passrc/tests/tcscanner.pas index 0d41aa3d8b..1dfe15f1fb 100644 --- a/packages/fcl-passrc/tests/tcscanner.pas +++ b/packages/fcl-passrc/tests/tcscanner.pas @@ -81,6 +81,7 @@ type procedure TestNestedComment2; procedure TestNestedComment3; procedure TestNestedComment4; + procedure TestNestedComment5; procedure TestIdentifier; procedure TestSelf; procedure TestSelfNoToken; @@ -542,6 +543,11 @@ begin TestToken(tkComment,'{ (* comment *) }'); end; +procedure TTestScanner.TestNestedComment5; +begin + TestToken(tkComment,'(* (* comment *) *)'); +end; + procedure TTestScanner.TestIdentifier;