Forum > Editor

Jedi Code Formatter: class destructor

(1/1)

CCRDude:
The JCF integrated into Lazarus 1.6.4 does not support class destructors. Since this leads to many of my units having issues, I checked the JCF code and propose this patch:


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ------ C:/Development/lazarus-1.6.4-fpc-3.0.2/components/jcf2/Parse/BuildParseTree.pas     Sun Jul 03 21:41:10 2016+++ C:/Development/lazarus-1.6.4-fpc-3.0.2/components/jcf2/Parse/BuildParseTree.pas     Wed May 03 11:39:15 2017@@ -3593,14 +3593,16 @@       case fcTokenList.SolidTokenType(2) of         ttProcedure:           RecogniseProcedureDecl(false);         ttFunction:           RecogniseFunctionDecl(false);         ttConstructor:           RecogniseConstructorDecl;+        ttDestructor:+          RecogniseDestructorDecl;         ttOperator:           RecogniseClassOperator(True);         else           raise TEParseError.Create('expected class procedure or class function', lc);       end;     end;     else@@ -4096,14 +4098,17 @@ end;  procedure TBuildParseTree.RecogniseDestructorHeading(const pbDeclaration: boolean); begin   //DestructorHeading -> DESTRUCTOR Ident [FormalParameters]   PushNode(nDestructorHeading); +  if fcTokenList.FirstSolidTokenType = ttClass then+    Recognise(ttClass);+   Recognise(ttDestructor);   RecogniseMethodName( not pbDeclaration);   if fcTokenList.FirstSolidTokenType = ttOpenBracket then     RecogniseFormalParameters;    RecogniseProcedureDirectives; @@ -4384,14 +4389,16 @@             RecogniseClassVars;           ttProperty:           begin             RecogniseProperty;           end;           ttConstructor:             RecogniseConstructorHeading(True);+          ttDestructor:+            RecogniseDestructorHeading(True);           ttOperator:             RecogniseClassOperator(False);           else             raise TEParseError.Create('Expected class procedure or class function', lc);         end;        end; 

Ondrej Pokorny:
Please post it to bugs.freepascal.org. Thanks.

CCRDude:
Done :)

Navigation

[0] Message Index

Go to full version