diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp index 7892d86f9e..2b93745a3d 100644 --- a/packages/fcl-passrc/src/pparser.pp +++ b/packages/fcl-passrc/src/pparser.pp @@ -2943,7 +2943,7 @@ begin CurBlock := declNone; while True do begin - if CurBlock in [DeclNone,declConst] then + if CurBlock in [DeclNone,declConst,declType] then Scanner.SetTokenOption(toOperatorToken) else Scanner.UnSetTokenOption(toOperatorToken); @@ -3028,6 +3028,7 @@ begin end; tkIdentifier: begin + Scanner.UnSetTokenOption(toOperatorToken); SaveComments; case CurBlock of declConst: diff --git a/packages/fcl-passrc/tests/tcprocfunc.pas b/packages/fcl-passrc/tests/tcprocfunc.pas index 1fb053c159..d90c274e25 100644 --- a/packages/fcl-passrc/tests/tcprocfunc.pas +++ b/packages/fcl-passrc/tests/tcprocfunc.pas @@ -169,6 +169,7 @@ type Procedure TestFunctionAlias; Procedure TestOperatorTokens; procedure TestOperatorNames; + Procedure TestAssignOperatorAfterObject; Procedure TestFunctionNoResult; end; @@ -1291,6 +1292,24 @@ begin end; end; +procedure TTestProcedureFunction.TestAssignOperatorAfterObject; +begin + Add('unit afile;'); + Add('{$mode delphi}'); + Add('interface'); + Add('type'); + Add(' TA =object'); + Add(' data:integer;'); + Add(' function transpose:integer;'); + Add(' end;'); + Add(''); + Add('operator := (const v:Tvector2_single) result:Tvector2_double;'); + Add('implementation'); + EndSource; + Parser.Options:=[po_delphi]; + ParseModule; +end; + procedure TTestProcedureFunction.TestFunctionNoResult; begin Add('unit afile;');