[Prolint-cvs] prolint prolint.p,1.28,1.29
Brought to you by:
johnallengreen,
jurjen
From: John A. G. <joh...@us...> - 2006-01-04 01:55:20
|
Update of /cvsroot/prolint/prolint In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11353 Modified Files: prolint.p Log Message: Added a retry to the COMPILE statement. Now tries compiling both with and without the STREAM-IO option. Reduced the number of COMPILE statements from 3 to 1, by taking advantage of a feature of the COMPILE..XREF/LISTING VALUE(...) syntax. Index: prolint.p =================================================================== RCS file: /cvsroot/prolint/prolint/prolint.p,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** prolint.p 4 May 2005 21:07:33 -0000 1.28 --- prolint.p 4 Jan 2006 01:55:09 -0000 1.29 *************** *** 51,54 **** --- 51,55 ---- DEFINE VARIABLE HasProparse AS LOGICAL NO-UNDO INITIAL YES. DEFINE VARIABLE HasJpplus AS LOGICAL NO-UNDO INITIAL NO. + DEFINE VARIABLE needCompilerStreamIO AS LOGICAL NO-UNDO INITIAL NO. DEFINE VARIABLE NeedListing AS LOGICAL NO-UNDO INITIAL NO. DEFINE VARIABLE NeedXref AS LOGICAL NO-UNDO INITIAL NO. *************** *** 742,746 **** DEFINE VARIABLE i1 AS INTEGER NO-UNDO. ! DEFINE VARIABLE cErrorMsg AS CHARACTER NO-UNDO. ASSIGN --- 743,748 ---- DEFINE VARIABLE i1 AS INTEGER NO-UNDO. ! DEFINE VARIABLE compilerLoopNum AS INTEGER NO-UNDO. ! DEFINE VARIABLE cErrorMsg AS CHARACTER NO-UNDO INITIAL "". ASSIGN *************** *** 753,797 **** - special parameters might be required, like translation params */ {prolint/publish_char.i "Prolint_Status_Action" ""compiling..."":U} ! ! IF NeedListing AND NeedXref THEN ! COMPILE VALUE(p-SourceFile) ! LISTING VALUE(listingfile) PAGE-SIZE 127 PAGE-WIDTH 255 ! XREF VALUE(xreffile) ! NO-ERROR. ! ELSE ! IF NeedListing THEN COMPILE VALUE(p-SourceFile) ! LISTING VALUE(listingfile) PAGE-SIZE 127 PAGE-WIDTH 255 NO-ERROR. - ELSE - IF NeedXref THEN - COMPILE VALUE(p-SourceFile) - XREF VALUE(xreffile) - NO-ERROR. ! IF NeedListing OR NeedXref THEN ! IF COMPILER:ERROR THEN DO: ! /* ignore error 6430 "r-code exists but SAVE was not specified" ! and error 4345 : &MESSAGE output */ ! cErrorMsg = "". ! DO i1=1 TO ERROR-STATUS:NUM-MESSAGES: ! IF ERROR-STATUS:GET-NUMBER(i1) NE 6430 THEN ! IF ERROR-STATUS:GET-NUMBER(i1) NE 4345 THEN DO: ! p-ErrorMessage = "compile failed":T. ! /* collect compiler messages for ED for Windows. ! can't publish them yet, because that would ! change the contents of ERROR-STATUS:... */ ! cErrorMsg = cErrorMsg + ERROR-STATUS:GET-MESSAGE(i1) + "~n":U. ! END. ! END. ! &IF {&pubsub} &THEN ! if cErrorMsg<>"" then ! PUBLISH "WriteToEd4Windows":U (cErrorMsg). /* just in case ED is listening */ ! &ENDIF ! IF p-ErrorMessage NE "" THEN DO: ! p-SourceFile = DYNAMIC-FUNCTION("RelativeFilename":U IN hLintSuper, p-SourceFile). ! {prolint/publish_result.i} (p-SourceFile, p-SourceFile,"0":U, p-ErrorMessage, "compiler":U, 9). ! END. ! END. /* parse sourcefile in proparse.dll */ --- 755,802 ---- - special parameters might be required, like translation params */ {prolint/publish_char.i "Prolint_Status_Action" ""compiling..."":U} ! ! IF NeedListing OR NeedXref THEN compiler-loop: DO compilerLoopNum = 1 TO 2: ! COMPILE VALUE(p-SourceFile) ! STREAM-IO = needCompilerStreamIO ! /* value of ? disables xref or listing */ ! LISTING VALUE(IF NeedListing THEN listingfile ELSE ?) ! PAGE-SIZE 127 PAGE-WIDTH 255 ! XREF VALUE(IF NeedXref THEN xreffile ELSE ?) NO-ERROR. ! ASSIGN p-ErrorMessage = "":U. ! IF COMPILER:ERROR THEN error-loop: DO i1=1 TO ERROR-STATUS:NUM-MESSAGES: ! /* ignore error 6430 "r-code exists but SAVE was not specified" ! and error 4345 : &MESSAGE output */ ! IF ERROR-STATUS:GET-NUMBER(i1) EQ 6430 OR ERROR-STATUS:GET-NUMBER(i1) EQ 4345 ! THEN NEXT error-loop. ! p-ErrorMessage = "compile failed":T. ! /* Flip the STREAM-IO flag. On the first failed compile, it ! gets flipped. On the second failed compile, we flip it again, ! so that it's back to its value before we tried this compile unit. */ ! ASSIGN needCompilerStreamIO = NOT needCompilerStreamIO. ! /* collect compiler messages for ED for Windows. ! can't publish them yet, because that would ! change the contents of ERROR-STATUS:... ! We might fail two attempts at compiling. In that case, we ! want to show the first set of compiler error messages, because ! the second compile might fail just because the STREAM-IO flag is ! set wrong, and that wouldn't be a helpful error message. */ ! IF compilerLoopNum EQ 1 THEN ! ASSIGN cErrorMsg = cErrorMsg + ERROR-STATUS:GET-MESSAGE(i1) + "~n":U. ! END. /* error-loop */ ! ! IF p-ErrorMessage EQ "":U THEN LEAVE compiler-loop. ! ! IF compilerLoopNum > 1 THEN DO: ! &IF {&pubsub} &THEN ! PUBLISH "WriteToEd4Windows":U (cErrorMsg). /* just in case ED is listening */ ! &ENDIF ! p-SourceFile = DYNAMIC-FUNCTION("RelativeFilename":U IN hLintSuper, p-SourceFile). ! {prolint/publish_result.i} (p-SourceFile, p-SourceFile,"0":U, p-ErrorMessage, "compiler":U, 9). ! END. ! ! END. /* compiler-loop */ /* parse sourcefile in proparse.dll */ |